Neue Datensätze hinzufügen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Daten ändern


Damit eine Anwendung Datensätze hinzufügen kann, muss sich die Datenmenge im Modus dsInsert befinden. Sie können im Quelltext die Methoden Insert oder Append verwenden, um eine Datenmenge in den Status dsInsert zu versetzen, falls die Nur-Lesen-Eigenschaft CanModify der Datenmenge den Wert True hat.

Beim Übergang einer Datenmenge in den Modus dsInsert empfängt diese ein Ereignis vom Typ BeforeInsert. Nachdem dieser Übergang erfolgreich abgeschlossen wurde, empfängt die Datenmenge zunächst ein Ereignis vom Typ OnNewRecord und danach eines vom Typ AfterInsert. Diese Ereignisse können z.B. zum Eintragen von Anfangswerten in neu eingefügte Datensätze verwendet werden:

 procedure TForm1.OrdersTableNewRecord(DataSet: TDataSet);
 begin
   DataSet.FieldByName('OrderDate').AsDateTime := Date;
 end;
 void __fastcall TForm1::OrdersTableNewRecord(TDataSet *DataSet)
 {
   DataSet->FieldByName("OrderDate")->AsDateTime = Date();
 }

In Formularen einer Anwendung können datensensitive Gitter- und Navigator-Steuerelemente eine Datenmenge unter folgenden Voraussetzungen in den Status dsInsert versetzen:

  • Die Eigenschaft ReadOnly des Steuerelements ist auf False gesetzt (Voreinstellung);
  • CanModify hat für die Datenmenge den Wert True.

Hinweis:  Selbst wenn sich eine Datenmenge im Status dsInsert befindet, kann das Hinzufügen von Datensätzen bei SQL-Datenbanken dennoch scheitern, wenn der Benutzer der Anwendung nicht über die geeigneten SQL-Zugriffsberechtigungen verfügt.

Wenn sich eine Datenmenge im Modus dsInsert befindet, kann ein Benutzer oder eine Anwendung Werte in die Felder des neuen Datensatzes eingeben. Außer bei Gittern und Navigatoren gibt es für den Benutzer keinen sichtbaren Unterschied zwischen Insert und Append. Bei einem Aufruf von Insert erscheint im Gitter über dem vorher aktuellen Datensatz eine leere Zeile. Ein Aufruf von Append hat einen Bildlauf zum letzten Datensatz im Gitter zur Folge. Am unteren Ende des Gitters wird eine leere Zeile eingefügt, und in allen mit der Datenmenge verbundenen Navigator-Komponenten werden die Schaltflächen Next und Last deaktiviert.

Im Einfügemodus rufen datensensitive Steuerelemente automatisch die Methode Post auf, wenn ein Benutzer eine Aktion ausführt, die den aktuellen Datensatz wechselt. Dies ist z.B. der Fall, wenn eine Bewegung zu einem anderen Datensatz im Gitter erfolgt. Ansonsten muss zum Eintragen der Änderungen Post aufgerufen werden.

Post schreibt den neuen Datensatz in die Datenbank. Wenn die aktualisierten Datensätze in einem Cache zwischengespeichert werden, werden die Änderungen zunächst in einen temporären Puffer geschrieben. Rufen Sie die Methode ApplyUpdates auf, um im Cache zwischengespeicherte eingefügte und angehängte Datensätze in die Datenbank zu schreiben.

Datensätze einfügen

Die Methode Insert öffnet vor dem aktuellen Datensatz einen neuen, leeren Datensatz. Dieser neue Datensatz wird gleichzeitig zum aktuellen Datensatz, so dass die Eingabe von Feldwerten durch den Benutzer oder die Anwendung möglich ist.

Wenn eine Anwendung die Methode Post (bzw. ApplyUpdates, wenn die Aktualisierungen im Cache zwischengespeichert werden) aufruft, wird ein neu eingefügter Datensatz auf folgende Weise in die Datenbank geschrieben:

  • Bei indizierten Paradox- und dBASE-Tabellen wird der Datensatz an der Position in die Datenmenge eingefügt, die sich anhand seines Index ergibt.
  • Bei nicht indizierten Paradox- und dBASE-Tabellen wird der Datensatz an seiner aktuellen Position in die Datenmenge eingefügt.
  • Bei SQL-Datenbanken ist die Einfügeposition von der Implementierung abhängig. Wenn die Tabelle indiziert ist, wird der Index mit der neuen Datensatzinformation aktualisiert.

Datensätze anhängen

Die Methode Append öffnet am Ende der Datenmenge einen neuen leeren Datensatz und macht ihn zum aktuellen Datensatz. Der Benutzer oder eine Anwendung können dann Feldwerte in diesen Datensatz eingeben.

Wenn eine Anwendung die Methode Post (bzw. ApplyUpdates, wenn die Aktualisierungen im Cache zwischengespeichert werden) aufruft, wird ein an die Datenmenge angehängter Datensatz auf folgende Weise in die Datenbank geschrieben:

  • Bei indizierten Paradox- und dBASE-Tabellen wird der Datensatz an der Position in die Datenmenge eingefügt, die sich anhand seines Index ergibt.
  • Bei nicht indizierten Paradox- und dBASE-Tabellen wird der Datensatz am Ende der Datenmenge hinzugefügt.
  • Bei SQL-Datenbanken ist die physikalische Position des Datensatzes von der jeweiligen Implementierung abhängig. Wenn die Tabelle indiziert ist, wird der Index mit der neuen Datensatzinformation aktualisiert.

Siehe auch

Codebeispiele