みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも勉強させて頂いています。初心者に毛が生えたレベルです。
やりたい事の糸口が見つからず相談です。
ノート見開きに1週間分、左側に月曜火曜水曜、右側に木曜金曜土曜日曜と、カレンダーを作成し日付表記し、1週間分を週末50人分、印刷しています。
その50人程度の会員の中から、該当者には毎月4週目の金曜日に「リンゴ」と表記を自動で毎月表記したいのです。
がリクエストの要望に答えられず困っております。
糸口をご教授頂けないでしょうか、宜しくお願いします。
FM12 ウィンドウズ10の環境です。
Offline
以下の式で4週目の金曜日の日付が得られます。
Let ([
$D=GetAsDate ( "2017/08/01" );
$W=0;
$f=
"Case(
$W = 4;$D;
Let([
$D=$D+1;
$W=if(DayOfWeek($D)=6;$W+1;$W)
];
Evaluate($f)
)
)"
];
Evaluate($f)
)
Offline
カレンダー日付が第4金曜日の時に「リンゴ」を返す式例、
Let(
[
$dt=カレンダー日付;
$y=Year($dt);
$m=Month($dt);
$d=0;
$res="";
$fnc=
"Case( ValueCount($res)=4; GetValue($res; 4);
Let([
$d=$d+1;
#add=Case(DayOfWeek(Date($m;$d;$y))=6; Date($m;$d;$y));
$res=List($res; #add)
]; Evaluate($fnc))
)"
];
Case($dt=GetAsDate(Evaluate($fnc)); "りんご")
)
Offline
初心者向けの考え方をひとつ
(日付が22日から28日)かつ(金曜日)が第4金曜日です。
Offline
あぁ、あくまでカレンダー状画面表示で4週目(4行目)表示の金曜日ということなら、
1週目に金曜日が含まれているか否かにより補正が必要ですネ。
(第4金曜日→2017/7/28でなく、第4週目の金曜日→2017/7/21となる)
Let(
[
$dt=カレンダー日付;
$y=Year($dt);
$m=Month($dt);
$wn=4-(Filter(DayOfWeek(Date($m;1;$y));"71")<>""); //修正済←旧式:$wn=4-(DayOfWeek(Date($m;1;$y))>6);
$d=0;
$res="";
$fnc=
"Case( ValueCount($res)=$wn; GetValue($res; $wn);
Let([
$d=$d+1;
#add=Case(DayOfWeek(Date($m;$d;$y))=6; Date($m;$d;$y));
$res=List($res; #add)
]; Evaluate($fnc))
)"
];
Case($dt=GetAsDate(Evaluate($fnc)); "リンゴ")
)
【修正履歴】18:20
よく見たらカレンダーは、「日曜」初めでなく「月曜」初めだったので、
それも補正式に加味しなければいけませんでした。
$wn=4-(DayOfWeek(Date($m;1;$y))>6); → $wn=4-(Filter(DayOfWeek(Date($m;1;$y));"71")<>"");
Last edited by Hiro (2017-07-13 18:25:55)
Offline
皆さま、早速のご教授ありがとうございます。
1人で長々悩みましたが、求める式はお手上げでした。
明日、職場で早速やって見たいと思います。
まだまだ、このリンゴ表示のファイルには課題が多く
ご相談するかも知れません。また、宜しくお願いします。
宜しくお願いします
Offline
qb_dp 様、
$D=GetAsDate ( "2017/08/01" ); となると毎月、ここは2017/09/01 と変更するようでしょうか?
Hiro 様、該当者フィールドを作成していて、そこにチェックが入った人に毎月第四金曜日に「リンゴ」を表記したいのですが
この式を入れたら「?」と出てしまいました。色々考えましたが・・・さっぱりで。
最初の私の質問がわかりにくくて申し訳ありませんが、再度ご指導頂けないでしょうか?
Offline
テーブルの構造が分かりませんが、
日付フィールドがあって、それが第4金曜か否かを判定するのなら、
#4のaqulaさんの考えでいいのでは。
Last edited by チポ (2017-07-18 09:35:40)
Offline
見落としていました。。
Hiroさんのご指摘がありますが、
> 毎月4週目の金曜日に「リンゴ」
これは第4金曜ではなく、
その月の第4週目に含まれる金曜日とも取れますね。
後者で、週の初めが月曜日なら、
20日〜26日の金曜日となります。
Offline
$D=GetAsDate ( "2017/08/01" ); となると毎月、ここは2017/09/01 と変更するようでしょうか?
ヘルプも覗いてみてくださいね。
GetAsDate : http://www.filemaker.com/help/15/fmp/ja … sdate.html
上記を見ると確認出来ますが、GetAsDate関数は、テキスト("2017/08/01")、数値(735516)、フィールド(フィールド)に加え 変数で指定できます。
どのような設計かは、分かりませんが、カレンダーを作っているとのことなので、1日(ついたち)が設定されているフールドを指定すれば、手動で変更する必要はありません。
$D=GetAsDate ( テーブル名::フィールド名 );
Offline
チポ様、qb_dp様、カレンダーは作っています。 https://tukuru.chefshinnosuke.com/creat … ar-part01/ を参考にさせて頂き
作成しております。 後、IDフィールド・氏名フィールド・果物フィールド・果物詳細フィールド の構造です。
この果物フィールドに「〇」と入力が入ったら、自動で毎月4週目の金曜日に「リンゴ」の表示をしたい。という目的です。
すみません・・・私事ですが夏風邪でダウンして業務の合間にシステム開発!?が、どうにも進んでおりません。
お返事も遅くなり申し訳ありません。
チポ様、qb_dp様のアドバイス、紐解いてやってみます。ありがとうございました。
Offline
まず、「第4金曜日」なのか「4週目の金曜日」なのかの疑問に答えてください。
(第4金曜日→2017/7/28、4週目の金曜日→2017/7/21 のどちら?)
#11の構造説明に、「カレンダー」表示関連フィールドと
目的の「リンゴ」表示フィールドの説明がありません。
もう少し正確な情報を下さいますか。
Offline
Hiri様、「第4金曜日」の設定希望です。
果物フィールドに「〇」と入力が入ったら、自動で果物詳細フィールドに毎月第4金曜日に「リンゴ」の表示をしたい。という目的です。
カレンダーは作っています。
でも、特にまだ活用していない状態です。( https://tukuru.chefshinnosuke.com/creat … ar-part01/ を参考にさせて頂き作成済)
説明が不足でしたらすみません。。
Offline
判別対象の日付データの所在・説明がないと何も始められませんよ!
Offline
Hiro様、ご指示ありがとうございます。
最初に、第4金曜日の「リンゴ」表示の件を相談させてもらいましたが
実はもう1つ困っている事がありまして。
説明不足でしたが作成したカレンダーに、その日その日で入力出来る
テキストフィールドを作成後、そこに毎月第4金曜日の「リンゴ」表示が
自動ではいる事が、最終構築目標でした。
実際には、カレンダー日の下のテキストフィールドが作れていない事も問題で
あり、力不足を痛感中です。
Hiro様のご指示にも答えになっているか解りませんが…
宜しくお願い致します。
Offline
元々、そのような前提の基で#3の式が提示してあります。
つまり、式中の「カレンダー日付」フィールドとは、作成したカレンダーで日付を表示する繰り返し[42回]フィールドの事です。
また、結果を表示するのはテキストフィールドでは無く、繰り返し[42回]の計算フィールドとし、その式に#3の式を設定します。
#3式は、新らたな条件(果物フィールドに「〇」と入力が入ったら)を補足して、
Let(
[
$dt=カレンダー日付フィールド;
$y=Year($dt);
$m=Month($dt);
$d=0;
$res="";
$fnc=
"Case( ValueCount($res)=4; GetValue($res; 4);
Let([
$d=$d+1;
#add=Case(DayOfWeek(Date($m;$d;$y))=6; Date($m;$d;$y));
$res=List($res; #add)
]; Evaluate($fnc))
)"
];
Case(果物フィールド[1]="〇" and $dt=GetAsDate(Evaluate($fnc)); "リンゴ")
)
Last edited by Hiro (2017-07-27 13:57:02)
Offline
Hiro様、ご指導ありがとうございました。
できました!!「出たーーーリンゴ!!」って感じで大喜びでした。
今度は時間を作って、この式を紐解いて少しでも理解できるよう頑張ります。
まだまだ初心者で、この式を1人で出すのは容易な事ではありません。
本当に助かりました。 また、勉強していきます。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 560.46 KiB (Peak: 581.37 KiB) ]