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

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

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

You are not logged in.

Announcement

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


#1 2017-07-13 13:38:43

vivi
Member

毎月4週目の金曜日カレンダー表示

いつも勉強させて頂いています。初心者に毛が生えたレベルです。
やりたい事の糸口が見つからず相談です。
ノート見開きに1週間分、左側に月曜火曜水曜、右側に木曜金曜土曜日曜と、カレンダーを作成し日付表記し、1週間分を週末50人分、印刷しています。
その50人程度の会員の中から、該当者には毎月4週目の金曜日に「リンゴ」と表記を自動で毎月表記したいのです。
がリクエストの要望に答えられず困っております。
糸口をご教授頂けないでしょうか、宜しくお願いします。
FM12  ウィンドウズ10の環境です。

Offline

#2 2017-07-13 14:46:15

qb_dp
Member

Re: 毎月4週目の金曜日カレンダー表示

以下の式で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

#3 2017-07-13 14:48:17

Hiro
Member

Re: 毎月4週目の金曜日カレンダー表示

カレンダー日付が第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

#4 2017-07-13 15:10:38

aqula
Member

Re: 毎月4週目の金曜日カレンダー表示

初心者向けの考え方をひとつ
(日付が22日から28日)かつ(金曜日)が第4金曜日です。

Offline

#5 2017-07-13 15:39:23

Hiro
Member

Re: 毎月4週目の金曜日カレンダー表示

あぁ、あくまでカレンダー状画面表示で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

#6 2017-07-13 19:03:38

vivi
Member

Re: 毎月4週目の金曜日カレンダー表示

皆さま、早速のご教授ありがとうございます。
1人で長々悩みましたが、求める式はお手上げでした。
明日、職場で早速やって見たいと思います。
まだまだ、このリンゴ表示のファイルには課題が多く
ご相談するかも知れません。また、宜しくお願いします。


宜しくお願いします

Offline

#7 2017-07-17 14:26:18

vivi
Member

Re: 毎月4週目の金曜日カレンダー表示

qb_dp 様、
    $D=GetAsDate ( "2017/08/01" );  となると毎月、ここは2017/09/01 と変更するようでしょうか?
Hiro 様、該当者フィールドを作成していて、そこにチェックが入った人に毎月第四金曜日に「リンゴ」を表記したいのですが
この式を入れたら「?」と出てしまいました。色々考えましたが・・・さっぱりで。
最初の私の質問がわかりにくくて申し訳ありませんが、再度ご指導頂けないでしょうか?

Offline

#8 2017-07-18 09:05:05

チポ
Member

Re: 毎月4週目の金曜日カレンダー表示

テーブルの構造が分かりませんが、
日付フィールドがあって、それが第4金曜か否かを判定するのなら、
#4のaqulaさんの考えでいいのでは。

Last edited by チポ (2017-07-18 09:35:40)

Offline

#9 2017-07-18 14:03:23

チポ
Member

Re: 毎月4週目の金曜日カレンダー表示

見落としていました。。
Hiroさんのご指摘がありますが、

> 毎月4週目の金曜日に「リンゴ」
これは第4金曜ではなく、
その月の第4週目に含まれる金曜日とも取れますね。

後者で、週の初めが月曜日なら、
20日〜26日の金曜日となります。

Offline

#10 2017-07-18 17:43:38

qb_dp
Member

Re: 毎月4週目の金曜日カレンダー表示

$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

#11 2017-07-21 17:58:14

vivi
Member

Re: 毎月4週目の金曜日カレンダー表示

チポ様、qb_dp様、カレンダーは作っています。 https://tukuru.chefshinnosuke.com/creat … ar-part01/ を参考にさせて頂き
作成しております。 後、IDフィールド・氏名フィールド・果物フィールド・果物詳細フィールド の構造です。
この果物フィールドに「〇」と入力が入ったら、自動で毎月4週目の金曜日に「リンゴ」の表示をしたい。という目的です。
すみません・・・私事ですが夏風邪でダウンして業務の合間にシステム開発!?が、どうにも進んでおりません。
お返事も遅くなり申し訳ありません。
チポ様、qb_dp様のアドバイス、紐解いてやってみます。ありがとうございました。

Offline

#12 2017-07-21 20:45:10

Hiro
Member

Re: 毎月4週目の金曜日カレンダー表示

まず、「第4金曜日」なのか「4週目の金曜日」なのかの疑問に答えてください。
(第4金曜日→2017/7/28、4週目の金曜日→2017/7/21 のどちら?)

#11の構造説明に、「カレンダー」表示関連フィールドと
目的の「リンゴ」表示フィールドの説明がありません。
もう少し正確な情報を下さいますか。

Offline

#13 2017-07-22 18:34:10

vivi
Member

Re: 毎月4週目の金曜日カレンダー表示

Hiri様、「第4金曜日」の設定希望です。
果物フィールドに「〇」と入力が入ったら、自動で果物詳細フィールドに毎月第4金曜日に「リンゴ」の表示をしたい。という目的です。
カレンダーは作っています。
でも、特にまだ活用していない状態です。( https://tukuru.chefshinnosuke.com/creat … ar-part01/ を参考にさせて頂き作成済)
説明が不足でしたらすみません。。

Offline

#14 2017-07-22 23:22:39

Hiro
Member

Re: 毎月4週目の金曜日カレンダー表示

判別対象の日付データの所在・説明がないと何も始められませんよ!

Offline

#15 2017-07-27 13:14:57

vivi
Member

Re: 毎月4週目の金曜日カレンダー表示

Hiro様、ご指示ありがとうございます。
最初に、第4金曜日の「リンゴ」表示の件を相談させてもらいましたが
実はもう1つ困っている事がありまして。
説明不足でしたが作成したカレンダーに、その日その日で入力出来る
テキストフィールドを作成後、そこに毎月第4金曜日の「リンゴ」表示が
自動ではいる事が、最終構築目標でした。
実際には、カレンダー日の下のテキストフィールドが作れていない事も問題で
あり、力不足を痛感中です。
Hiro様のご指示にも答えになっているか解りませんが…
宜しくお願い致します。

Offline

#16 2017-07-27 13:53:52

Hiro
Member

Re: 毎月4週目の金曜日カレンダー表示

元々、そのような前提の基で#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

#17 2017-07-28 18:19:16

vivi
Member

Re: 毎月4週目の金曜日カレンダー表示

Hiro様、ご指導ありがとうございました。
できました!!「出たーーーリンゴ!!」って感じで大喜びでした。
今度は時間を作って、この式を紐解いて少しでも理解できるよう頑張ります。
まだまだ初心者で、この式を1人で出すのは容易な事ではありません。
本当に助かりました。 また、勉強していきます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 560.46 KiB (Peak: 581.37 KiB) ]