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

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

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

You are not logged in.

Announcement

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


#1 2014-04-04 06:05:15

youkazu7777
Member

繰り返し計算で、一度表示された値を二回目は表示しないようにする

以下の計算式を設定した繰り返しフィールドを作って、
vlに取得した日付のリストを順番に表示していく計算式です。(トピック7869)
これで、一応表示はできるのですが、「集計最終日」に日付が入力されている場合は、
vlのリストをすべて表示するのではなく、その最終日の表示を最後にしてあとは空らんにしたいと思います。

式後半の

v < ul ; v;
v >= ul ; ul 

に問題があって、最終日を一度表示したあと、vlと同じ数だけになるだけ最終日を何回も繰り返して表示してしまいます。
しかし、どのようにすればよいかがわかりません。
(再帰式を使うしかない気がするが・・・;;)

Let( [
 vl = ValueListItems(Get(ファイル名);教室マスタ_入テ受験者::教室名[1]&"教室日程一覧");
 max = ValueCount(vl);
 ld = GetValue(vl;max);
 ul = 入テ各教室締め日::集計最終日[1];
 ldplus = Date(Month(ld);Day(ld)+1;Year(ld));  
 n=Get(計算式繰り返し位置番号); 
 v=GetValue(vl;n)
 ];
 Case(
                IsEmpty(ul) ; Case(
                                              n <= max  ; v;
                                              n = max +1  ; ldplus
                                           );

          not IsEmpty(ul) ; Case(
                                              v < ul ; v;
                                              v >= ul ; ul 
                                           )
)

)

毎回面倒な質問で恐縮ですが、ご教授いただければ幸いです。

PS.再帰式を理解するのに良いサンプルファイルがあればご紹介いただけませんか?
FMpro11 MacOSX10.9

Offline

#2 2014-04-04 09:14:42

tim
Guest

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

Let( [
vl = ValueListItems(Get(ファイル名);教室マスタ_入テ受験者::教室名[1]&"教室日程一覧");
vl = List ( vl ; GetAsDate(RightValues(vl;1)) + 1 );
ul = 入テ各教室締め日::集計最終日[1];
n=Get(計算式繰り返し位置番号);
v=GetAsDate(GetValue(vl;n))
];
Case(
          not IsEmpty(ul) and v > ul ; "" ; v
)
)

#3 2014-04-04 13:48:08

youkazu7777
Member

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

あらら・・・こんな簡単な式で良かったのか・・・
timさんありがとうございました。

自分の頭の悪さが嫌になりますわ・・・(ーー;)

Offline

#4 2014-04-04 16:15:22

youkazu7777
Member

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

すみません。もう少し教えて下さい。
timさんの教えていただいたことをベースにして、次のように式を変えました。
でも、一つ問題があって、「最終日」が入力されているときは、
この最終日そのものを最後に表示したいのですが、うまい書き方がわかりません。

Let( [
 vl = ValueListItems(Get(ファイル名);教室マスタ_入テ受験者::教室名[1]&"教室日程一覧");
 max = ValueCount(vl);
 ld = GetValue(vl;max);
 ul = 入テ各教室締め日::集計最終日[1];
 ldplus = Date(Month(ld);Day(ld)+1;Year(ld));  
 n=Get(計算式繰り返し位置番号); 
 v=GetValue(vl;n)
 ];
 Case(
             not IsEmpty(ul) and v > ul ; "" ;
               Case(
                        n = max +1 and  IsEmpty(ul)  ; ldplus ;  v
                     )
        )
         
)

Offline

#5 2014-04-04 17:13:01

tim
Guest

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

あ、+1以外にもリスト外の値があるんでした。
そうすると
Let( [
vl = ValueListItems(Get(ファイル名);教室マスタ_入テ受験者::教室名[1]&"教室日程一覧");
vl = List ( vl ; GetAsDate(RightValues(vl;1)) + 1 );
ul = 入テ各教室締め日::集計最終日[1];
n=Get(計算式繰り返し位置番号);
v=GetAsDate(GetValue(vl;n))
];
Case(
          not IsEmpty(ul) and v > ul ; Case ( Self[n-1] <> ul ) ; ul ; "" ) ; v
)
)
あんまりすっきりしない。。。

#6 2014-04-04 17:21:07

youkazu7777
Member

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

timさん、早速ありがとうございます。
わたし、最初のtimさんの書き込みの、前半部分が変更されてるの気付いてませんでした。すみません^^;

で、新しい式の方ですが、self[n-1] の記述が通らないようです。
この使い方は問題ありませんか?

Offline

#7 2014-04-04 18:36:46

youkazu7777
Member

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

self[n-1]をフィールド名に変えたらうまくいきました。ありがとうございます。

Offline

#8 2014-04-04 19:52:40

youkazu7777
Member

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

timさん、やっぱりだめです。

フィールド名[n-1] <> ul ; ul ;"" で、最後の項目のあとが、シマシマ模様的に飛び飛びでulが表示されてしまうのに気付きました^^;
どうなおしたらいいでしょうか・・・・

Offline

#9 2014-04-04 22:01:15

youkazu7777
Member

Re: 繰り返し計算で、一度表示された値を二回目は表示しないようにする

区分[n-1]  <> ul and 区分[n-1] <> "" としたら行けました。
今度こそ大丈夫そうです。
ありがとうございました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 562.46 KiB (Peak: 582.15 KiB) ]