4D-jp 4D Japan Technical Support Team

OB SETでオブジェクト型フィールドが更新されない

2020-01-16

24時間を超過する時間型の値をView Proエリアで使用した場合,値は時間ではなく,時刻として表示されます。たとえば,Time(26;00;00)を挿入した場合,26時間ではなく,午前2時と表示されます。これは仕様です。SpeadJSセルの表示フォーマット(long time pattern)は,デフォルトでHH:mm:ssに設定されています。24時間を超過する時間型を表示したいのであれば,フォーマットを[hh]:mm:ssに設定してください。

オブジェクト型フィールドのオブジェクト型プロパティの値をOB SETで変更してから保存した場合,オブジェクト型プロパティの値は更新されないかもしれません。これは仕様です。たとえば,下記のコードを実行した場合,[Test]TestObject.Testの値は200に更新されません。

LOAD RECORD([Test])
$oSubObject:=OB Get([Test]TestObject;"MySubObject";Is object)
OB SET($oSubObject;"Test";200)
SAVE RECORD([Test])

OB SETコマンドは,第1パラメーターに渡されたオブジェクト型(フィールドまたは変数)のdirty(変更済み)フラグだけをセットします。そのオブジェクトを参照している他のオブジェクトのフラグはセットしません。OB SETコマンドでオブジェクト型フィールドの内部オブジェクトを間接的に更新する場合,フィールド自体のdirty(変更済み)フラグを下記のようにセットする必要があります。

[Test]TestObject:=[Test]TestObject

関連記事

リンク