4D v16.3

OB Get

Página Inicial

 
4D v16.3
OB Get

OB Get 


 

OB Get ( objeto ; propriedade {; tipo} ) -> Resultado 
Parâmetro Tipo   Descrição
objeto  Objeto, Campo Objeto in Objeto estruturado
propriedade  Texto in Nome da propriedade a ler
tipo  Inteiro longo in Tipo ao qual converter o valor
Resultado  Booleano, Data, Objeto, Ponteiro, Real, Texto in Valor atual de propriedade

O comando  OB Get devolve o valor atual da propriedade do objeto, convertido opcionalmente no tipo definido.

objeto deve ter sido definido com o comando C_OBJECT ou designar um campo objeto 4D..

Nota: este comando suporta definições de atributo em objetos 4D Write Pro, como o comando WP GET ATTRIBUTES (ver o exemplo 9). Mas, diferente de WP GET ATTRIBUTES, OB Get não  permite manipular diretamente uma variável ou campo como valor de atributo.

No parâmetro propriedade, passe a etiqueta da propriedade a ler. Tenha em conta que o parâmetro propriedade é sensível a maiúsculas e minúsculas

Por padrão, 4D devolve o valor da propriedade em seu tipo original. Pode "forçar" a escritura do valor devolvido utilizando o parâmetro opcional tipo. Para isso, em tipo passe uma das seguintes constantes que se encontram no tema Tipos de campos e variáveis:

Constante Tipo Valor
Is Boolean Inteiro longo 6
Is date Inteiro longo 4
Is longint Inteiro longo 9
Is object Inteiro longo 38
Is pointer Inteiro longo 23
Is real Inteiro longo 1
Is text Inteiro longo 2
Is time Inteiro longo 11

O comando devolve o valor da propriedade. Vários tipos de dados estão suportados. Leve em conta que:

  • Um ponteiro se devolve tal qual, pode ser avaliado utilizando o comando JSON Stringify,
  • As datas se devolvem no formato "\"YYYY-MM-DDTHH:mm:.SSSZ\""
  • Em valores reais, o separador decimal é sempre um ponto "."
  • As horas se devolvem como um número. Note que OB SET armazena as horas em forma de milissegundos, conforme ao estandarte JavaScript, enquanto 4D espera um número de segundos. Para uma interpretação correta por OB Get de uma hora armazenada, deve utilizar a constante Is time.

Recuperação de um valor de tipo texto:

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

Recuperação de um valor real convertido em inteiro longo:

 OB SET($ref ;"age";42)
 $age:=OB Get($ref ;"age") // $age é um número real (default)
 $age:=OB Get($ref ;"age";Is longint// $age é um inteiro longo

Recuperação dos valores de um objeto:

 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)

Modificando a idade de um empregado duas vezes:

 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// criamos um objeto array
 APPEND TO ARRAY($myArray;$ref_jim)
  // mudamos a idade de John de 35 a 25
 OB SET($myArray{1};"age";25)
  // mudamos a idade de "John" no array
 For($i;1;Size of array($myArray))
    If(OB Get($myArray{$i};"name")="John")
       OB SET($myArray{$i};"age";36) // em troca de 25
  // $ref_john={"name":"John","age":36}
    End if
 End for

Não serialização de uma cadeia de dados com formato 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=25/12/90

Utilização de objetos aninhados:

 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)
  //o
 $childName:=OB Get(OB Get($children;"children");"lastname")
  // $childName = "Monroe" (text)

Recuperação em 4D de uma hora armazenada em um objeto:

 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}
  // The time is stored in milliseconds
 $get_h:=OB Get($obj_o;"myHour";Is time)
  // $get_h == ?01:00:01?
  // A hora é lida corretamente

Exemplos de manipulação de campos objeto 4D:

  // Definir um valor
 OB SET([People]Identity_OB;"First name";$firstName)
 OB SET([People]Identity_OB;"Last name";$lastName)
 
  // Obter um valor
 $firstName:=OB Get([People]Identity_OB;"First name")
 $lastName:=OB Get([People]Identity_OB;"Last name")

Em um método formulário, pode escrever:

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

Também pode ler os atributos personalizados dos documentos:

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



Ver também 

OB Copy
Tipos de campos e variáveis

 
PROPRIEDADES 

Produto: 4D
Tema: Objetos (Linguagem)
Número 1224

This command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D v14
Modificado: 4D v15
Modificado: 4D v15 R4

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)