Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
dataClass.fromCollection( )
|
dataClass.fromCollection ( colObjets {; paramètres} ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
colObjets | Collection |
![]() |
Collection d'objets à faire correspondre à des entités | |||||
paramètres | Objet |
![]() |
Option de création : contexte | |||||
Résultat | EntitySelection |
![]() |
Sélection d'entités issue de la collection | |||||
La méthode dataClass.fromCollection( ) modifie ou crée des entités dans la dataclass en utilisant la collection d'objets colObjets et retourne la sélection d'entités correspondante.
Dans le paramètre colObjets, passez une collection d'objets destinée à créer ou à modifier des entités de la dataclass. Les noms des propriétés doivent correspondre à ceux des attributs de la dataclass. Si un nom de propriété n'existe pas dans la dataclass, il est ignoré. Si une valeur d'attribut n'est pas définie dans la collection pour une entité créée, l'attribut prend la valeur null.
La correspondance entre les objets de la collection et les entités est effectuée au niveau des noms d'attributs et de leur type de données. Si une propriété d'objet a le même nom qu'un attribut d'entité mais que leurs types ne sont pas compatibles, l'attribut de l'entité ne reçoit pas de valeur.
Mode création ou modification
Pour chaque objet de colObjets :
Note : La propriété "__KEY" permet de ne pas dépendre du nom de l'attribut clé primaire. Cette propriété n'est prise en compte que lorsque la propriété "__NEW" est fixée à Faux (ou est omise) et qu'une entité correspondante existe. Dans tous les autres cas, la valeur de la propriété "__KEY" est ignorée, la clé primaire doit être passée "telle quelle".
Entités relatives
Les objets de colObjets peuvent contenir un ou plusieurs objet(s) imbriqué(s) décrivant une ou plusieurs entité(s) relative(s), ce qui peut être utile pour créer ou modifier des relations entre les entités. Les objets imbriqués décrivant les entités relatives doivent contenir une propriété __KEY (contenant la valeur de la clé primaire de l'entité relative) ou la clé primaire de l'entité relative elle-même. L'utilisation de la propriété __KEY permet de ne pas dépendre du nom de l'attribut clé primaire.
Note : Ce mécanisme ne permet pas de créer ou de modifier les entités relatives.
Stamp
Si une propriété __STAMP est fournie, une vérification est effectuée sur le stamp (marqueur interne) de l'entité dans le datastore et une erreur est retournée en cas d'invalidité ("Le stamp ne correspond pas à celui de l'enregistrement# XX de la table XXXX"). Pour plus d'informations sur ce point, reportez-vous à la section Verrouillage d'entités.
Dans le paramètre optionnel paramètres, vous pouvez passer un objet contenant des options supplémentaires. La propriété suivante est prise en charge :
Propriété | Type | Description |
context | Texte | Nom du contexte d'optimisation appliqué à la sélection d'entités. Ce contexte sera utilisé par le code qui gère la sélection d'entités afin de bénéficier de l'optimisation. Cette fonctionnalité est conçue pour le traitement client/serveur ORDA ; pour plus d'informations, veuillez consulter la section Optimisation client/serveur . |
Nous souhaitons modifier une entité existante. La propriété __NEW n'est pas fixée, la clé primaire de l'employé est passée et existe :
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=668 //Clé primaire existante dans la dataclass Employee
$emp.firstName:="Arthur"
$emp.lastName:="Martin"
$emp.employer:=New object("ID";121) //Clé primaire existante dans la dataclass relative Company
// Nous modifions la Company de cet employé en lui assignant une autre clé primaire existante dans la dataclass relative Company
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
We want to update an existing entity. The __NEW property is not given, the employee primary key is with the __KEY attribute and exists:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.__KEY:=1720 //Existing PK in Employee table
$emp.firstName:="John"
$emp.lastName:="Boorman"
$emp.employer:=New object("ID";121) //Existing PK in the related dataClass Company
// For this employee, we can change the Company by using another existing PK in the related dataClass Company
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Création simple d'une entité à partir d'une collection :
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.firstName:="Victor"
$emp.lastName:="Hugo"
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Nous souhaitons créer une entité. La propriété __NEW est à Vrai, la clé primaire de l'employé n'est pas fournie :
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.firstName:="Mary"
$emp.lastName:="Smith"
$emp.employer:=New object("__KEY";121) //Clé primaire existante dans la dataclass relative Company
$emp.__NEW:=True
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Nous souhaitons créer une entité. La propriété __NEW n'est pas passée, la clé primaire de l'employé est fournie et n'existe pas :
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10000 //clé primaire qui n'existe pas
$emp.firstName:="Françoise"
$emp.lastName:="Sagan"
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Dans cet exemple, la première entité sera bien créée mais la seconde création échouera car les deux entités utilisent la même clé primaire :
C_COLLECTION($empsCollection)
C_OBJECT($emp;$emp2;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10001 // Clé primaire inexistante
$emp.firstName:="Simone"
$emp.lastName:="Martin"
$emp.__NEW:=True
$empsCollection.push($emp)
$emp2:=New object
$emp2.ID:=10001 // ERREUR clé primaire identique
$emp2.firstName:="Marc"
$emp2.lastName:="Smith"
$emp2.__NEW:=True
$empsCollection.push($emp2)
$employees:=ds.Employee.fromCollection($empsCollection)
//la première entité est créée
//erreur clé dupliquée pour la seconde
Produit : 4D
Thème : ORDA - DataClass
Créé : 4D v17
Modifié : 4D v17 R5
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)