4D v14.3Get subrecord key |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v14.3
Get subrecord key
Get subrecord key
Get subrecord keyコマンドは、変換されたサブテーブルを使用する4Dコードから、標準のテーブルに対して作業を行うコードへの移行を容易にします。 注意: 4Dバージョン11よりサブテーブルはサポートされていません。旧バージョンのデータベースを変換すると、既存のサブテーブルは標準のテーブルに変換され、自動リレーションにより親テーブルとリンクされます。以前のサブテーブルはNテーブルとなり、親テーブルは1テーブルになります。1テーブル中、以前のサブテーブルフィールドは"サブテーブルリレーション"型の特別なフィールドに変換され、Nテーブルには特別な"サブテーブルリレーション"型のフィールドが“id_added_by_converter”という名称で追加されます。 これは変換されたデータベースにおいてサブテーブルの動作の互換性を保持するためのものです。しかし変換されたデータベースにおいて、すべてのサブテーブルメカニズムを標準のテーブルを使用したメカニズムに置き換えることを強く推奨します。 この作業ではまず特別な自動リレーションを削除してサブテーブルから継承したメカニズムを恒久的に無効にし、その後関連するコードを書き換える必要があります。Get subrecord keyコマンドはリレーションで使用される内部IDを返し、このIDを使用することでこの書き換えを容易に行うことができます。この内部IDは実際のリレーションを不要とし、リレーションがもう存在しないにもかかわらず、開発者は以前のサブテーブルのセレクションで作業を行うことができます。 変換された以下のストラクチャーで例題を見てみましょう: 4D では以下のコードが依然動作しますが、更新する必要があります: ALL SUBRECORDS([Employees]Children) このコードを以下のように書き換えることができます: QUERY([Employees_Children];[Employees_Children]id_added_by_converter=Get subrecord key([Employees]Children)) 注: Get subrecord keyコマンド実行時、カレントレコードがロードされていない場合は0を返します。 2番目のコードは標準の4Dコマンドを使用していますが、リレーションが存在するしないにかかわらず以前と同様に動作します。リレーションを取り除くと、コマンドは倍長整数フィールドに格納された値を返します。 idField引数にはサブテーブルリレーション型のフィールド (リレーションがまだ存在する場合) または倍長整数タイプのフィールド (リレーションを取り除いた場合) を渡します。これ以外の場合エラーが生成されます。 このコマンドを使用することで、遷移的なコードを書くことができます。アプリケーションのアップグレードの最終ステージで、このコマンドの呼び出しを取り除くことができます。 |
プロパティ
プロダクト: 4D
履歴
初出: 4D v12.1 ARTICLE USAGE
ランゲージリファレンス ( 4D v12.4) Parent of : Get subrecord key ( 4D v14 R3) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||