Komplette Datensätze bearbeiten
Nach oben zu Daten ändern
In Formularen ermöglichen alle datensensitiven Steuerelemente mit Ausnahme von Gittern und Navigatoren den Zugriff auf einzelne Felder eines Datensatzes.
Im Quelltext können Sie dazu die Methoden aus der folgenden Tabelle verwenden. Diese Methoden arbeiten mit kompletten Datensatzstrukturen, vorausgesetzt, die Struktur der zugrunde liegenden Datenbanktabellen ist stabil und ändert sich nicht. Die folgende Tabelle fasst die Methoden zusammen, die eine Bearbeitung kompletter Datensätze (und nicht nur einzelner Felder) ermöglichen.
Methoden zur Bearbeitung kompletter Datensätze :
Methode | Beschreibung |
---|---|
AppendRecord([Array mit Werten]) |
Hängt einen Datensatz mit den angegebenen Spaltenwerten am Ende der Tabelle an. Entspricht der Methode Append. InsertRecord hat einen impliziten Aufruf von Post zur Folge. |
InsertRecord([Array mit Werten]) |
Fügt die angegebenen Werte als Datensatz vor der aktuellen Cursor-Position in eine Tabelle ein. Entspricht der Methode Insert. InsertRecord hat einen impliziten Aufruf von Post zur Folge. |
SetFields([Array mit Werten]) |
Setzt die Werte der entsprechenden Felder. Dies entspricht der Zuweisung von Werten an TFields. Die Anwendung muss die Methode Post explizit ausführen. |
Bei diesen Methoden wird ein Array aus Werten als Argument verwendet. Dabei entspricht jeder Wert einer Spalte in der zugrunde liegenden Datenmenge. Diese Werte können Literale, Variablen oder NULL sein. Wenn die Zahl der Werte in einem Argument die Anzahl der Spalten in der Datenmenge unterschreitet, wird für die restlichen Werte NULL angenommen.
Bei nicht indizierten Datenmengen fügt AppendRecord einen Datensatz am Ende der Datenmenge an, während InsertRecord ihn nach der aktuellen Cursor-Position einfügt. Bei indizierten Datenmengen wird der Datensatz jeweils an der geeigneten Stelle in die Tabelle eingefügt, wobei die Position anhand des Index ermittelt wird. In jedem Fall wird der Cursor anschließend auf die Position des Datensatzes gesetzt.
SetFields weist den Feldern der Datenmenge die Werte zu, die im Parameter-Array angegeben sind. Vor der Verwendung von SetFields muss die Datenmenge durch einen Aufruf von Edit in den Modus dsEdit versetzt werden. Nach Durchführung der Änderungen am aktuellen Datensatz muss die Methode Post ausgeführt werden.
Sie können SetFields einsetzen, um nur bestimmte Felder eines vorhandenen Datensatzes zu ändern. Dazu übergeben Sie NULL für Felder, deren Inhalt nicht geändert werden soll. Wenn Sie nicht genügend Werte für alle Felder eines Datensatzes angeben, weist SetFields diesen Feldern NULL zu. Werte, die sich bereits in diesen Feldern befinden, werden durch Null-Werte ersetzt.
Beispiel: Eine Datenbank enthält die Tabelle COUNTRY mit Spalten für Name, Capital, Continent, Area und Population. Wenn mit dieser Tabelle eine Komponente vom Typ Bde.DBTables.TTable mit dem Namen CountryTable verknüpft würde, könnten Sie mit der folgenden Anweisung einen Datensatz in die Tabelle einfügen:
CountryTable.InsertRecord(['Japan', 'Tokyo', 'Asia']);
CountryTable->InsertRecord(ARRAYOFCONST(("Japan", "Tokyo", "Asia")));
Da diese Anweisung keine Werte für Area und Population festlegt, werden für diese Spalten Null-Werte eingefügt. Da die Tabelle anhand der Spalte Name indiziert ist, wird der Datensatz an der Stelle eingeordnet, an der "Japan" alphabetisch steht.
Mit den folgenden Anweisungen kann eine Anwendung den Datensatz aktualisieren:
with CountryTable do begin if Locate('Name', 'Japan', loCaseInsensitive) then; begin Edit; SetFields(nil, nil, nil, 344567, 164700000); Post; end; end;
TLocateOptions SearchOptions; SearchOptions->Clear(); SearchOptions << loCaseInsensitive; if (CountryTable->Locate("Name", "Japan", SearchOptions)) { CountryTable->Edit(); CountryTable->SetFields(ARRAYOFCONST(((void *)NULL, (void *)NULL, (void *)NULL, 344567, 164700000))); CountryTable->Post(); }
Mit diesem Quelltext wird den Feldern Area und Population Werte zugewiesen, anschließend werden die Änderungen in die Datenbank zurückgeschrieben. Die drei NULL-Zeiger dienen als Platzhalter für die drei ersten Spalten, sodass deren aktueller Inhalt beibehalten wird.