みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
☆FMpro12利用中
現在、請求書の発行日を指定した際、自動入力で同月の最終日を振込期日とする計算式を入れています。
Date ( Month ( 契約マスタ::請求書発行日 )+1 ; -1; Year ( 契約マスタ::請求書発行日 ) )
私の会社では、最終営業日が振込期日です。2月の場合は28日が土曜なので、27の金曜にしなければなりません。
なので毎月、月が変わる毎に土日祝日を確認して、-1や-2など手入力しています。
これを自動化したいのですが、そもそもFMに土日祝日を判別させることは可能なのでしょうか…
以上宜しくお願いします。
土日は可能です。
祝日はカスタム関数が有ります。
http://www.fmpro.jp/fmi/xsl/plugin/cf.x … nd&-skip=5
しかし、
個々の会社の休業日は分るはずも有りませんよね。
営業日のカレンダーを作ればそれを参照できるでしょう。
Offline
会社の休業日=土日+日本の祝日です。
やり方がよく分からないのですが、詳しく教えて頂けますか?
やはり、
営業日のカレンダーを作った方が簡単でしょう。
1日を1レコードとして、
全日付のレコードを作り、営業日フラグをたてるか、
営業日だけのレコードとするか、
どちらでもいいです。
契約マスタで、発行日の月末フィールドを作り、
リレーションを
契約マスタ::発行日月末 >= 営業日カレンダ::営業日
営業日の降順でソート指定
で振込期日が得られます
Offline
新規のテーブルで営業カレンダーを作成して、休日にフラグを立てるのですか?
【日付】【営業日】
[1/1] [1]
[1/2] [1]
[1/3] [1]
[1/4] [1]
[1/5] [ ]
[1/6] [ ]
・
・
・
[12/31][1]
こんな感じですか?
考え方はその通りですが、
リレーションの照合のために、
営業日に 1 を入力した方がいいですね。
入力値の自動化で、土日以外は 1
として、その他は手入力でもいいのでは。
日付も入力値の自動化・既存値置換えで
Self + 1
とすれば、
最初のレコードのみ日付を入力して、
後はレコード複製(キーボードショートカットがあります)を
押しっぱなしでできちゃいますよ。
Offline
とりあえず一度挑戦してみます。
またご質問させて頂くかもしれません。
ありがとうございます!
早速つまづいてしまったのですが…
1年分のレコードは
>日付も入力値の自動化・既存値置換えでSelf + 1
こちらで出来ました。
次のステップで、土日祝日意外にフラグを立てたいのですが、
祝日は手入力で良いとして、土日を判別して非表示にし、
全てに1というフラグを立てるにはどうしたら良いのでしょうか。
Case ( DayOfWeek (日付) = 1 or DayOfWeek (日付) = 7 ; 0 ; 1 )
この式を入力値の自動化にすればいいのですが、
既にレコードを作った様ですので、
このままでは入力されません。
日付フィールドを、自身の値で全置換すればいいですね。
このフィールドの変更は、
フィールドをボタンにして、
フィールド設定[ 営業日 ; not 営業日 ]
とするといいですよ。
Offline
ご説明頂いたのですが
>>日付フィールドを、自身の値で全置換すればいいですね。
こちらがよく分からず、レコードを全部消してやり直しました。
日付フィールドに、Self+1
営業日フィールドに、Case ( DayOfWeek (日付) = 1 or DayOfWeek (日付) = 7 ; 0 ; 1 )
を入れて作ったところ、全てに1が入ってしまいました。
フィールドをボタンにするのはできたので、クリックすると手動で0にはすることができます。
土日の部分を0にするのはどうしたら良かったのでしょうか?
営業日フィールドのタイプは数字として、
入力値の自動化計算式・既存値置き換えで
Case ( DayOfWeek (日付) = 1 or DayOfWeek (日付) = 7 ; 0 ; 1 )
としていますか?
Offline
数字フィールド・既存値置き換えになってなかったからですね。
もう一度やり直したところできました!
ありがとうございます。
これを今使っている発行日フィールド・請求期日フィールドと入れ替えたいのですが、教えて頂けますか?
>>契約マスタで、発行日の月末フィールドを作り、
リレーションを
契約マスタ::発行日月末 >= 営業日カレンダ::営業日
営業日の降順でソート指定
ここまでは出来ました。
実際に配置すると、営業日の日付フィールドは真っ白なままクリックもできない、契約マスタの発行日月末フィールドは日付も何も入りません。
リレーションを確認したところ、顧客情報を管理する顧客テーブルがあり、
その顧客テーブルが請求書レイアウトの主テーブルになっていました。
リレーションの形を少し変えてありますが、同じ様なもの
https://dl.dropboxusercontent.com/u/926 … 81.fp7.zip
Offline
リレーションを
契約マスタ::発行日月末 >= 営業日カレンダ::営業日
営業日の降順でソート指定
カレンダーの営業日だけと照合したいのですから、
契約マスタでグローバルフィールドを作り、1を入力
照合を
契約マスタ::発行日月末 >= 営業日カレンダ::日付
and
契約マスタ::グローバルフィールド = 営業日カレンダ::営業日
営業日の降順でソート指定
とします。
Offline
shin様
やってみましたが同じように動きませんでした。
コピペしましたが、workdayという関数はありませんと表示されてしまいました。
チポ様
グローバルフィールドにするのは発行日月末フィールドですか?
1の入力はどこでするのでしょう、ブラウザの画面でひとつのレコードだけに入れるのでしょうか。
照合というのはリレーションでしょうか。
分からないだらけで申し訳ありません…
言い回しが難しく、意味がよく分からないので、初心者でも分かるように説明して頂けるとありがたいです…
新たにグローバルフィールドを作り、
そこへ1を入力します。
グローバルフィールドはテーブルで唯一の値を持ちますから、
どのレコードで入力しても同じです。
で、リレーションを
契約マスタ::発行日月末 >= 営業日カレンダ::日付
and
契約マスタ::グローバルフィールド = 営業日カレンダ::営業日
営業日の降順でソート指定
として、
契約マスタで、振込期日をルックアップとして、
コピー元を
営業日カレンダの日付
とします。
表示だけでいいのでしたら、振込期日フィールドを作らずに、
参照フィールド
営業日カレンダ::日付
の配置でもいいでしょう。
Offline
コピペしましたが、workdayという関数はありませんと表示されてしまいました。
カスタム関数です。
adv版をお持ちでしたら、私のファイルからインポートされると良いでしょう。
pro版でしたら、
http://www.fmpro.jp/fmi/xsl/plugin/cf.x … nd&-skip=5
からカスタム関数をダウンロードし、Let() 関数を使って、引数を変数へセットする部分を追加して、中身を、計算フィールドに設定して、みてください。
Offline
チポ様
何度も設定を見返してみたのですが、日付が入力できません(;_;)
フィールドを置いているのが顧客テーブルが主になっているテーブルだからでしょうか…?
Shin様
Pro版なのですが、関数をダウンロードというのは「式を保存」のことでしょうか?
カスタム関数を、計算フィールドの中に組み込んだサンプルです。
https://dl.dropboxusercontent.com/u/926 … 81.fp7.zip
https://www.dropbox.com/s/59xatdb1ybulo … 7.zip?dl=0
Last edited by Shin (2017-05-26 19:07:45)
Offline
フィールドを置いているのが顧客テーブルが主になっているテーブルだからでしょうか
テーブル構成が分らなくなりました。
今までの話は、契約マスタでの請求書で進めてきましたよね、、
Offline
Shin様
ありがとうございます、やってみます。
チポ様
リレーションを確認したところ、顧客情報を管理する顧客テーブルがあり、
その顧客テーブルが請求書レイアウトの主テーブルになっていました。
昨日の13時半頃の時点で気付いたのですが、請求書の主テーブルは顧客マスタ、
そこに表示させているフィールドが契約マスタのフィールド、という状態でした。
確認・説明不足でした、申し訳ありません。
テーブル名だけで中は推測しろと言われても・・
今までやってきたのは契約マスタですよね。
取りあえず、契約マスタのレイアウトを作って、
そこで検証したらいかがでしょう。
Offline
チポ様
中を推測しろということではなく、リレーションがつながってないせいかと思ったのですが、
それを判断するには中のフィールドなどが詳しく分からないと駄目なのでしょうか。
契約マスタのレイアウトでも試したのですが、結果は同じで日付はクリックできない、振込期日は手入力ができる、という状態でした。
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 577.7 KiB (Peak: 614.6 KiB) ]