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

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

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

You are not logged in.

Announcement

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


#1 2019-10-26 23:26:52

ゲコ
Guest

思う計算結果が得られません。。。

こんばんは。
日程表を作っているのですが思うような計算結果が得られません。
原因が分からないので教えて頂けませんでしょうか?
Win7 FMP15です。

①ポータルで日付、時間を登録します。

②それを20件までの繰り返しフィールドで日付を表示させています。
予定が20件より少ない場合、予定で登録されている以外の枠は、「-」が入ります。
If (
(GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) = ""));
"-" ;
GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) ; Get ( 計算式繰り返し位置番号 ))
)
ここまでは完了し
③10件予定をいれるつもりだけど今決まっているのは5件だけ、という時に5番目までは予定日、6番目から10番目までは「未定」、11番目から20番目までは「ー」という風にしたいと考えています。
未定件数スケジュールフィールドを作り、
既に予定された件数 Count ( 予定カード::ID )
と足し算して全予定件数を計算しました。

その上で、

Case (
(GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) = "") and (Get ( 計算式繰り返し位置番号 ) > 全予定件数 );
"-" ;
(GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) = "") and (Get ( 計算式繰り返し位置番号 ) ≤ 全予定件数 );
"未定" ;
GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) ; Get ( 計算式繰り返し位置番号 ))
)

としたのですが、思うような表示になりません。

全予定件数は10と計算されていますので、実際の数値を計算式で入れてみると正しい表示になりました。

Case (
(GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) = "") and (Get ( 計算式繰り返し位置番号 ) > 10 );
"-" ;
(GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) = "") and (Get ( 計算式繰り返し位置番号 ) ≤ 10 );
"未定" ;
GetValue(List(予定カード::日付); Get ( 計算式繰り返し位置番号 )) ; Get ( 計算式繰り返し位置番号 ))
)

どこに問題があるのかさっぱり分かりません。

私が何か大きな勘違いをしているのだと思うのですが、何なのでしょうか?

すみませんがよろしくお願い致します。

#2 2019-10-27 01:56:05

Shin
Member

Re: 思う計算結果が得られません。。。

全予定件数[1] としてみましょう。

Offline

#3 2019-10-27 02:07:55

Hiro
Member

Re: 思う計算結果が得られません。。。

  • 「繰り返しフィールド」内から「非・繰り返しフィールド」を参照するときは、
      Extend(非繰り返しフィールド) か 非繰り返しフィールド[1] で「非繰り返し」を明示的に示す必要があります。
      ※省略すると、繰り返しフィールドとして自己と同じ繰り返し位置番号の値を参照しようとします。
       

  • 以下に変更してお試しください。
    Case (
       (GetValue(List(予定カード::日付); Get(計算式繰り返し位置番号)) = "") and (Get(計算式繰り返し位置番号) > 全予定件数[1] );
       "-" ;
       (GetValue(List(予定カード::日付); Get(計算式繰り返し位置番号)) = "") and (Get(計算式繰り返し位置番号) ≤ 全予定件数[1] );
       "未定" ;
       GetValue(List(予定カード::日付); Get(計算式繰り返し位置番号))
    )

       

  • なお、上の冗長な式は簡潔化すると
    Let(
    [
       #n=Get(計算式繰り返し位置番号);
       #v=GetValue(List(予定カード::日付); #n)
    ];
       Case(#v<>"";#v;  #n<=全予定件数[1];"未定";  "-")
    )

Last edited by Hiro (2019-10-27 13:27:31)

Offline

#4 2019-10-27 08:41:17

Shin
Member

Re: 思う計算結果が得られません。。。

何か引っかかるな、と思っていたのですが。

GetValue(List(予定カード::日付); Get(計算式繰り返し位置番号) この結果って、空白行が無ければ、予定カード::日付 と同じでは。

Hiroさんの式だと、予定件数を超えて入力可能ですね。
   Case(
      #n > 全予定件数[1] ; "-" ;
      #v ; #v ;
      "未定"
   )
の方が良く無い?

Last edited by Shin (2019-10-28 09:13:46)

Offline

#5 2019-10-28 14:09:51

チポ
Member

Re: 思う計算結果が得られません。。。

繰り返しフィールドの繰り返し位置が、
関連レコードの数までは繰り返し位置番号、
全予定件数フィールドの値位置までは「未定」、
それ以降は「-」
を入力。

ということなら,
Case ( Get ( 計算式繰り返し位置番号 ) ≤ Count ( 予定カード::日付 ) ; Get ( 計算式繰り返し位置番号 ) ;
          Get ( 計算式繰り返し位置番号 ) ≤ 全予定件数[1] ; "未定" ;
          "-" )
でいいのでは。


日付けの「日」が繰り返し位置番号で、繰り返し数が20
だと、21日以降がないことになりますよね。

それが間違いで、
日付を入力し、フィールドが日付タイプとすると、
テキストは入力できません。

Offline

#6 2019-10-29 23:19:49

ゲコ
Guest

Re: 思う計算結果が得られません。。。

皆さん!ありがとうございました!
まずShinさん、Hiroさんからご遍ん頂いた[1]ですぐにうまくいきました。
無知って怖いですね…。
かなり長時間色々悩みました(T_T)

もうかなりの年数ファイルメーカーを使っていますが、全く使いこなせておらず今回を機にLet関数を使えるようになれたらいいなと思うので、皆さんからアドバイス頂いた方法を自分ものにしたいな、と思います。

ひとまずお礼まで。

またよろしくお願いします。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 518.52 KiB (Peak: 523.05 KiB) ]