プロが教えるわが家の防犯対策術!

毎度お世話になります。
ファイルメーカーVer4.0 OS=Win2000です。

毎月25日で締めて請求書を起こすために、締め日の翌日(26日)から締め日までのデータを検索して表示するスクリプトを作成しております。

「計算結果を貼り付け」で現在の日付から、表示させる締め日を貼り付けて、検索させようとしております。

見づらくて申し訳ございませんが、本日の日付を拾ったあと、下記の計算をさせようとしていますが、「関数のカンマの数が多すぎます」とエラーが出て困っています。

if(Month ( 本日 )=1,
if(Day ( 本日 ) < 26,
Year ( 本日 )-1 & "/" & Month ( 本日 )-2 &"/" & 26 & "..." & Year( 本日 )-1 & "/" & Month ( 本日 )-1 &"/" &25,
Year ( 本日 )-1 & "/" & Month ( 本日 )-1 &"/" & 26 & "..." & Year( 本日 ) & "/" & Month ( 本日 ) &"/" &25,

if(Month ( 本日 )=2,
if(Day ( 本日 ) < 26,
Year ( 本日 )-1 & "/" & Month ( 本日 )-2 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 25,
Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 ) & "/" & 25,

if(Day ( 本日 ) < 26,
Year ( 本日 ) & "/" & Month ( 本日 )-2 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 25,
Year ( 本日 ) & "/" & Month ( 本日 )-1 & "/" & 26 & "..." & Year ( 本日 ) & "/" & Month ( 本日 ) & "/" & 25)))))

※(本日)とはフィールド名で、スクリプトの最初に「現在の日付を貼り付ける」を入れてありますので、スクリプト起動時に当日の日付が入力されます。

要は、当日が25日までであれば、1月は前年の11月26~12月25日を表示し、
2月は前年の12月26~翌年の1月25日を表示し、3月から12月までは、当日が25日までは、前々月の26日~前月の25日迄を表示し、26日~末日までは前月の26日~当月の25日を表示させて、それを作業日のフィールドに貼り付けて検索すれば、直近の25日締めで表示されると考えました。

どこが違うのでしょうか?

A 回答 (1件)

・ifがネストして複雑になる場合は「Case」「Choose」を使います。


・月または年を越える日付の計算は日付書式のまま行います。
 例:Date(13,32,2008)
   2008年13月32日は2009/2/1と表示されます。

以上をふまえて、「直近の25日締めを検索する」には

計算フィールド「締日」(タイプ:日付、フィールド「日付」の25日締)
Date(month(日付-25) + 1,25,Year(日付-25))

スクリプト
検索モードに切り替え
計算結果を貼付け[「締日」, Date(Month(Status(日付)-25) ,25,Year(Status(日付)-25)) ]
検索実行

この回答への補足

ありがとうございます。
早速やってみます。

補足日時:2008/09/19 11:06
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまくいきました。

それだけでなく、今後のスクリプトを作る際に、
大変参考になります。

助かりました。

お礼日時:2008/09/19 21:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!