4D v16.3

OB Get

ホーム

 
4D v16.3
OB Get

OB Get 


 

OB Get ( object ; property {; type} ) -> 戻り値 
引数   説明
object  Object, Object Field in 構造化されたオブジェクト
property  テキスト in 情報を取得したいプロパティ名
type  倍長整数 in 値を変換したい型
戻り値  Object, テキスト, ブール, ポインター, 実数, 日付 in プロパティのカレントの値

説明   

OB Getコマンドは、 object 引数で指定したオブジェクトの property のカレントの値を返します。任意の type 引数で指定した型へと変換することもできます。

object で指定するオブジェクトは、 C_OBJECT コマンドを使用して作成されている、あるいはオブジェクトフィールドが選択されている必要があります。

注: このコマンドは (WP GET ATTRIBUTESコマンドと同様に) 4D Write Pro objects に定義されている属性をサポートします (例題9を参照ください)。しかしながら、WP GET ATTRIBUTESとは異なり、OB Get はピクチャー変数やフィールドを属性値として直接扱うことはできません。

property 引数には、情報を取得したいプロパティのラベルを渡します。property 引数では、大文字と小文字は区別されることに注意して下さい。

特に指定がなければ、 4D はプロパティの値を本来の型のまま返します。このとき、 type 引数を使用することによって返ってくる値の型を強制的に変換することができます。この場合、 type 引数には以下の定数のどれか一つを渡して下さい。これらの定数は Field and Variable Types テーマ内にあります。

定数
Is Boolean 倍長整数 6
Is date 倍長整数 4
Is longint 倍長整数 9
Is object 倍長整数 38
Is pointer 倍長整数 23
Is real 倍長整数 1
Is text 倍長整数 2
Is time 倍長整数 11

コマンドは property 引数で指定されたプロパティの値を返します。いくつかのデータの型がサポートされています。以下のことに注意して下さい:

  • ポインターはそのまま返されますが、 JSON Stringify コマンドを使用することによってポインターが指してる値に変換することができます。
  • 日付は "YYYY-MM-DDTHH:mm:ss.SSSZ" というフォーマットで返されます。
  • 実数の値において、小数点はかならずピリオド( ".")になります。
  • 時間は数字で表現されます。4Dは時間を秒単位での数字を受け取る一方、OB SET はJavaScriptスタンダードに合致するためにミリ秒単位で保存します。OB Get コマンドが保存された時間を正確に解釈するためには、Is time 定数を使用する必要があります。

テキスト型の値を取得する場合:

 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

ISO 形式のデータを日付型で取り出す場合:

 C_OBJECT($object)
 C_DATE($birthday)
 C_TEXT($birthdayString)
 OB SET($object;"Birthday";"1990-12-25T12:00:00Z")
 $birthdayString:=OB Get($object;"Birthday")
  // $birthdayString="1990-12-25T12:00:00Z"
 $birthday:=OB Get($object;"Birthday";Is date)
  // $birthday=1990/12/25

入れ子にされたオブジェクトを使用することもできます:

 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":3601000}
  // 時間はミリ秒単位で保存されています
 $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")



参照 

Field and Variable Types
OB Copy

 
プロパティ 

プロダクト: 4D
テーマ: オブジェクト(ランゲージ)
番号: 1224

This command can be run in preemptive processes

 
履歴 

初出: 4D v14
変更: 4D v15
変更: 4D v15 R4

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)