Tips

サブテーブルから通常のテーブルへデータを複製する方法

日付2001/11/20
ID01-782
バージョン6.5.x and 6.7.x
プラットフォームWindows and Mac

この記事は、最新ではないバージョンに関連した方法について解説しています。

最新のバージョンでは推奨されていないか、または他の方法で簡単に実現できる可能性があります。

データベース開発のあるポイントで、サブテーブルのフィールドを使用することをやめて、代わりにリレートテーブルを使用したいと思うかもしれません。このポイントでは、リレートテーブルへのサブテーブルのデータを模写する必要があります。次のコードは、そのような処理をインプリメントしています:


ALL RECORDS([Table_with_Subtable])
For ($i;1;Records in selection([Table_with_Subtable]))
LOAD RECORD([Table_with_Subtable])
ALL SUBRECORDS([Table_with_Subtable]Field3)
For ($j;1;Records in subselection([Table_with_Subtable]Field3))
CREATE RECORD([Target_Table])
`リレートの為にはキーフィールドが必要です
[Target_Table]Field1:=[Table_with_Subtable]Key_Field
`以下は実際のデータ複製処理
[Target_Table]Field2:=[Table_with_Subtable]Field3'Field1
[Target_Table]Field3:=[Table_with_Subtable]Field3'Field2
SAVE RECORD([Target_Table])
NEXT SUBRECORD([Table_with_Subtable]Field3)
End for
UNLOAD RECORD([Table_with_Subtable])
NEXT RECORD([Table_with_Subtable])
End for

上記コードは、オリジナルのテーブルの各レコード毎に、すべてのsubrecordsをループし、複写先テーブルに対応するレコードを作成します。オリジナルのテーブルとのリレートを確立するために同じ値を共有するキーフィールドを割り当てることを忘れないでください。