4D v16.3Get subrecord key |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
Get subrecord key
Get subrecord key
Die Funktion Get subrecord key vereinfacht die Migration von 4D Code für konvertierte Untertabellen in Standardcode zum Arbeiten mit Tabellen. Zur Erinnerung: Ab 4D Version 11 werden Untertabellen nicht mehr unterstützt. Wird eine ältere Datenbank konvertiert, werden alle vorhandenen Untertabellen in Standardtabellen umgewandelt, die mit den Originaltabellen über eine automatische Verknüpfung verbunden sind. Die frühere Untertabelle wird die Viele-Tabelle, die Originaltabelle wird die Eine-Tabelle. In der Eine-Tabelle wird das frühere Untertabellenfeld in ein spezielles Feld vom Typ "Untertabelle Verknüpfung" umgewandelt. Im Viele-Feld wird ein spezielles Feld vom Typ "Untertabelle Verknüpfung" mit Namen “id_added_by_converter” hinzugefügt. Auf diese Weise können konvertierte Datenbanken weiter funktionieren. Wir empfehlen jedoch dringend, in Ihren konvertierten Datenbanken alle Funktionalitäten mit Untertabellen durch Funktionalitäten für Standardtabellen zu ersetzen. Im ersten Schritt löschen Sie die spezifischen automatischen Verknüpfungen, was die von Untertabellen geerbten Mechanismen dauerhaft deaktiviert. Danach müssen Sie den zugeordneten Code umschreiben. Hier unterstützt die Funktion Get subrecord key durch Zurückgeben der internen ID solcher Verknüpfungen. Diese interne ID macht die aktuelle Verknüpfung überflüssig und Sie können dann mit der Auswahl der bisherigen Untertabelle sogar arbeiten, wenn die Verknüpfung nicht mehr existiert. Werfen wir z.B. einen Blick auf folgende konvertierte Struktur: In 4D funktioniert der folgende Code noch, er muss aber aktualisiert werden: ALL SUBRECORDS([Employees]Children) Sie können diesen Code ersetzen durch: QUERY([Employees_Children];[Employees_Children]id_added_by_converter=Get subrecord key([Employees]Children)) Hinweis: Get subrecord key gibt 0 zurück, wenn bei der Ausführung kein aktueller Datensatz geladen wird. Der zweite Teil des Code hat den Vorteil, dass er standardmäßige 4D Befehle verwendet und auf dieselbe Weise funktioniert, egal ob die Verknüpfung besteht oder nicht. Entfernen Sie die Verknüpfung, gibt die Funktion nur den Schlüsselwert zurück, der im Feld Lange Ganzzahl gespeichert wird. Im Parameter IDFeld akzeptiert die Funktion entweder ein Feld vom Typ Untertabelle Verknüpfung (wenn die Verknüpfung noch existiert) oder vom Typ Lange Ganzzahl (wenn die Verknüpfung entfernt wurde). In allen anderen Fällen wird ein Fehler erzeugt. Auf diese Weise können Sie Übergangscode schreiben. Im letzten Stadium der Aktualisierung der Anwendung können Sie die Aufrufe dieser Funktion entfernen. Ab 4D v14 R3 können Sie dem speziellen Feld "id_added_by_converter" auch selbst einen Wert zuweisen. Dieser Wert wurde in bisherigen Releases nur von 4D verwaltet, und Sie mussten Befehle wie _o_CREATE SUBRECORD verwenden, um neue Datensätze in konvertierten Untertabellen hinzuzufügen. Mit diesem neuen Feature können Sie Ihre alten Datenbanken mit Untertabellen nach und nach konvertieren: Sie können die spezielle Verknüpfung "Untertabelle Verknüpfung" vorerst beibehalten und verknüpfte Datensätze ändern oder hinzufügen, als ob sie normale Datensätze wären. Sind dann all Ihre Methoden aktualisiert, können Sie diese spezielle Verknüpfung durch eine reguläre Verknüpfung ersetzen, ohne Ihren Code zu verändern. Sie können beispielsweise schreiben: CREATE RECORD([Employees]) Dieser Code funktioniert für spezielle und reguläre Verknüpfungen gleichermaßen.
|
EIGENSCHAFTEN
Produkt: 4D GESCHICHTE
Erstellt: 4D v12.1 ARTIKELVERWENDUNG
4D Programmiersprache ( 4D v16) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||