| 4D v18OB Get | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v18
 OB Get 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OB Get ( object ; property {; type} ) -> 戻り値 | ||||||||
| 引数 | 型 | 説明 | ||||||
| object | Object, Object Field |   | 構造化されたオブジェクト | |||||
| property | テキスト |   | 情報を取得したいプロパティ名 | |||||
| type | 倍長整数 |   | 値を変換したい型 | |||||
| 戻り値 | 式 |   | プロパティのカレントの値 | |||||
OB Getコマンドは、 object 引数で指定したオブジェクトの property のカレントの値を返します。任意の type 引数で指定した型へと変換することもできます。
object で指定するオブジェクトは、 C_OBJECT コマンドを使用して作成されている、あるいはオブジェクトフィールドが選択されている必要があります。
注: このコマンドは (WP GET ATTRIBUTESコマンドと同様に) 4D Write Pro objects に定義されている属性をサポートします (例題9を参照ください)。
property 引数には、情報を取得したいプロパティのラベルを渡します。property 引数では、大文字と小文字は区別されることに注意して下さい。
特に指定がなければ、 4D はプロパティの値を本来の型のまま返します。このとき、 type 引数を使用することによって返ってくる値の型を強制的に変換することができます。この場合、 type 引数には以下の定数のどれか一つを渡して下さい。これらの定数は Field and Variable Types テーマ内にあります。
| 定数 | 型 | 値 | 
| Is Boolean | 倍長整数 | 6 | 
| Is collection | 倍長整数 | 42 | 
| Is date | 倍長整数 | 4 | 
| Is longint | 倍長整数 | 9 | 
| Is null | 倍長整数 | 255 | 
| Is object | 倍長整数 | 38 | 
| Is picture | 倍長整数 | 3 | 
| Is pointer | 倍長整数 | 23 | 
| Is real | 倍長整数 | 1 | 
| Is text | 倍長整数 | 2 | 
| Is time | 倍長整数 | 11 | 
コマンドは property 引数で指定されたプロパティの値を返します。いくつかのデータの型がサポートされています。以下のことに注意して下さい:
互換性に関する注記:
テキスト型の値を取得する場合:
 C_OBJECT($ref)
 C_TEXT($FirstName)
 OB SET($ref;"FirstName";"Harry")
 $FirstName:=OB Get($ref;"FirstName") // $FirstName = "Harry" (text)実数型の値を取得して、倍長整数へと変換する場合:
 OB SET($ref ;"age";42)
 $age:=OB Get($ref ;"age") //  $age は実数型(デフォルト)
 $age:=OB Get($ref ;"age";Is longint) // $age を倍長整数型に変換オブジェクトの中の値を取得する場合:
 C_OBJECT($ref1;$ref2)
 OB SET($ref1;"LastName";"Smith") // $ref1={"LastName":"Smith"}
 OB SET($ref2;"son";$ref1) // $ref2={"son":{"LastName":"Smith"}}
 $son:=OB Get($ref2;"son") // $son={"LastName":"john"} (object)
 $sonsName:=OB Get($son ;"name") // $sonsName="john" (text)従業員の年齢を二度修正したい場合:
 C_OBJECT($ref_john;$ref_jim)
 OB SET($ref_john;"name";"John";"age";35)
 OB SET($ref_jim;"name";"Jim";"age";40)
 APPEND TO ARRAY($myArray;$ref_john) // オブジェクト配列を作成
 APPEND TO ARRAY($myArray;$ref_jim)
  // John の年齢を35から25 へと修正
 OB SET($myArray{1};"age";25)
  // 配列内で"John" の年齢を修正
 For($i;1;Size of array($myArray))
    If(OB Get($myArray{$i};"name")="John")
       OB SET($myArray{$i};"age";36) // 25 から 36 へと修正
  // $ref_john={"name":"John","age":36}
    End if
 End for日付を取得する場合、結果の文字列はカレントのデータベース日付設定によります。
 C_OBJECT($object)
 C_DATE($birthday)
 C_TEXT($birthdayString)
 OB SET($object;"Birthday";!30/01/2010!)
 $birthday:=OB Get($object;"Birthday";Is date) //30/01/10
 $birthdayString:=OB Get($object;"Birthday") //"2010-01-29T23:00:00.000Z" (パリ時間) C_OBJECT($object)
 C_DATE($birthday)
 OB SET($object;"Birthday";!30/01/2010!)
 $birthday:=OB Get($object;"Birthday") //30/01/10, Is date 定数は不要注: この設定についての詳細な情報については、互換性ページを参照してください。
入れ子にされたオブジェクトを使用することもできます:
 C_OBJECT($ref1;$child;$children)
 C_TEXT($childName)
 OB SET($ref1;"firstname";"John";"lastname";"Monroe")
  //{"firstname":"john","lastname";"Monroe"}
 OB SET($children;"children";$ref1)
 $child:=OB Get($children;"children")
  //$child = {"firstname":"John","lastname":"Monroe"} (object)
 $childName:=OB Get($child;"lastname")
  //$childName = "Monroe" (text)
  // または
 $childName:=OB Get(OB Get($children;"children");"lastname")
  // $childName = "Monroe" (text)オブジェクトに保存された時間を4Dに復元する例を考えます:
 C_OBJECT($obj_o)
 C_TIME($set_h;$get_h)
 
 $set_h:=?01:00:00?+1
 OB SET($obj_o;"myHour";$set_h)
  // $obj_o = {"myHour":3601}
  // 時間は秒数単位で保存されています
 $get_h:=OB Get($obj_o;"myHour";Is time)
  // $get_h = ?01:00:01?4Dオブジェクトフィールドの使用例です:
  // 値を定義する
 OB SET([People]Identity_OB;"First name";$firstName)
 OB SET([People]Identity_OB;"Last name";$lastName)
 
  // 値を取得する
 $firstName:=OB Get([People]Identity_OB;"First name")
 $lastName:=OB Get([People]Identity_OB;"Last name")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_LONGINT($vSize)
 $vSize:=Picture size(OB Get($object;"photo";Is picture))注: コマンドの戻り値をピクチャー変数に代入する場合、Is picture 定数は必要ありません。例: 
 C_PICTURE($vPict)
 $vPict:=OB Get($object;"photo") // この場合は "is picture" は不要です
	プロダクト: 4D
	テーマ: オブジェクト(ランゲージ)
	番号: 
        1224
        
        
        
	
	初出: 4D v14
	変更: 4D v15
	変更: 4D v15 R4
	変更: 4D v16 R4
	変更: 4D v16 R6
	
	
	
	
	
	
	
	
	ランゲージリファレンス ( 4D v18)
	
	
	
	
	
 コメントを追加
コメントを追加