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

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

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

You are not logged in.

Announcement

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


#1 2017-01-07 23:49:00

onias
Member

レコード分類別に1レコードづつ抽出したい。

oniasです。 Win10、8.1 FM15 iPhon6

いつも大変お世話になっております。
今回も、うまくいかず、もんもんとしています。
宜しくお願い致します。

10万件のレコードに特定のタイミングでフラッグ”1”を
付けようとしていますが、動作がバラついています。
手入力   手入力  スクリプト入力  計算式  スクリプト計算   
  ※A       B             C            D          ※E
中央区    1丁目     1     +1=2         
中央区    2丁目     1     +1=2
中央区    3丁目     1     +1=2--------- 1
北区     1丁目      2     +1=3
北区     2丁目      2     +1=3
北区     3丁目      2     +1=3---------- 1
南区     1丁目      3     +1=4
南区     2丁目     3     +1=4
南区     3丁目     3     +1=4--------- 1
東区     1丁目     4     +1=5
東区     2丁目      4     +1=5
東区     3丁目     4     +1=5--------- 1

求めたい結果(中央区、北区、南区、東区と"4種類”ある事が解る事です)
もちろん、集計してプレビュー印刷すれば、解りますが、レコードと
して※Aと※Eのレコード4件エクスポートし別ファイルのレコード利用したいのです。
  ※A      ※E
中央区     1
北区         1
南区             1
東区区        1

その為に、わざとフィールドCで同じフィールドAなら規定番号を付与し
フィールドDで次のレコードに移った時照合で差異が出た時に----1を
付ける様なスクリプトを組んでいます。結構難解なのですが、簡単に
フィールドEの区分ごとにフラッグを付けけたいのですがうまくいきません。

うまくいかない現象は、例えば、中央区から北区に移るときは、フールドE
にうまく---1が入りますが、次がうまく入らずスペースになったり、連続で
うまく進んでいるときもあれば、飛び飛びになったり、安定しないのです。

速度が速すぎるのかと思い、レコード移るタイミングの時に停止0.05秒の
時間差を設けたり、同じスクリプトを2回づつ繰り返してみた入りしました。
結果は、やはりばらつくのです、何なんでしょうね。

Offline

#2 2017-01-08 01:43:10

Hiro
Member

Re: レコード分類別に1レコードづつ抽出したい。

最終目的が、Aのユニークレコードだけの別テーブルを作ることなら色々な便法が考えられますが、
取敢えず、質問のスクリプトでの問題点については、

冗長なループ・スクリプトに代わり、「全置換」だけの1行スクリプトにするのが簡潔・確実かな。
・フィールド内容の全置換[テーブル::E; 値:※下式]

Let([
   #add=Case(FilterValues($vlt; テーブル::A)=""; テーブル::A);
   $vlt=List($vlt; #add)
];
   Case(not IsEmpty(#add); 1)
)

・式の意味は、Aが既存値一覧リスト($vlt)に含まれなければ、Eにフラグ「1」を立て、
   既存リスト($vlt)にA($add)を追加して繰越更新して行きます。
・この為、フラグが立つレコードはAのユニーク値が最初に出現するレコードとなります。
   また、説明事例のようにA・Bでソートする事前処理は特に不問です。
・一時作業フィールドC・Dも不用です。

Last edited by Hiro (2017-01-08 13:02:47)

Offline

#3 2017-01-08 10:11:29

onias
Member

Re: レコード分類別に1レコードづつ抽出したい。

hiro様

深夜にもかかわらず回答ありがとうございます。
構文の解釈前に早速テストしてみました。

結果、数秒で100点満点(失礼)の回答になりました。
10数分かかっても思い通りにならなかったことが
あっさりでした。流石ですね、今まで何をしてたん
だろう。ありがとうございます。助かりました。
今後ともよろしくお願い致します。

Offline

#4 2017-01-08 11:20:27

Shin
Member

Re: レコード分類別に1レコードづつ抽出したい。

終わっていますが、
A のフィールドの値を使って値一覧を作り、その内容を ValueListItems() 関数で取り出して、別テーブルに展開する、という方法が一番簡単では。

Offline

#5 2017-01-08 13:14:07

シャチ
Member

Re: レコード分類別に1レコードづつ抽出したい。

まあまた終わってますが
スクリプトで「1」を出すのではなく
計算式で「1」をだすこともできます。

[解決] リスト形式で部屋番号が切り替わるところで線を入れたい
で、提案した方法ですが
これを応用するとけいsなんだけで「1」をいれられます。

ファイルは
http://yahoo.jp/box/9XgUvH
にあります。

Offline

#6 2017-01-08 21:00:39

onias
Member

Re: レコード分類別に1レコードづつ抽出したい。

Shin様
シャチ様

いつも有難う御座います。
なるほど、いろいろあるんですね。参考になりました。
シャチ様のファイル開けて見ました。
こういうやり方も面白いですね。参考になりました。

有難う御座いました。

Offline

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: 517.66 KiB (Peak: 522.56 KiB) ]