みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM10です。
リスト形式で表示しています。
あ
い
う
お
か
き
く
け
こ
え
レコード順(ソート不可)を五十音順にさせたいため
以下のスクリプトを組みました。
変数を設定[$n; 値:Get(レコード番号)]
レコード条件/検索条件複製
レコード条件/検索条件/ページへ移動[ダイアログなし; $n]
レコード条件/検索条件削除[ダイアログなし]
「う」のレコードをアクティブにしてスクリプト実行
あ
い
う
か
き
く
け
こ
え
お
これを五十音順になるよう数回繰り返していました。
Loop処理させた方が簡単かなと考えたのですが、
Loop終了Exit Loop ifの計算式が考えられません。
よろしくお願いします。
Offline
別テーブルから全レコードをインポートしてそちらでソートしてから
元テーブルから書き戻すのが簡単かも。
Offline
同じことだけど
ソート
エクスポート
全レコード削除
インポート
にすれば、別テーブルを用意しなくてもできます。
ご回答有難うございます。
例は実際やりたいことの要約であり、
訳あってソートできません。
Loop処理で何とかできないでしょうか。
Offline
>訳あってソートできません。
ですから別テーブルでと書いたのですが。別ファイルでもいい。
スクリプトで自動でやるにしても、ソートしないと希望の並び順が決まらなさそう。
Offline
注目しているレコードと、それ以降のレコードを比較し、注目レコードが最も小さくなっていれば、その注目レコードは終了、という動きにすればいいでしょうが。
非常に無駄が多く、ファイル内にゴミが大量に残っていく動きで、かなり頻繁にファイルの最適化を行っておかないと非常に動きが遅くなる可能性が有ります。
変数を設定 [ $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
ソートできないテーブルってありえないでしょう。
Loopでソート状態を調べるのは、ソートと同等以上の時間がかかるはず。
ソートの基準フィールドが他のテーブルの値?
値一覧に使おうとしてるのかなあ。値一覧を任意にソートする方法は、過去ログにあります。
物理的にソート状態になっているところへ新規レコードを追加するなら、その時に処理したらいいかも。
挿入すべき位置を調べて、その後ろのレコードをエクスポート。新規レコード作成。インポート。
既存レコードの変更も、それをエスポート・削除して同様にすれば、できるか。
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 515.38 KiB (Peak: 519.91 KiB) ]