Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v20 R7
OB Lire

OB Lire 


 

OB Lire ( objet ; propriété {; type} ) -> Résultat 
Paramètre Type   Description
objet  Objet, Champ objet in Objet structuré
propriété  Texte in Nom de la propriété à lire
type  Entier long in Type dans lequel convertir la valeur
Résultat  Expression in Valeur courante de la propriété

La commande OB Lire retourne la valeur courante de la propriété de l’objet, convertie optionnellement dans le type défini.

objet doit avoir été défini via la commande _O_C_OBJET ou désigner un champ objet 4D.

Note : Cette commande prend en charge les définitions d'attributs dans les objets 4D Write Pro, comme la commande WP LIRE ATTRIBUTS (cf. exemple 9).

Passez dans le paramètre propriété le libellé de la propriété à lire. Attention, le paramètre propriété tient compte des majuscules/minuscules. 

Par défaut, 4D retournera la valeur de la propriété dans son type d’origine. Vous pouvez "forcer" le typage de la valeur retournée à l’aide du paramètre optionnel type. Pour cela, vous pouvez passer dans type une des constantes suivantes, placées dans le thème Types champs et variables :

Constante Type Valeur
Est un booléen Entier long 6
Est un entier long Entier long 9
Est un null Entier long 255
Est un numérique Entier long 1
Est un objet Entier long 38
Est un pointeur Entier long 23
Est un texte Entier long 2
Est une collection Entier long 42
Est une date Entier long 4
Est une heure Entier long 11
Est une image Entier long 3

La commande retourne la valeur de la propriété. Plusieurs types de données sont pris en charge. A noter que :

  • un pointeur est retourné tel quel, il peut être évalué à l’aide de la commande JSON Stringify,
  • en fonction du paramétrage de la base, les dates dans les attributs d'objets sont stockées soit avec le type date, soit au format texte (à partir de 4D v16 R6). Pour plus d'informations, reportez-vous à la description de l'option "Utiliser le type date au lieu du format date ISO dans les objets" dans la section Page Compatibilité. Pour que la commande OB Lire puisse interpréter correctement une date stockée en texte, vous devez utiliser la constante Est une date (voir exemple 5).
  • dans les valeurs réelles, le séparateur décimal est toujours le point "."
  • les heures sont retournées sous forme d’un nombre. Les heures sont stockées en secondes par défaut dans les objets (cf. note de compatibilité ci-dessous).  A noter que OB FIXER stocke les heures sous forme de millisecondes, conformément au standard javascript, tandis que 4D attend un nombre de secondes. Pour une interprétation correcte par OB Lire d'une heure stockée, utilisez la constante Est une heure.

Notes de compatibilité :

  • Dans les versions antérieures à la v17, les heures étaient stockées en millisecondes dans les objets. Pour des raisons de compatibilité, cet ancien fonctionnement peut être rétabli à l'aide du sélecteur Heures dans les objets de la commande FIXER PARAMETRE BASE. Quel que soit le paramétrage, le résultat sera correct lorsque la constante Est une heure est utilisée. 
  • (4D Write Pro) Dans les versions antérieures à 4D v16 R6, lorsque propriété désignait un attribut image 4D Write Pro (comme wk image), une valeur texte contenant le data URI était toujours retournée. A compter de 4D v16 R6, les attributs image de 4D Write Pro sont toujours retournés sous forme de valeurs image. Vous devez utiliser une propriété spécifique comme wk image url pour obtenir un data URI.
  • Dans les versions de 4D antérieures à la v16 R4, lorsque la propriété contenait une valeur nulle et que le paramètre type n'était pas utilisé, 4D retournait une chaîne vide. A compter de 4D v16 R4, la constante Est un null est retournée dans ce cas. Pour assurer la compatibilité des applications, ce changement n'est effectif que si la notation objet est activée pour la base (cf. Page Compatibilité).

Récupération d’une valeur de type texte :

 C_OBJET($ref)
 C_TEXTE($prénom)
 OB FIXER($ref;"Prénom";"Harry")
 $prénom:=OB Lire($ref;"Prénom")  // $prénom = "Harry" (texte)

Récupération d’une valeur numérique convertie en entier long :

 OB FIXER($ref ;"age";42)
 $age:=OB Lire($ref ;"age") // $age est un réel (défaut)
 $age:=OB Lire($ref ;"age";Est un entier long// $age est un entier long

Récupération des valeurs d’un objet :

 C_OBJET($ref1;$ref2)
 OB FIXER($ref1;"nom";"Smith") //$ref1={"nom":"Smith"}
 OB FIXER($ref2;"fils";$ref1//$ref2={"fils":{"nom":"Smith"}}
 $fils:=OB Lire($ref2;"fils") //$fils={"name":"john"} (objet)
 $nomfils:=OB Lire($fils ;"nom") //$nomfils="john" (texte)

Modifications de l’âge d’un employé :

 C_OBJET($ref_john;$ref_jim)
 OB FIXER($ref_john;"nom";"John";"age";35)
 OB FIXER($ref_jim;"nom";"Jim";"age";40)
 AJOUTER A TABLEAU($myArray;$ref_john// on crée un tableau objet
 AJOUTER A TABLEAU($myArray;$ref_jim)
     // on passe l’âge de John de 35 à 25
 OB FIXER($myArray{1};"age";25)
     // On remplace l’âge de "John" dans le tableau
 Boucle($i;1;Taille tableau($myArray))
       Si(OB Lire($myArray{$i};"nom")="John")
          OB FIXER($myArray{$i};"age";36)  //au lieu de 25
              // $ref_john={"nom":"John","age":36}
       Fin de si
 Fin de boucle

Lorsque vous récupérez une date, la valeur résultante dépend du paramétrage courant de la base.

  • Si l'option "Utiliser le type date au lieu du format ISO dans les objets" n'est pas cochée :

 C_OBJET($object)
 C_DATE($anniv)
 C_TEXTE($chainAnniv)
 OB FIXER($object;"Anniversaire";!30/01/2010!)
 $anniv:=OB Lire($object;"Anniversaire";Est une date//30/01/10
 $chainAnniv:=OB Lire($object;"Anniversaire") //"2010-01-29T23:00:00.000Z" (Paris)

  • Si l'option "Utiliser le type date au lieu du format ISO dans les objets" est cochée :

 C_OBJET($object)
 C_DATE($anniv)
 OB FIXER($object;"Anniversaire";!30/01/2010!)
 $anniv:=OB Lire($object;"Anniversaire") //30/01/10, pas besoin de <U>Est une date</U>

Note : Pour plus d'informations sur ce paramétrage, reportez-vous à la Page Compatibilité.

Utilisation d'objets imbriqués :

 C_OBJET($ref1;$child;$children)
 C_TEXTE($childName)
 OB FIXER($ref1;"firstname";"John";"lastname";"Monroe")
     //{"firstname":"john","lastname";"Monroe"}
 OB FIXER($children;"children";$ref1)
 $child:=OB Lire($children;"children")
     //$son = {"firstname":"John","lastname":"Monroe"} (objet)
 $childName:=OB Lire($child;"lastname")
     //$childName = "Monroe" (texte)
     //ou bien
 $childName:=OB Lire(OB Lire($children;"children");"lastname")
     // $childName = "Monroe" (texte)

Récupération dans 4D d'une heure stockée dans un objet :

 C_OBJET($obj_o)
 C_HEURE($set_h;$get_h)
 
 $set_h:=?01:00:00?+1
 OB FIXER($obj_o;"myHour";$set_h)
  // $obj_o = {"myHour":3601}
  // L'heure est stockée en secondes
 $get_h:=OB Lire($obj_o;"myHour";Est une heure)
  // $get_h = ?01:00:01?

Exemples de manipulation de champs objet 4D :

  // Définir une valeur
 OB FIXER([Personnes]Identity_OB;"Prénom";$firstName)
 OB FIXER([Personnes]Identity_OB;"Nom";$lastName)
 
  // Lire une valeur
 $firstName:=OB Lire([Personnes]Identity_OB;"Prénom")
 $lastName:=OB Lire([Personnes]Identity_OB;"Nom")

Dans la méthode d'un formulaire contenant une zone 4D Write Pro, vous pouvez écrire :

 Si(Evenement formulaire=Sur validation)
    OB FIXER([MyDocuments]My4DWP;"myatt_Last edition by";Utilisateur courant)
    OB FIXER([MyDocuments]My4DWP;"myatt_Category";"Memo")
 Fin de si

Vous pouvez également lire les attributs personnalisés des documents :

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

Vous voulez connaître la taille d'une image stockée dans un objet :

 C_ENTIER LONG($vSize)
 $vSize:=Taille image(OB Lire($object;"photo";Est une image))

Note : si vous assignez le résultat de la commande à une variable image, la constante Est une image n'est pas nécessaire. Exemple :

 C_IMAGE($vPict)
 $vPict:=OB Lire($object;"photo") //"Est une image" est inutile dans ce cas



Voir aussi  

OB Copier
OB FIXER
Types champs et variables

 
PROPRIÉTÉS 

Produit : 4D
Thème : Objets (Langage)
Numéro : 1224
Nom intl. : OB Get

Commande(s) éligible(s) à l'exécution dans un process préemptif

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v14
Modifié : 4D v15
Modifié : 4D v15 R4
Modifié : 4D v16 R4
Modifié : 4D v16 R6

 
UTILISATION DE L'ARTICLE

4D - Langage ( 4D v20 R7)