みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつも大変お世話になっています。
次のようなテーブルがあったとします。
ID No G F2
1 1 1 AAA
2 2 1 GGGG
3 3 1 YYYY
4 1 2
5 2 2
6 3 2
7 4 2
8 1 3
F1のグループ1のデータをコピーして、次のようにグループ2に複写したいと思います。
ID No G F2
1 1 1 AAA
2 2 1 GGGG
3 3 1 YYYY
4 1 2 AAA
5 2 2 GGGG
6 3 2 YYY
7 4 2
8 1 3
現在検討している方法は、ダミーテーブルを用意して
・ ダミーテーブルにグループ1のレコードをインポート
・ グループ2にダミーテーブルからインポート
あるいはダミーテーブルを作らないで
・グループ1をFM形式でエクスポート
・エクスポートしたファイルをグループ2にインポート
もっと良い方法がありましたらご指導ください。
Offline
良い方法かは分かりませんが、
現テーブルだけでの処理方法を。
コピー元だけを対象レコードとして、
最後のレコードから順に、
レコードコピー
必要な入力
レコードを対象外に
レコードを対象外に
これを対象レコードがなくなるまで繰り返す。
Offline
グループ1のデータレコード数が、既存のグループ2の空レコード数を超える
場合の処理は、コピーしない? 不足レコード追加してコピー?
Offline
グループ1のデータレコード数が、既存のグループ2の空レコード数を超える
場合の処理は、コピーしない? 不足レコード追加してコピー?
該当するレコードがない場合はコピーしません。
レコードの照合キーは例の場合は"No"です。
Offline
ああ、そういうことでしたか。。
インポートが簡単と思いますが、現テーブルだけでの方法を。
Gと照合するためのフィールドを作り、
Noとandでリレーションします。
グループ1を検索
照合用に2を全置換入力
関連レコード移動でグループ2を対象に
F2を再ルックアップ
手順だけですが。。
Offline
こんな感じのスクリプト書きます
元データを変数に保存して 検索して更新って感じですね
#-------------------------
グループ1の検索
#-------------------------
先頭に移動
$i=0
loop
$i=$i + 1
$NO[$i]=NO
$F2[$i]=F2
次に移動 終了判定[オン]
end loop
$iの回数=$i
#-------------------------
$i=0
loop
$i=$i + 1
------------------
G=2とNO=$NO[$i]
で検索
------------------
IF データがあったとき
F2=$F2[$i]
ENDIF
EXIT IF $i =$iの回数
end loop
Last edited by gotani (2019-01-23 17:18:10)
Offline
8 1 3 AAA
と、しなくていいのですか。
Offline
みなさま
ご報告が大変遅くなりまして申し訳ありません。
おかげさまで無事解決しました!!!
gotaniさんにご指導いただいた Loopとレコード検索を使う方法は”処理が遅くなる”というか先入観を持っていましたが、
実際にやってみると高速に出来ることがわかりました。
約1.2万件のレコードの中の3000件のレコード(フィールド数20)をgotaniさんの方法で、同じテーブルの中の別の場所に検索して複写する処理を試みたところ、
ローカル環境では約13秒
FMServer環境では60秒でしたが、サーバー上のスクリプト実行で行うと約13秒
いづれの場合も期待以上の早い速度で出来ることがわかりました。
心よりお礼申し上げず。
Offline
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 562.44 KiB (Peak: 582.47 KiB) ]