Festlegen von Standardwerten (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Bearbeiten von Daten (FireDAC)

Verwenden der Ereignisbehandlungsroutine OnNewRecord

Standardmäßig werden in Delphi mit der Ereignisbehandlungsroutine OnNewRecord den Feldern eines neuen Datensatzes Vorgabewerte zugewiesen. Diese Ereignisbehandlungsroutine wird ausgelöst, nachdem die auto-inkrementierbaren Felder und die Detailfelder zum Verknüpfen von Datensätzen ihre Werte erhalten haben und die automatischen Vorgabewerte zugewiesen wurden. Die Ereignisbehandlungsroutine kann die obigen Werte überschreiben oder Anfangswerte über eine komplexe benutzerdefinierte Logik zuweisen.

Die Ereignisbehandlungsroutine kann der Datenmenge jederzeit zugewiesen werden.

Festlegen des Standardausdruckswertes

FireDAC ermöglicht das Zuweisen eines Ausdrucks zur Eigenschaft TField.DefaultExpression. Dieser Ausdruck wird einmal als Teil des Insert/Append-Methodenaufrufs ausgewertet und als Anfangswert dem entsprechenden Feld zugewiesen. Später kann dieser Wert von der Anwendung überschrieben werden. Wenn für ein Feld TField.FieldKind = fkInternalCalc angegeben ist, dann wird mit DefaultExpression der Feldwert berechnet.

Wenn einem DefaultExpression-Feld einer geschlossenen Datenmenge ein Wert zugewiesen wird, dann wird die Datenmenge automatisch aktualisiert. Wenn eine Datenmenge geöffnet ist, rufen Sie zum Aktualisieren der Änderungen die Methode UpdateAttributes auf. Zum Beispiel:

FDQuery1.Open;
...
FDQuery1.FieldByName('ObjGUID').DefaultExpression := 'NEWGUID()';
FDQuery1.UpdateAttributes;

FireDAC ruft die Standardausdrücke für eine Spalte aus dem Datenbank-Dictionary nicht automatisch ab. Am einfachsten weisen Sie zur Entwurfszeit einen Ausdruck mit dem Felder-Editor zu:

FieldsEditorAssignExpr.png

Aktualisieren des Standardwertes

FireDAC erkennt für die folgenden DBMS automatisch, dass eine Ergebnismengenspalte einen Standardwert enthält:

DBMS Beschreibung
Firebird fiMeta ist in FetchOptions.Items enthalten und ExtendedMetadata ist True.
InterBase fiMeta ist in FetchOptions.Items enthalten und ExtendedMetadata ist True.
MySQL
PostgreSQL fiMeta ist in FetchOptions.Items enthalten und ExtendedMetadata ist True.
Teradata Database fiMeta ist in FetchOptions.Items enthalten und ExtendedMetadata ist True.


Wenn FireDAC eine Spalte mit einem Standardwert erkennt, wird TField.AutoGenerateValue auf arDefault gesetzt. Geschieht das nicht, dann kann AutoGenerateValue manuell festgelegt werden. Wenn beim Hinzufügen eines neuen Datensatzes kein zugehöriger Feldwert zugewiesen wurde, dann aktualisiert FireDAC den Feldwert nach dem Eintragen eines neuen Datensatzes automatisch.