Makros und Programme einsetzen

Datensätze schreiben

Top  Previous  Next

Datensätze das Ändern und Anfügen von Datensätzen geschieht jeweils in drei Stufen. Die erste Stufe startet die Aktion mit NewRec für neue Datensätze beziehungsweise ModifyRec zum Ändern eines vorhandenen Datensatzes. In der zweiten Stufe werden die einzelnen Felder belegt und in der dritten der Datensatz mit PostRec in die Tabelle geschrieben. Damit sieht das Anfügen eines Datensatzes folgendermaßen aus:

NewRec(MYTABLE);
MYTABLE.Vorname := 'Klaus';
MYTABLE.Nachname := 'Maier';
PostRec(MYTABLE);

Wenn das PostRec unterbleibt hat die gesamte Aktion keinen Effekt. Zum Ändern (im Beispiel des ersten Datensatzes) gehen Sie so vor:

MoveBegin(MYTABLE);
ModifyRec(MYTABLE);
MYTABLE.Vorname := 'Otto';
MYTABLE.Nachname := 'Kunze';
PostRec(MYTABLE);

Zu diesem Vorgehen gibt es eine Alternative, mit der Datensätze in einer einzigen Anweisung geändert oder angefügt werden können.

Replace MYTABLE(Vorname := 'Otto', Nachname := 'Kunze');
Append MYTABLE(Vorname := 'Klaus', Nachname := 'Maier');

In älteren Versionen waren die Funktionen NewRec, ModifyRec und PostRec noch nicht verfügbar. Hier gab es Datensatz-bezogene Funktionen, die auch in TurboDB Studio noch unterstützt werden. Bei diesen Funktionen wird als zweites Argument die physikalische Satznummer angegeben, deshalb ändert das folgende Beispiel den fünften Datensatz der Tabelle.

ReadRec(MYTABLE, 5);
MYTABLE.Vorname := 'Otto';
MYTABLE.Nachname := 'Kunze';
WriteRec(MYTABLE, 5);

Beachten Sie hier, dass die Satznummer bei WriteRec mit der Satznummer bei ReadRec übereinstimmt. Andernfalls werden unter Umständen wichtige Daten überschrieben.

Anders als bei ModifyRec sperrt ReadRec den gelesenen Datensatz nicht. Deshalb müssen Sie diese Variante in einem Mehrbenutzer-Umfeld noch mit einer expliziten Satzsperre versehen:

ReadRec(MYTABLE, 5);
EditOn(MYTABLE);
MYTABLE.Vorname := 'Otto';
MYTABLE.Nachname := 'Kunze';
WriteRec(MYTABLE, 5);
EditOff(MYTABLE)

Zum Anhängen eines neuen Datensatzes, lesen Sie in der ersten Version den Datensatz mit der virtuellen Nummer 0. Dadurch wird ein neuer Datensatz angelegt:

ReadRec(MYTABLE, 0);
MYTABLE.Vorname := 'Klaus';
MYTABLE.Nachname := 'Maier';
WriteRec(MYTABLE, LastRec(MYTABLE)+1);

Gegenüber der Methode mit NewRec ist der Nachteil hier, dass ReadRec mit der Datensatz-Nummer 0 weder Vorgabewerte noch eine Auto-Nummer in den Datensatz einträgt. Dadurch können Sie mit dem neuen Datensatz keine anderen Datensätze über Koppel- und Relationsfelder verknüpfen.

Siehe auch

NewRec, ModifyRec, PostRec, Replace, Append, ReadRec, WriteRec