Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
dataClass.fromCollection( )
|
dataClass.fromCollection ( objectCol {; settings} ) -> Funktionsergebnis | ||||||||
Parameter | Typ | Beschreibung | ||||||
objectCol | Collection |
![]() |
Collection von Objekten zum Abbilden mit Entities | |||||
settings | Objekt |
![]() |
Aufbauoption: Kontext | |||||
Funktionsergebnis | EntitySelection |
![]() |
Entity-Selection gefüllt aus der Collection | |||||
Die Methode dataClass.fromCollection( ) aktualisiert oder erstellt Entities in der Dataclass nach der im Parameter objectCol angegebenen Collection von Objekten und gibt die entsprechende Entity-Selection zurück.
Im Parameter objectCol übergeben Sie eine Collection von Objekten, um vorhandene Entities der Dataclass zu aktualisieren oder neue zu erstellen. Die Eigenschaftsnamen müssen dieselben sein wie die Attributsnamen in der Dataclass. Ist ein Eigenschaftsname in der Dataclass nicht vorhanden, wird er ignoriert. Ist ein Attributswert in der Collection nicht definiert, ist er null.
Die Abbildung zwischen den Objekten der Collection und den Entities erfolgt über die Attributsnamen und passenden Typen. Hat eine Eigenschaft des Objekts den gleichen Namen wie ein Attribut der Entity, aber ihre Typen passen nicht, wird das Attribut der Entity nicht gefüllt.
Modus Erstellen oder Aktualisieren
Für jedes Objekt von objectCol gilt folgendes:
Hinweis: Die Eigenschaft "__KEY" mit einen Wert wird nur berücksichtigt, wenn die Eigenschaft "__NEW" auf falsch gesetzt ist oder weggelassen wird und eine entsprechende Entity existiert. In allen anderen Fällen wird der Wert der Eigenschaft "__KEY" ignoriert, der Wert des Primärschlüssels muss wie vorgegeben übergeben werden.
Verknüpfte Entities
Die Objekte von objectCol können eine oder mehrere eingebettete Objekte enthalten mit einer oder mehreren verknüpften Entities. Diese sind hilfreich, um Links zwischen Entities zu erstellen oder aktualisieren.
Eingebettete Objekte mit verknüpften Entities müssen das Attribut ___KEY enthalten (gefüllt mit dem Primärschlüssel der verknüpften Entity) oder den Primärschlüssel der verknüpften Entity selbst. Das Attribut __KEY ermöglicht Unabhängigkeit vom Namen des Primärschlüssels.
Hinweis: Der Inhalt von verknüpften Entities lässt sich nicht durch diesen Mechanismus erstellen bzw. aktualisieren.
Stempel
Ist ein Attribut __STAMP angegeben, wird eine Überprüfung mit dem Stempel im Datastore durchgeführt und im entsprechenden Fall ein Fehler zurückgegeben ("Angegebener Stempel passt nicht zum aktuellen für Datensatz# XX der Tabelle XXXX"). Weitere Informationen dazu finden Sie im Abschnitt Entity sperren.
Im optionalen Parameter settings können Sie ein Objekt mit zusätzlichen Optionen übergeben. Folgende Eigenschaft wird unterstützt:
Eigenschaft | Typ | Beschreibung |
context | Text | Optimierungskontext für die Entity-Selection. Diesen Kontext verwendet der Code beim Verwalten der Entity-Selection, so dass sie von der Optimierung profitiert. Dieses Feature wurde zur Bearbeitung von ORDA Client/Server eingerichtet. Weitere Informationen dazu finden Sie im Abschnitt Client/Server Optimierung. |
Eine vorhandene Entity aktualisieren. Die Eigenschaft __NEW is nicht angegeben, der Primärschlüssel employee ist angegeben und existiert:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=668 //Vorhandener Pirmärschlüssel in der Tabelle Employee
$emp.firstName:="Arthur"
$emp.lastName:="Martin"
$emp.employer:=New object("ID";121) //Vorhandener Pirmärschlüssel in der verknüpften Dataclass Company
// Für diesen Angestellten können wir die Firma über einen anderen Primärschlüssel in der verknüpften Dataclass Company ändern
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Eine vorhandene Entity aktualisieren. Die Eigenschaft__NEW ist nicht angegeben, der Primärschlüssel employee hat das Attribut __KEY und existiert:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.__KEY:=1720 //Vorhandender PK in der Tabelle Employee
$emp.firstName:="John"
$emp.lastName:="Boorman"
$emp.employer:=New object("ID";121) //Vorhandender PK in der verknüpften dataClass Company
// Für diesen Angestellten können wir über einen anderen vorhandenen PK in der verknüpften dataClass Company die Firma wechseln
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Einfach eine neue Entity aus der Collection erstellen:
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)
Eine Entity erstellen. Die Eigenschaft __NEW ist Wahr, es gibt keinen Primärschlüssel employee:
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) //Vorhandener Primärschlüssel in der verknüpften Dataclass Company
$emp.__NEW:=True
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
Eine Entity erstellen. Die Eigenschaft __NEW ist nicht angegeben, der Primärschlüssel employee ist angegeben und existiert nicht:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10000 //Nicht vorhandener Primärschlüssel
$emp.firstName:="Françoise"
$emp.lastName:="Sagan"
$empsCollection.push($emp)
$employees:=ds.Employee.fromCollection($empsCollection)
In diesem Beispiel wird die erste Entity erstellt und gesichert, die zweite schlägt dagegen fehl, da beide denselben Primärschlüssel nutzen:
C_COLLECTION($empsCollection)
C_OBJECT($emp;$emp2;$employees)
$empsCollection:=New collection
$emp:=New object
$emp.ID:=10001 // Primärschlüssel existiert nicht
$emp.firstName:="Simone"
$emp.lastName:="Martin"
$emp.__NEW:=True
$empsCollection.push($emp)
$emp2:=New object
$emp2.ID:=10001 // Gleicher Primärschlüssel, existiert bereits
$emp2.firstName:="Marc"
$emp2.lastName:="Smith"
$emp2.__NEW:=True
$empsCollection.push($emp2)
$employees:=ds.Employee.fromCollection($empsCollection)
//Erste Entity wird erstellt
//Fehler wegen doppeltem Schlüssel für die zweite Entity
Produkt: 4D
Thema: ORDA - DataClass
Erstellt: 4D v17
Geändert: 4D v17 R5
4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)