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

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

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

You are not logged in.

Announcement

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


#1 2018-03-20 13:28:19

ns_dom
Member

スクリプトを簡単にしたいのですが

Win10 FM16 FMGo

いつも大変お世話になっております。
現在、作成利用しているスクリプトの動作をもっとシンプルにできないか相談です。
目的は果たせているのですが、動作が約30分以上かかっています。
宜しくお願い致します。

【条件】

同じテーブル内で約26万件のコレードがあります。
その内、Aフィールドにところどころに同じテキスト文字があります。
同じテキスト文字種類が
1.何パターンあるのか?但し、1種類はカウントしない。
(りんご=2レコード、バナナ=12レコード・・・ 合計5パターン)
2.パターン毎にフラッグを付与し、パターン毎の合計と全パターンの合計数
を算出するスクリプトです。

【現在のレコードフィールド構成】

名称フィールドA  算出用フィールドB  結果入力フィールドC 結果合計入力フィールドD
カウント合計E

【現在の作成スクリプト】

全レコード表示
レコード/検索条件/ページ移動[最初の]
テキストを挿入[算出用フィールドB;「1」]

Loop

変数を設定[$aa1;名称フィールドA]
検索モードに切り替え[一時停止:オフ]
フィールド設定[名称フィールドA;$aa1]

  If(カウント合計E=1;1;0)
     検索実行(算出用フィールドB;「1」)
     全レコードを表示
     消去[算出用フィールドB]
     レコード/検索条件/ページ移動「次の;最後まできたら終了:オン」
     テキストを挿入[選択;算出用フィールドB;「1」]

  Else
     変数を設定[$aa1;カウント合計E]
     フィールド設定[結果入力フィールドC;$aa1]
     フィールド設定[結果合計入力フィールドD;$aa1]
     フィールド内容全置換[ダイアログあり:オフ;結果合計入力フィールドD;現在の内容]
     検索実行(算出用フィールドB;「1」)
     全レコードを表示
     消去[算出用フィールドB]
     レコード/検索条件/ページ移動「次の;最後まできたら終了:オン」
     テキストを挿入[選択;算出用フィールドB;「1」]
  End If

End Loop

検索実行(算出用フィールドB[==])
対象外を表示
レコードソート(結果数字が大きい順に)
レコード/検索条件/ページ移動[最初の]

Offline

#2 2018-03-20 15:05:21

Shin
Member

Re: スクリプトを簡単にしたいのですが

! で検索して、集計すれば良さそうに思いますが。

Offline

#3 2018-03-20 16:33:13

ns_dom
Member

Re: スクリプトを簡単にしたいのですが

Shin様

いつも有難う御座います。
実は、数字を見たいだけでなく、抽出したデータから
いろいろ加工編集して表示させたい目的がまた別にありますので
非合理的なスクリプトになっています・・・ですが。
!で集計するやり方を理解していないので変な言い訳になってますけど _|_)。

Offline

#4 2018-03-20 16:34:26

チポ
Member

Re: スクリプトを簡単にしたいのですが

書かれたスクリプトは読み切れていませんが、、

まず、
フィールドの完全一致で考えるんですよね?

> 1.何パターンあるのか
重複するフィールド値の種類数
ですよね。

> パターン毎の合計
パターンごとのレコード数
ですよね。

> 全パターンの合計数
重複する全てのレコード数?


全てが正しければ、
Shinさんの方法で重複を検索して、
名称フィールドAでソートで集計フィールドにレコード数は求められます。

種類数は、最初のレコードから名称フィールドを見ていって、
名称フィールドの値が変わるごとにカウントすれば求められますね。


おそらく早くなりますよね。

Offline

#5 2018-03-20 17:52:00

Shin
Member

Re: スクリプトを簡単にしたいのですが

こんな動きが欲しいのでは。
https://www.dropbox.com/s/596m8n33650pk … 2.zip?dl=0
パターンのカウントは実装していません。

Offline

#6 2018-03-20 20:48:26

ns_dom
Member

Re: スクリプトを簡単にしたいのですが

チポ様 Shin様

レス有難う御座います。
なるほど!で集計できるのですね。勉強になりました。
また、サンプルも有難う御座います。
私も、伝え方が下手なんですね  _|_「 とつくづく思います。
条件に漏れがありました。名称フィールドAの中に
どの様な名前が重複しているのか検索前には、まったく
予想がつかない状態から開始しています。
名称フィールドAを1件づつ、26万件の中から同じ名称が
あるか検索をして同一名称が何件というようにしています。
その為に時間がかかっていると考えています。

Offline

#7 2018-03-21 10:48:06

Shin
Member

Re: スクリプトを簡単にしたいのですが

パターンのカウントを実装しました。
全く異なる2手法が入っています。
https://www.dropbox.com/s/596m8n33650pk … 2.zip?dl=0

> どの様な名前が重複しているのか検索前には、まったく予想がつかない状態から開始しています。
これは、データベースの中の処理としては普通のことですよ。顧客リストでも、名前の予想はつかないでしょう。重複もよくあることです。

Last edited by Shin (2018-03-21 10:48:46)

Offline

#8 2018-03-21 22:16:19

ns_dom
Member

Re: スクリプトを簡単にしたいのですが

Shin様、チポ様

ご案内、有難う御座います。
流石ですね、この様な手法があるのですね。
試しに既存のレコードをDLしたファイルに
インポートしてソートしてみました。
これを参考に現在のファイルを改良して
行きたいと思います。
有難う御座いました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 521.02 KiB (Peak: 525.92 KiB) ]