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

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

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

You are not logged in.

Announcement

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


#1 2014-07-02 15:32:13

クネ〜ル
Member

Exit Loop ifの計算式

FM10です。

リスト形式で表示しています。










レコード順(ソート不可)を五十音順にさせたいため
以下のスクリプトを組みました。

変数を設定[$n; 値:Get(レコード番号)]
レコード条件/検索条件複製
レコード条件/検索条件/ページへ移動[ダイアログなし; $n]
レコード条件/検索条件削除[ダイアログなし]

「う」のレコードをアクティブにしてスクリプト実行









これを五十音順になるよう数回繰り返していました。
Loop処理させた方が簡単かなと考えたのですが、
Loop終了Exit Loop ifの計算式が考えられません。
よろしくお願いします。

Offline

#2 2014-07-02 15:40:23

旅人
Member

Re: Exit Loop ifの計算式

別テーブルから全レコードをインポートしてそちらでソートしてから
元テーブルから書き戻すのが簡単かも。

Offline

#3 2014-07-02 15:46:30

sorter
Guest

Re: Exit Loop ifの計算式

同じことだけど
ソート
エクスポート
全レコード削除
インポート
にすれば、別テーブルを用意しなくてもできます。

#4 2014-07-02 15:58:21

クネ〜ル
Member

Re: Exit Loop ifの計算式

ご回答有難うございます。

例は実際やりたいことの要約であり、
訳あってソートできません。
Loop処理で何とかできないでしょうか。

Offline

#5 2014-07-02 16:03:46

旅人
Member

Re: Exit Loop ifの計算式

>訳あってソートできません。
ですから別テーブルでと書いたのですが。別ファイルでもいい。
スクリプトで自動でやるにしても、ソートしないと希望の並び順が決まらなさそう。

Offline

#6 2014-07-02 17:07:41

Shin
Member

Re: Exit Loop ifの計算式

注目しているレコードと、それ以降のレコードを比較し、注目レコードが最も小さくなっていれば、その注目レコードは終了、という動きにすればいいでしょうが。
非常に無駄が多く、ファイル内にゴミが大量に残っていく動きで、かなり頻繁にファイルの最適化を行っておかないと非常に動きが遅くなる可能性が有ります。

変数を設定 [ $n; 値:Get ( レコード番号 ) ]
Loop
 レコード/検索条件/ページへ移動 [ $n ][ ダイアログなし ]
 変数を設定 [ $c; 値:テーブル::キー ]
 Loop
  If [ テーブル::キー < $c ]
   レコード/検索条件/ページへ移動 [ $n ][ ダイアログなし ]
   レコード/検索条件複製
   レコード/検索条件/ページへ移動 [ $n ][ ダイアログなし ]
   レコード/検索条件削除[ ダイアログなし ]
   Exit Loop If [ Let ( $n = $n - 1 ; 1 ) ]
  Else
   レコード/検索条件/ページへ移動[ 次の; 最後まできたら終了 ]
  End If
 End Loop
 Exit Loop If [ Let ( $n = $n + 1 ; $n ≥ Get ( 対象レコード数 ) ) ]
End Loop

Last edited by Shin (2014-07-02 17:20:26)

Offline

#7 2014-07-07 11:36:56

tim
Guest

Re: Exit Loop ifの計算式

ソートできないテーブルってありえないでしょう。
Loopでソート状態を調べるのは、ソートと同等以上の時間がかかるはず。
ソートの基準フィールドが他のテーブルの値?

値一覧に使おうとしてるのかなあ。値一覧を任意にソートする方法は、過去ログにあります。

物理的にソート状態になっているところへ新規レコードを追加するなら、その時に処理したらいいかも。
挿入すべき位置を調べて、その後ろのレコードをエクスポート。新規レコード作成。インポート。
既存レコードの変更も、それをエスポート・削除して同様にすれば、できるか。

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: 513.46 KiB (Peak: 518 KiB) ]