| 4D v18OB SET | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 OB SET 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OB SET ( object ; property ; value {; property2 ; value2 ; ... ; propertyN ; valueN} ) | ||||||||
| 引数 | 型 | 説明 | ||||||
| object | Object Field, Object |   | 構造化されたオブジェクト | |||||
| property | テキスト |   | 設定したいプロパティの名前 | |||||
| value | 式 |   | プロパティの新しい値 | |||||
OB SETコマンドは、 object 引数で指定したランゲージオブジェクトの中に、一つ以上の プロパティ/値 のペアを作成もしくは変更します。
object で指定するオブジェクトは、 C_OBJECT コマンドを使用して作成されている、あるいはオブジェクトフィールドが選択されている必要があります。
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日付を、タイムゾーン情報を含まない文字列に変換してJSONにデータを書き出したい場合を考えます。変換が起きるのは日付がオブジェクトに保存されたときなので、 OB SETコマンドが呼び出される前に SET DATABASE PARAMETERコマンドを使用する必要があることに注意して下さい:
 C_OBJECT($o)
 $vDateSetting:=Get database parameter(Dates inside objects) //カレントの設定を保存
 SET DATABASE PARAMETER(Dates inside objects;String type without time zone)
 OB SET($o ;"myDate";Current date) // JSON への変換
 $json:=JSON Stringify($o)
 SET DATABASE PARAMETER(Dates inside objects;$vDateSetting)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")コレクションをプロパティ値に設定する場合:
 C_OBJECT($person)
 C_COLLECTION($myCol)
 
 $person:=OB New
 $myCol:=New collection("Mike";25;"Denis";12;"Henry";4;True)
 OB SET($person;"Name";"Jones";"Children";$myCol)オブジェクトフィールドにピクチャーを保存する場合:
 C_PICTURE($vPict)
 READ PICTURE FILE("photo.jpg";$vPict)
 If(OK=1)
    OB SET([Emp]Children;"photo";$vPict)
 End if
	プロダクト: 4D
	テーマ: オブジェクト(ランゲージ)
	番号: 
        1220
        
        
        
	
	初出: 4D v14
	変更: 4D v15
	変更: 4D v15 R4
	変更: 4D v16 R4
	変更: 4D v16 R6
	
	
	
	
	
	
	
	
	ランゲージリファレンス ( 4D v18)
	
	
	
	
	
 コメントを追加
コメントを追加