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

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

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

You are not logged in.

Announcement

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


#1 2019-01-24 12:40:22

指定した日付と一致する繰り返しフィールドの位置番号

いつも助け舟を出してもらっています。
fmp12

テーブルA
氏名
指定日付

テーブルB
氏名
日付起点
日付一覧(繰り返しフィールド)

氏名でリレーション中

指定日付と一致する値が日付一覧(繰り返しフィールド)にあったら
その値の繰り返し位置番号を返すような計算式はないでしょうか?

アドバイスを頂けると幸いです。

Offline

#2 2019-01-24 14:46:36

Hiro
Member

Re: 指定した日付と一致する繰り返しフィールドの位置番号

・答えは、A/Bテーブルのどちらで出すのですか?
また、
・日付一覧は、日付起点を起点とした連続する一連日付ですか?
   (つまり、日付一覧内の日付からそのコマ位置が逆算可能か?)

Last edited by Hiro (2019-01-24 15:14:54)

Offline

#3 2019-01-24 15:34:38

あいみみあ
Guest

Re: 指定した日付と一致する繰り返しフィールドの位置番号

Hiro様
コメントありがとうございます。
答えはAテーブルの別フィールドで出します。
日付一覧は一連日付ではなく日付起点を基に計算された規則性のない値です。

Let ([
$n = 1 ;
$c = "Case ( Bテーブル::日付一覧[$n] = Aテーブル::指定日付[1] ; $n ;
Let ( [$n = $n + 1 ] ; Evaluate ($c) )" ] ;
Evaluate ( $c )
)

こんな感じで行けるのかな?と思いましたがだめでした。

#4 2019-01-24 16:05:58

Hiro
Member

Re: 指定した日付と一致する繰り返しフィールドの位置番号

不規則な日付なら、現物を突き合わせないとだめですね!

例示再帰式に依るのが良さそうですが、
例示式だと同じ日付がない場合、無限ループになってしまいますネ!

ループ抜けの条件に、繰り返し限界回数をOR条件に入れると良いでしょう。

私が書くなら、多少冗長ですが安全に、(動作確認はしていません)
Let([
   $n=30; //← 繰り返し回数を指定、30回を例示
   $i=0;
   $res="";
   $fnc=
      "Case($res or $i=$n; $res;
         Let([
            $i=$i+1;
            $res=Case(Bテーブル::日付一覧[$i]=指定日付; $i)
         ]; Evaluate($fnc))
      )"
];
   Evaluate($fnc)
)

Last edited by Hiro (2019-01-24 16:38:50)

Offline

#5 2019-01-24 16:28:01

チポ
Member

Re: 指定した日付と一致する繰り返しフィールドの位置番号

Caseの中のLetで
繰り返し位置を指定した値を得ないと。。

Offline

#6 2019-01-26 15:40:56

Re: 指定した日付と一致する繰り返しフィールドの位置番号

Hiro様
無事動作しました。
ありがとうございます。

チポ様
後学のために教えていただきたいのですが「繰り返し位置を指定した値を得ないと」というのはどういうことでしょうか?
自分の式だと一致する値がある場合でも?と表示されてしまいます。

Offline

#7 2019-01-28 08:57:23

チポ
Member

Re: 指定した日付と一致する繰り返しフィールドの位置番号

Let ( [ $d = 指定日付 ;
          $c = 1 ;
          $a = "Case ( $c > 繰り返し回数 ; ""指定日付なし"" ;
                             $d = $r ; $c ;
                             Let ( [ $c = $c + 1 ; $r = 日付一覧[$c] ] ; Evaluate ( $a ) ) )"] ;
         Evaluate ( $a ) )
これでいいんじゃないかな。

Offline

#8 2019-01-28 09:33:59

Shin
Member

Re: 指定した日付と一致する繰り返しフィールドの位置番号

$r を定義しなくてもいいのでは。それと、1回目の評価で $r が定義されていないのが居心地悪いです。
チポさんのをそのまま流用させてもらって、
Let (
[         $d = 指定日付 ;
          $c = 1 ;
          $a = "Case ( $c > 繰り返し回数 ; ""指定日付なし"" ;
                             $d = 日付一覧[$c] ; $c ;
                             Let ( [ $c = $c + 1 ] ; Evaluate ( $a ) ) )"
] ;
         Evaluate ( $a )
)

Offline

#9 2019-01-31 10:33:24

あいむいあ
Guest

Re: 指定した日付と一致する繰り返しフィールドの位置番号

チポ様
Shin様
Evaluateの使い方難しいです。
精進します、ありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 562.84 KiB (Peak: 582.63 KiB) ]