Ändern von Datenmengendaten (FireDAC)
Nach oben zu Bearbeiten von Daten (FireDAC)
Inhaltsverzeichnis
FireDAC-Datenmengen, einschließlich TFDQuery, TFDTable, TFDStoredProc und TFDMemTable, unterstützen das Einfügen, Bearbeiten und Löschen von Datensätzen mithilfe von Standard-TDataSet-Methoden. Für FireDAC-Datenmengen ist das Bearbeiten und Eintragen von Aktualisierungen standardmäßig aktiviert.
Steuern der Bearbeitung
Die Bearbeitung von Datenmengen ist aktiviert, wenn UpdateOptions.ReadOnly False ist. Die folgenden Operationen sind aktiviert:
- Anhängen, wenn UpdateOptions.EnableInsert True ist:
FDQuery1.Append;
FDQuery1.FieldsByName('id').AsInteger := 100;
FDQuery1.FieldsByName('name').AsString := 'Audi A6';
FDQuery1.Post;
- Bearbeiten, wenn UpdateOptions.EnableUpdate True ist:
FDQuery1.Edit;
FDQuery1.FieldsByName('name').AsString := 'Audi A6 Avant';
FDQuery1.Post;
- Löschen, wenn UpdateOptions.EnableDelete True ist:
FDQuery1.Delete;
Um zu vermeiden, dass beim Aufruf von Post die Meldung "Feldwert erforderlich" ausgegeben wird, setzen Sie UpdateOptions.CheckRequired auf False (die Vorgabe ist True).
Eintragen von Aktualisierungen
Zum Eintragen von Aktualisierungen in eine Datenbank generiert FireDAC automatisch SQL-Aktualisierungsanweisungen, wenn die ursprüngliche SQL-Abfrage folgende Bedingungen erfüllt:
- Es muss sich um eine SELECT-Anweisung handeln.
- Die erste Tabelle in der FROM-Klausel muss den Primärschlüssel (Primary Key, PK) beibehalten.
- Die PK-Felder müssen in der SELECT-Liste enthalten sein.
- Die SELECT-Anweisung darf die Klauseln DISTINCT, GROUP BY, UNION usw. nicht enthalten. Hierbei handelt es sich um eine logische Regel, nicht um "ein Muss".
Außerdem müssen die richtigen Metadaten, einschließlich eindeutiger Kennzeichnungsfelder, vorhanden sein. Am einfachsten wird das automatische Eintragen von Aktualisierungen für TFDQuery durch Setzen von UpdateOptions.RequestLive auf True (Vorgabe ist True) erreicht. Es gibt keine automatisierte Möglichkeit, um zu überprüfen, ob eine Abfrage aktualisierbar ist. Der Programmierer muss dies selbst abschätzen.
Wenn die Abfrage die obigen Regeln nicht erfüllt oder wenn die Eintragungen von der Anwendung überschrieben werden, dann können Sie die Komponente TFDUpdateSQL oder die Ereignisbehandlungsroutine OnUpdateRecord verwenden.
Die Aktualisierungen können sofort mit den Methoden Post oder Delete in eine Datenbank eingetragen werden, oder sie können zwischenspeichert und später eingetragen werden. Das Eintragen von verzögerten Aktualisierungen kann zusammen mit Offline-Verbindungen verwendet werden.
Leeren von Datenmengen
Eine Datenmenge kann effektiv ohne Aufzeichnen einer Datensatzlöschung und Eintragen der Löschung in eine DB geleert werden. In den meisten Fällen ist dies für Datenmengen im Arbeitsspeicher geeignet. Verwenden Sie eine der folgenden Methoden, um eine Datenmenge zu leeren:
- EmptyDataSet – entfernt alle Datensätze aus der Datenmenge.
- EmptyView – entfernt nur die Datensätze, auf die nach Anwendung eines Filters, eines Bereichs usw. zugegriffen werden kann.
Siehe auch
- Eindeutige Kennzeichnungsfelder
- Generieren von Aktualisierungsanweisungen
- Überschreiben von Eintragsaktualisierungen
Beispiele
- FireDAC TFDQuery OnUpdateRecord (Beispiel)