Tips

コンポーネントメソッドはフィールドを名前で参照すると便利

日付2011/04/14
ID76292 (英語原文参照)
バージョン11
プラットフォームMac/Win

コンポーネントメソッドは, ポインタでホストデータベースのフィールドを参照するのが基本です。これには, ホストデータベースからメソッドの引数でポインタを受け取ったり, Field関数に番号を返すなどの方法が考えられますが, コードの読みやすさや使いやすさという面では, テーブルを名前で参照するのが便利です。

コンポーネントメソッドの中では, SQL言語でシステムテーブルを参照することができます。それでまずSQL言語で名前からテーブル番号とフィールド番号を特定し, 続いて4D言語で番号をフィールドポインタに変換すれば, 汎用的なコンポーネントコードが記述できます。

C_TEXT($1;$tableName_t)
C_TEXT($2;$fieldName_t)
C_POINTER($0;$fieldPointer_p)

C_LONGINT($tableNumber_l;$fieldNumber_l)

$tableName_t:=$1
$fieldName_t:=$2

Begin SQL
SELECT TABLE_ID, COLUMN_ID
FROM _USER_COLUMNS
WHERE TABLE_NAME = :$tableName_t
AND COLUMN_NAME = :$fieldName_t
INTO :$tableNumber_l, :$fieldNumber_l;
End SQL

$fieldPointer_p:=Field($tableNumber_l;$fieldNumber_l)

$0:=$fieldPointer_p