みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ファイルメーカープロのカスタム関数ページのHolidayJを使って祝日を抽出しています。
http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0005
この式に、年末と年始の休日を追加して(12月29日〜1月3日)自動的に祝日(休日)にしたいと思っているのですが、例えば
//
// 三ケ日1(1月2日)
// Sanganichi1
//
"三ヶ日1¶" &
Case ( ~year ≥ 1949 ; Date ( 1 ; 2 ; ~year ) * 1 ) & ¶ &
元旦の後にこの式を追加してみましたが、ただHolidaylistの中にコピーしてもうまく反映されません。
カスタム関数はなかなか難しくて、どなたかご教授いただければ幸いです。
Offline
それで良いはずですが。作成された文字列を書き出してみて確認されればいかがでしょう。
別のカスタム関数でしたら、年末年始の休みにも対応していますよ。
http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0037
Offline
>Shinさん
返信ありがとうございます。じつはそのカスタム関数もダウンロードさせてもらったんですが、カスタム関数が難しくて(引数?パラメーターが多すぎて)どのようにフィールドを設定していいかわからず困っています。せっかく教えていただいたのに勉強不足で申し訳ないです。
Last edited by jose (2015-05-28 21:35:27)
Offline
説明に書いてある通りでしょう。
workday ( calcdate ; regularHoliday ; halfHoliday ; halfHoliday1 ; halfHoliday2 ; halfHoliday3 ; halfHoliday4 ; halfHoliday5 ; mayDay )
regularHoliday は、日曜日が定休日なら1
halfHoliday は、隔週休みなどの設定に使えます。例えば、だい1、3土曜日のみが営業日ならば、
halfHoliday:7、halfHoliday1:1、halfHoliday2:0、halfHoliday3:1、halfHoliday4:0、halfHoliday5:0
maydayは、5月1日(メーデー)で、休業日ならば0、営業日なら1
ですね。
まだ、山の日には対応していないみたい。
Offline
>shinさん
いつもありがとうございます。しばらく課題を放置していてすいません。
このカスタム関数を使用したファイルサンプルなどありますか?
http://www.fmpro.jp/fmi/xsl/plugin/cf.xsl?ID=0037
Last edited by jose (2015-08-10 10:58:30)
Offline
Offline
Shinさん
ありがとうございます。計算式に関して初心者なのでしっかりと勉強させてもらいます!
Offline
workdayのカスタム関数をShinさんのサンプルのおかげで少しずつ使い方がわかるようになってきました。
Shinさんありがとうございます。
この関数に少し個人的な物を加えたいと思っています。
regularHolidayは1で日曜日に設定しているのですが、年に1度だけ(例えば今年度は2月14日)だけ出勤日があります。
この日だけはworkdayとしたいのですが、どのような計算式を加えるのか迷っています。
この出勤日は年ごとに変更するので、ひとまず、ファイルオープンのスクリプトにグローバル変数として設定しています(仮)
変数を設定 [ $$出勤日 ; 値: Date ( 2 ; 14 ; 2015) ]
といった感じです。
で、workdayのカスタム関数に戻って、Case関数を使っているので、
/*定休日*/
DayOfWeek (calcdate) = regularHoliday ; 0 ;
の前に
/*出勤日*/
calcdate = $$出勤日 ; 1 ;
と入れてみました。
でもきっとこれではこの関数の解釈が間違っているようですので、どなたかご教授いただけないでしょうか
宜しくお願いします。
Offline
カスタム関数は触らずに、テーブル側で、
日付 = $$出勤日 or workday ( ...... )
としておけば如何でしょう。
Offline
どうしても関数を変えたければ、他の条件より優先なのだから
/*定休日*/の前に
ではなく一番最初に入れるべき。
Shinさん、calcerさん
ありがとうございます。アドバイス通りで解決できました。
ちなみに上のカスタム関数を使って、指定の年度で出勤日が何日あるかなんて計算はできるのでしょうか?
できるだけシンプルに、可能だったらグローバルフィールドに格納できると嬉しいのですが
Offline
2015年でしたら、365の繰り返しフィールドを作り、workday ( Date ( 1 ; Get ( 計算式繰り返し位置番号 ) ; 2015 ) , .... ) という計算式を設定しておきます。このフィールドを Sum() すれば如何でしょうか。
Offline
shinさん、ありがとうございます。グローバル格納用のテーブルに格納しておけそうです。
ちなみに、年度で計算したいのですが、その場合、; 2015 がどのように設定したらよいのでしょうか?
2015/4/1 ~ 2016/3/31 となるのですが、単純に 2015/4/1...2016/3/31 でいいのですか?
Offline
workday ( Date ( 4 ; Get ( 計算式繰り返し位置番号 ) ; 2015 ) , .... ) という計算式にすればいいでしょうね。
Offline
Pages: 1
[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 524.96 KiB (Peak: 545.87 KiB) ]