Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
OB Get

OB Get 


 

OB Get ( Objekt ; Eigenschaft {; Typ} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
Objekt  Objekt, Objektfeld in Strukturiertes Objekt
Eigenschaft  Text in Name der zu lesenden Eigenschaft
Typ  Lange Ganzzahl in Typ, in den der Wert konvertiert werden soll
Funktionsergebnis  Ausdruck in Aktueller Wert der Eigenschaft

Die Funktion OB Get gibt den aktuellen Wert der Eigenschaft von Objekt zurück, das optional in den angegebenen Typ konvertiert wird.

Objekt muss zuvor über den Befehl _O_C_OBJECT definiert werden oder ein 4D Objektfeld angeben.

Hinweis: Dieser Befehl unterstützt Attributdefinitionen in 4D Write Pro Objekten, wie mit dem Befehl WP GET ATTRIBUTES (siehe Beispiel 9).

Im Parameter Eigenschaft übergeben Sie die Bezeichnung der einzulesenden Eigenschaft. Beachten Sie, dass Eigenschaft Groß- und Kleinschreibung berücksichtigt. 

4D gibt den Wert der Eigenschaft standardmäßig im ursprünglichen Typ zurück. Über den Parameter Typ können Sie den Typ des zurückgegebenen Werts erzwingen. Dazu übergeben Sie eine der folgenden Konstanten unter dem Thema Feld und Variablentypen:

Konstante Typ Wert
Is Boolean Lange Ganzzahl 6
Is collection Lange Ganzzahl 42
Is date Lange Ganzzahl 4
Is longint Lange Ganzzahl 9
Is null Lange Ganzzahl 255
Is object Lange Ganzzahl 38
Is picture Lange Ganzzahl 3
Is pointer Lange Ganzzahl 23
Is real Lange Ganzzahl 1
Is text Lange Ganzzahl 2
Is time Lange Ganzzahl 11

Die Funktion gibt den Wert von Eigenschaft zurück. Es werden mehrere Datentypen unterstützt. Dabei müssen Sie folgendes beachten:

  • Übergeben Sie einen Zeiger, bleibt er genauso erhalten; er wird über die Funktion JSON Stringify bewertet
  • Je nach der aktuellen Einstellung in Ihrer Datenbank wird ein Datum in Objektattributen als Datumstyp oder als Text im ISO Format gespeichert (ab 4D v16 R6). Weitere Informationen dazu finden Sie auf der Seite Kompatibilität, Option Verwende Datumstyp statt ISO Datumsformat in Objekten. Damit OB Get ein Datum korrekt als Text gespeichert interpretiert, müssen Sie die Konstante Is date verwenden (siehe Beispiel 5).
  • In Werten vom Typ Zahl ist der Dezimaltrenner immer ein Punkt "."
  • Zeit wird als Zahl zurückgegeben. In Objekten wird Zeit standardmäßig in Sekunden gespeichert (siehe nachfolgende Hinweise zur Kompatibilität). Für eine Zeitangabe im 4D Format verwenden Sie die Konstante Is time.

Hinweise zur Kompatibilität:

  • In Versionen vor v17 wurden Zeitangaben in Objekten in Millisekunden gespeichert. Zur Wahrung der Kompatibilität lässt sich über den Selector Times inside objects des Befehls SET DATABASE PARAMETER das frühere Verhalten einstellen. Das Ergebnis ist unabhängig von der Einstellung korrekt, wenn die Konstante Is time übergeben ist.
  • 4D Write Pro: Definiert Eigenschaft ein 4D Write Pro Bildattribut (wie z.B. wk image), wird in Versionen vor v16 R6 immer ein Textwert mit einer Daten URI zurückgegeben. Ab 4D v16 R6 werden 4D Write Pro Bildattribute immer als Bildwerte zurückgegeben. Sie müssen eine spezifische Eigenschaft wie wk image url angeben, um eine Daten URI zu erhalten.
  • In Versionen vor v16 R4 gibt 4D einen leeren String zurück, wenn Eigenschaft einen Nullwert enthält und der Parameter Typ nicht verwendet wird. In 4D v16 R4 und neueren Versionen wird in diesem Fall die Konstante Is null zurückgegeben. Zur Wahrung der Kompatibilität tritt diese Änderung nur ein, wenn in den Datenbank-Eigenschaften die Option Verwende Objektnotation, um auf Objekteigenschaften zuzugreifen markiert ist. Weitere Informationen dazu finden Sie auf der Seite Kompatibilität.

Einen Wert vom Typ Text zurückgeben:

 C_OBJECT($ref)
 C_TEXT($FirstName)
 OB SET($ref;"FirstName";"Harry")
 $FirstName:=OB Get($ref;"FirstName") // $FirstName = "Harry" (text)

Einen Wert vom Typ Zahl, konvertiert in Ganzzahl, wiederfinden:

 OB SET($ref ;"age";42)
 $age:=OB Get($ref ;"age") // $ageist eine Ziffer vom Typ Zahl (Standard)
 $age:=OB Get($ref ;"age";Is longint// $age ist eine Lange Ganzzahl

Die Werte eines Objekts wiederfinden:

 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)

Das Alter eines Angestellten zweimal ändern:

 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//Ein Objekt Array erstellen
 APPEND TO ARRAY($myArray;$ref_jim)
  // Das Alter für John von 35 auf 25 setzen
 OB SET($myArray{1};"age";25)
  // Das Alter von "John" im Array ersetzen
 For($i;1;Size of array($myArray))
    If(OB Get($myArray{$i};"name")="John")
       OB SET($myArray{$i};"age";36) // instead of 25
  // $ref_john={"name":"John","age":36}
    End if
 End for

Wird ein Datum gefunden, richtet sich der Ergebnisstring nach der aktuellen Datumseinstellung der Datenbank.

  • Ist die Option "Verwende Datumstyp statt ISO Datumsformat in Objekten" nicht markiert:
     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" (Paris Zeitzone)
  • Ist die Option "Verwende Datumstyp statt ISO Datumsformat in Objekten" markiert:
     C_OBJECT($object)
     C_DATE($birthday)
     OB SET($object;"Birthday";!30/01/2010!)
     $birthday:=OB Get($object;"Birthday") //30/01/10, Is date ist nicht erforderlich

Hinweis: Weitere Informationen dazu finden Sie auf der Seite Kompatibilität.

Verschachtelte Objekte verwenden:

 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")
  //$son = {"firstname":"John","lastname":"Monroe"} (object)
 $childName:=OB Get($child;"lastname")
  //$childName = "Monroe" (text)
  //or
 $childName:=OB Get(OB Get($children;"children");"lastname")
  // $childName = "Monroe" (text)

In einem Objekt gespeicherte Zeit in 4D wiedergeben:

 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}
  // Zeit wird in Sekunden gespeichert
 $get_h:=OB Get($obj_o;"myHour";Is time)
  // $get_h == ?01:00:01?

4D Objektfelder verwenden:

  // Einen Wert definieren
 OB SET([People]Identity_OB;"First name";$firstName)
 OB SET([People]Identity_OB;"Last name";$lastName)
 
  // Einen Wert erhalten
 $firstName:=OB Get([People]Identity_OB;"First name")
 $lastName:=OB Get([People]Identity_OB;"Last name")

In der Methode eines Formulars mit einem 4D Write Pro Bereich können Sie schreiben:

 If(FORM Event=On Validate)
    OB SET([MyDocuments]My4DWP;"myatt_Last edition by";Current user)
    OB SET([MyDocuments]My4DWP;"myatt_Category";"Memo")
 End if

Sie können auch eigene Attribute des Dokuments lesen:

 vAttrib:=OB Get([MyDocuments]My4DWP;"myatt_Last edition by")

Die Größe eines Bildes erfahren, das in einem Objekt Attribut gespeichert ist:

 C_LONGINT($vSize)
 $vSize:=Picture size(OB Get($object;"photo";Is picture))

Hinweis: Weisen Sie das Funktionsergebnis einer Bildvariablen zu, ist die Konstante Is picture nicht notwendig. Beispiel:

 C_PICTURE($vPict)
 $vPict:=OB Get($object;"photo") //In diesem Fall ist "is picture" nicht nötig.



Siehe auch 

Feld und Variablentypen
OB Copy
OB SET

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Objekte (Sprache)
Nummer: 1224

Dieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v14
Geändert: 4D v15
Geändert: 4D v15 R4
Geändert: 4D v16 R4
Geändert: 4D v16 R6

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)