2

テーブル内のフィールドがシステムから生成されているかどうかを判断するための賢い/短い方法があるかどうかを知りたいです。TableNumとFieldNumのみを変数として使用しており(ハードコーディングされておらず、動的な値のみ)、次のようなもの(擬似コード)を記述できるようにしたいと考えています。

if( Sys::isSystemField(tableId, fieldId) )
{
    //...
} 

それ以外の:

//...
str fieldName;
//...
;
//...

fieldName = dictTable.fieldName(fieldId);

if(fieldName == "modifiedDateTime"
    || fieldName == "DEL_ModifiedTime"
    || fieldName == "modifiedBy"
    || //etc...)
{

//...

私が探していることをする方法がない場合、これは私が書いているものです。誰かが助けてくれることを願っていますが、残念ながらドキュメントにはそれについて何も見つかりませんでした。

乾杯

4

1 に答える 1

4

isSysIdグローバルメソッドを使用します。

たとえば、次の場所で使用されGlobal::buf2bufます。

static void buf2Buf(Common _from, Common  _to)
{
    DictTable   dictTable = new DictTable(_from.TableId);
    fieldId     fieldId   = dictTable.fieldNext(0);
    while (fieldId && ! isSysId(fieldId))
    {
        _to.(fieldId)   = _from.(fieldId);
        fieldId         = dictTable.fieldNext(fieldId);
    }
}
于 2012-04-17T14:11:11.450 に答える