Datensätze kopieren in VFP und in Delphi

Delphi bietet gegenüber VFP erheblich Vorteile, was die wesentlich modernere, komfortablere Entwicklungsumgebung angeht, die Mächtigkeit der Sprache sowie auch den Erweiterungsmöglichkeiten und sogar im Datenbankbereich.

Trotzdem hat VFP natürlich auch seine Vorteile, um z.B. einen Datensatz zu kopieren, braucht es nur einen Dreizeiler:

SCATTER MEMVAR
APPEND BLANK
GATHER MEMVAR

Das wars. Sinnvollerweise sollte man AutoInc-Felder (eventuell andere Felder) ausschließen, zumindest beim Einfügen, um Konflikte zu vermeiden, das erreicht man über

GATHER MEMVAR FIELDS EXCEPT ID.

Die VFP Hilfe ist recht ausführlich, was die detaillierteren Möglichkeiten angeht.

In Delphi liest sich das Ganze etwas länger, erfüllt aber den gleichen Zweck:

Procedure CopyRecord;
var
aField: Variant;
i: Integer;
begin
// Array erstellen entsprechend den Anforderungen der Ausgangstabelle vom Typ Variant
aField := VarArrayCreate( [0, myTable.Fieldcount – 1],VarVariant);
// Feldinhalte einlesen
for i := 0 to (mytable.Fieldcount – 1) do
aField[i] := mytable.fields[i].Value;
myTable.Insert;
// Array-Werte in den neuen Datensatz schreiben
try
for i := 0 to (myTable.Fieldcount – 1) do
begin
// exemplarisch wollen wir das Feld ID, welches ein AutoInc-Feld ist ausschließen
if (mytable.Fields[i].FieldName <> ‚ID‘) then
myTable.fields[i].Value := aField[i];
end;
myTable.post;
except
on e: exception do
begin
showmessage(e.Message);
myTable.Cancel;
end;
end;
end;

Fairerweise habe ich im Unterschied zur VFP-Version hier auch einen Try-Except-Block mit eingebaut.
Obwohl länger erfüllt die Delphi-Version natürlich auch Ihren Zweck. Nicht getestet, aber das Ganze sollte natürlich auch unter Lazarus seinen Zweck tun.

Werbung & Infos:

Aktuelles Bitdefender Angebot


Verwandte Themen: