初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2015-06-21 21:16:34

ぱる
Member

カスタム関数の登録にエラーが出ます

お世話になります。
Win7 FM13 Advを使用しています。

土日祝日を除いたある期間の営業日の集計を出したいので
PMpro.jpのサイトにあるカスタム関数「BusinessDays 関数」をお借りして、
初めてカスタム関数の登録を試みました。

「BusinessDays 関数」を使うには、
まず、「HolidayJ 関数」を登録しないといけないようで
その関数の編集画面で引数の欄に 日付 と入力しようとすると
エラーダイアログが出て登録が出来ません。
http://prntscr.com/7jj2v0 (スクリーンショット)

エラーの説明文ある理由に該当しないと思うのですが
何が悪いのでしょうか?

何かアドバイスをよろしくお願いします。

Offline

#2 2015-06-21 23:18:26

Shin
Member

Re: カスタム関数の登録にエラーが出ます

取得関数のパラメーターに、"日付" があります。そのためでは。
"アカウント名" などでもエラーになりますね。

Offline

#3 2015-06-23 19:10:30

ぱる
Member

Re: カスタム関数の登録にエラーが出ます

Shin 様

遅くなりましたが、ご回答頂きありがとうございます。

取得関数や日付関数にも
”日付”がありますね。

エラーになって、どうやってもダメだったので、
下記のサイトから「HolidayJ 関数」が使われているサンプルファイルをダウンロードして
そのサンプルファイルから「HolidayJ 関数」をインポートして
どうにか「HolidayJ 関数」は使えるようになりました。
https://github.com/Genecom/FileMakerSampleSolutions

あとは、「HappyMonday 関数」と「 BusinessDays 関数」を登録し、
日曜、祝日を除いた営業日は算出出来るようになったのですが
  3. 銀行休日の場合のサンプル計算式 (土日祝と年末・年始の12/31〜1/3)

を設定しようとすると
" ] " が多いとかでエラーが出ます。
http://prntscr.com/7kabvw (スクリーンショット,サンプル式を省略してます)

サンプル計算式使用のためにコメントの記号は削除してますし、
括弧はそのままにしているのですが、何が悪いのでしょうか?

色々試してみましたが
    or ( theDate = Date ( 12 ; 31 ; Y )             // 年末
    or ( theDate = Date ( 1 ; 2 ; Y )             // 年始 1月1日はHolidayJで判定済み
    or ( theDate = Date ( 1 ; 3 ; Y )             //

ここの部分があると、エラーが出ます。

Let (

    [  // === Let_Start ==================================

    START_DATE = 開始日 ;
    END_DATE = 終了日 ;
    END_NUM = END_DATE - START_DATE ;

    theDate = START_DATE ;


    Y = Year ( theDate ) ;
    BD =
    not (
    ( not IsEmpty ( HolidayJ ( theDate ) ) )         // 祝日
    or ( DayOfWeek ( theDate ) = 1 )             // 日曜日
    or ( DayOfWeek ( theDate ) = 7 )             // 土曜日
    or ( theDate = Date ( 12 ; 31 ; Y )             // 年末
    or ( theDate = Date ( 1 ; 2 ; Y )             // 年始 1月1日はHolidayJで判定済み
    or ( theDate = Date ( 1 ; 3 ; Y )             //
    )

    ] ; // === Let_End ==================================


   Case 

        not ( IsEmpty ( START_DATE ) or IsEmpty ( END_DATE ) ) and
        ( 0 ≤ END_NUM ) ;

            BD
            + BusinessDays ( START_DATE + 1 ; END_DATE )
    )
)

Offline

#4 2015-06-23 23:13:31

Shin
Member

Re: カスタム関数の登録にエラーが出ます

日付関数の "日付" は、パラメーターでなく、位置を示す文字列ですので関係ないですが。Get() 関数は、その中の文字列そのものがパラメーターですので、関数のパラメーターとしては使えません。

同じサイトにある、 Workday() を使ってみればいかが。祝日だけでなく、休日やハッピーマンデイにも対応していますよ。山の日には非対応みたい。

Offline

#5 2015-06-24 00:49:41

ぱる
Member

Re: カスタム関数の登録にエラーが出ます

Shin 様

ご回答頂き、ありがとうございます。

お教え頂いた Workday() を見てみましたが
これをどう活用すれば営業日が出せるのか思いつきませんでした。

ただ、この関数は休みの日を決められる様なので、
同様に「HolidayJ 関数」にも大晦日と三が日を祝日に設定する良いと思いつき、
その様に設定すると、思った通りに実現できました。

これだと来年の1月3日は月曜日なので1月4日が振替休日と判定されてしまうようなのですが、
そこは2017年から適用するように設定しました。

エラーは解決はしてませんが、アドバイス頂き、ありがとうございます。

Offline

#6 2017-02-09 16:28:18

nyanchi
Guest

Re: カスタム関数の登録にエラーが出ます

or ( theDate = Date ( 12 ; 31 ; Y )             // 年末
    or ( theDate = Date ( 1 ; 2 ; Y )             // 年始 1月1日はHolidayJで判定済み
    or ( theDate = Date ( 1 ; 3 ; Y )             //

or ( theDate = Date ( 12 ; 31 ; Y )  )             // 年末
    or ( theDate = Date ( 1 ; 2 ; Y )  )             // 年始 1月1日はHolidayJで判定済み
    or ( theDate = Date ( 1 ; 3 ; Y )   )           //
に変更すればどうですか試してください。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 562.56 KiB (Peak: 581.73 KiB) ]