【仕様】オブジェクト型フィールドのサブオブジェクトを更新することについて
【仕様】オブジェクト型フィールドのサブオブジェクトを更新することについて
オブジェクト型フィールドにオブジェクト型の属性が存在し,その属性をオブジェクト型変数とOB SETで直接更新した場合,そのままではフィールドが更新されません。これは仕様です。
例:
C_OBJECT($oSubObject)
OB SET($oSubObject;"Test";100)
CREATE RECORD([Test])
OB SET([Test]TestObject;"MySubObject";$oSubObject)
SAVE RECORD([Test])
TRACE
UNLOAD RECORD([Test])
LOAD RECORD([Test])
$oSubObject:=OB Get([Test]TestObject;"MySubObject";Is object)
OB SET($oSubObject;"Test";200)
SAVE RECORD([Test])
UNLOAD RECORD([Test])
LOAD RECORD([Test])
最初のコードブロックで"100"がレコードに登録されます。
しかし,オブジェクト型変数を介してサブオブジェクトの値を"200"に更新しても,値は元のままです。
対策
レコードが更新されたことを示す(タッチする)ため,下記のようなコードを実行してください。
[Test]TestObject:=[Test]TestObject
例:
C_OBJECT($oSubObject)
OB SET($oSubObject;"Test";100)
CREATE RECORD([Test])
OB SET([Test]TestObject;"MySubObject";$oSubObject)
SAVE RECORD([Test])
TRACE
UNLOAD RECORD([Test])
LOAD RECORD([Test])
$oSubObject:=OB Get([Test]TestObject;"MySubObject";Is object)
OB SET($oSubObject;"Test";200)
SAVE RECORD([Test])
UNLOAD RECORD([Test])
LOAD RECORD([Test])
最初のコードブロックで"100"がレコードに登録されます。
しかし,オブジェクト型変数を介してサブオブジェクトの値を"200"に更新しても,値は元のままです。
対策
レコードが更新されたことを示す(タッチする)ため,下記のようなコードを実行してください。
[Test]TestObject:=[Test]TestObject
miyako- 投稿数 : 468
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可
|
|