procedure insert

Syntax:
procedure insert;


Beschreibung:

Die Methode Insert fügt einen neuen leeren Datensatz in die Datenmenge ein.

Insert führt folgende Aktionen durch:

1 Ein neuer leerer Datensatz wird in der Datenmenge geöffnet. 2 Der neue wird zum aktiven Datensatz gemacht.

Nach dem Aufruf von Insert können die Benutzer Daten in die Felder des neuen Datensatzes eingeben und anschließend die Änderungen mit Post in die Datenbank oder das Änderungsprotokoll eintragen. (Client-Datenmengen können die zwischengespeicherten Änderungen danach durch einen Aufruf von ApplyUpdates in die Datenquelle eintragen.) Ein neu eingefügter Datensatz wird auf eine von drei Arten in die Datenbank eingetragen:

Bei Paradox-Tabellen mit Primärindex wird der Datensatz anhand seiner Indexposition in die Datenmenge eingefügt. Bei Paradox-Tabellen ohne Primärindex wird der Datensatz an der aktuellen Position in die Datenmenge eingefügt. Bei dBASE-, FoxPro- und Access-Tabellen wird der Datensatz physikalisch am Ende der Datenmenge hinzugefügt. Wenn ein Index aktiv ist, kann der Datensatz anhand seiner Indexposition angezeigt werden, er ist aber tatsächlich am Ende der Tabelle gespeichert.

Bei SQL-Datenbanken ist die physikalische Position des Datensatzes von der jeweiligen Implementierung abhängig. Ist die Tabelle indiziert, wird der Index mit den neuen Datensatzinformationen aktualisiert.
Beispiel:

//In diesem Beispiel wird über das Ereignis BeforeInsert eine Datenprüfung implementiert. //Löst die Funktion StrToInt eine Exception aus, wird der Inhalt des Eingabefeldes auf einen gültigen Wert zurückgesetzt, //damit die Zuordnung zum Integerfeld in der Datenmenge erfolgreich durchgeführt werden kann.

procedure TForm1.ClientDataSet1BeforeInsert(DataSet: TDataSet);

begin try { Sicherstellen, dass Eingabefeld in Integer konvertiert werden kann. Andernfalls wird Exception ausgelöst. } StrToInt(Edit1.Text); except Edit1.Text := '0'; end; end;

procedure TForm1.Button1Click(Sender: TObject); begin ClientDataSet1.Insert; ClientDataSet1.FieldByName('QUANTITY').AsInteger := StrToInt(Edit1.Text); ClientDataSet1.Post;

end;