4D v16.3OB SET |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
OB SET
|
OB SET ( object ; property ; value {; property2 ; value2 ; ... ; propertyN ; valueN} ) | ||||||||
引数 | 型 | 説明 | ||||||
object | Object, Object Field |
![]() |
構造化されたオブジェクト | |||||
property | テキスト |
![]() |
設定したいプロパティの名前 | |||||
value | テキスト, 日付, ブール, ポインター, Number, Object |
![]() |
プロパティの新しい値 | |||||
OB SETコマンドは、 object 引数で指定したランゲージオブジェクトの中に、一つ以上の プロパティ/値 のペアを作成もしくは変更します。
object で指定するオブジェクトは、 C_OBJECT コマンドを使用して作成されている、あるいはオブジェクトフィールドが選択されている必要があります。
注: このコマンドは (WP SET ATTRIBUTESコマンドと同様に) 4D Write Pro objects に定義されている属性をサポートします (例題10を参照ください)。しかしながら、WP SET ATTRIBUTESとは異なり、OB SET はピクチャー変数やフィールドを属性値として直接扱うことはできません。
property 引数には、作成または修正したいプロパティのラベル(名前)を渡して下さい。object 内に指定されたプロパティが存在する場合、その値は指定した値で上書きされます。プロパティが存在しない場合、新たにプロパティが作成されます。
property 引数では、大文字と小文字は区別されることに注意して下さい。
value 引数には、プロパティに設定したい値を渡して下さい。渡せる値としては複数の型がサポートされています。渡す際には以下のことに注意して下さい:
オブジェクトを作成し、テキスト型のプロパティを追加する場合を考えます:
C_OBJECT($Object)
OB SET($Object ;"FirstName";"John";"LastName";"Smith")
// $Object = {"FirstName":"John","LastName":"Smith"}
オブジェクトを作成し、ブール型のプロパティを追加する場合を考えます:
C_OBJECT($Object)
OB SET($Object ;"LastName";"smith";"age";42;"client";True)
// $Object = {"LastName":"smith","age":42,"client":true}
プロパティを修正する場合:
// $Object = {"FirstName":"John","LastName":"Smith"}
OB SET($Object ;"FirstName";"Paul")
// $Object = {"FirstName":"Paul","LastName":"Smith"}
プロパティを追加する場合:
// $Object = {"FirstName":"John","LastName":"Smith"}
OB SET($Object ;"department";"Accounting")
// $Object = {"FirstName":"Paul","LastName":"Smith","department":"Accounting"}
プロパティの名前を変更する場合:
C_OBJECT($Object)
OB SET($Object ;"LastName";"James";"age";35)
// $Object = {"LastName":"James","age":35}
OB SET($Object ;"FirstName";OB Get($Object ;"LastName"))
// $Object = {"FirstName":""James","nom":"James","age":35}
OB REMOVE($Object ;"LastName")
// $Object = {"FirstName":""James","age":35}
ポインターを使用する場合:
// $Object = {"FirstName":"Paul","LastName":"Smith"}
C_TEXT($LastName)
OB SET($Object ;"LastName";->$LastName)
// $Object = {"FirstName":"Paul","LastName":"->$LastName"}
$JsonString:=JSON Stringify($Object)
// $JsonString="{"FirstName":"Paul","LastName":""}
$LastName:="Wesson"
$JsonString:=JSON Stringify($Object)
// $JsonString="{"FirstName":"Paul","LastName":"Wesson"}
オブジェクトを使用する場合:
C_OBJECT($ref_smith)
OB SET($ref_smith ;"name";"Smith")
C_OBJECT($ref_emp)
OB SET($ref_emp ;"employee";$ref_smith)
$Json_string :=JSON Stringify($ref_emp)
// $ref_emp = {"employee":{"name":"Smith"}} (object)
// $Json_string = "{"employee":{"name":"Smith"}}" (string)
値をプログラム実行中に変えることもできます:
OB SET($ref_smith ;"name";"Smyth")
// $ref_smith = {"employee":{"name":"Smyth"}}
$string:=JSON Stringify($ref_emp)
// $string = "{"employee":{"name":"Smyth"}}"
[Rect]Desc フィールドがオブジェクトフィールドとして定義されているとき、以下のように記述することができます:
CREATE RECORD([Rect])
[Rect]Name:="Blue square"
OB SET([Rect]Desc;"x";"50";"y";"50";"color";"blue")
SAVE RECORD([Rect])
変換された4D date を含む JSON形式のデータを書き出したい場合を考えます。変換が起きるのは日付がオブジェクトに保存されたときなので、 OB SETコマンドが呼び出される前に SET DATABASE PARAMETERコマンドを使用する必要があることに注意して下さい:
C_OBJECT($o)
SET DATABASE PARAMETER(JSON use local time;0)
OB SET($o ;"myDate";Current date) // JSON への変換
$json:=JSON Stringify($o)
SET DATABASE PARAMETER(JSON use local time;1)
4D Write Proエリアを含むフォームメソッド内に、以下のように書く事ができます:
If(Form event=On Validate)
OB SET([MyDocuments]My4DWP;"myatt_Last edition by";Current user)
OB SET([MyDocuments]My4DWP;"myatt_Category";"Memo")
End if
ドキュメントのカスタム属性を読み出す事もできます:
vAttrib:=OB Get([MyDocuments]My4DWP;"myatt_Last edition by")
プロダクト: 4D
テーマ: オブジェクト(ランゲージ)
番号:
1220
初出: 4D v14
変更: 4D v15
変更: 4D v15 R4
ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)