Forum: Datenbanken
by Uwe Raabe,
9. Mai 2016
So ist es meiner Meinung nach etwas einfacher.
var
current: Integer;
Filterstatus: Boolean;
fld: TField;
linelist: TStringList;
datalist: TStringList;
begin
Forum: Datenbanken
by Uwe Raabe,
9. Mai 2016
Den Index musst du gar nicht speichern. Beim Laden der Datenbank aus der Datei wird das Indexfeld einfach hochgezählt und beim Speichern gibt die Reihenfolge des Index ja die Reihenfolge der Datensätze vor.
Forum: Datenbanken
by Uwe Raabe,
5. Mai 2016
Klar! Das war auch einfach nur als Alternative gedacht. Funktioniert nämlich auch, wenn die Record-Struktur der Zieltabelle anders ist (z.B. Felder dazu kommen oder wegfallen), die Feldnamen aber gleich bleiben. Nebenbei werden auch noch Read-Only Felder berücksichtigt (z.B. AutoInc-Felder). Im Original gibt es auch noch jeweils eine overloaded-Version, bei der man eine Feldnamen-Liste mitgeben...
Forum: Datenbanken
by Uwe Raabe,
5. Mai 2016
Eine direkte Methode zum verschieben von Records gibt es nicht. Es bleibt also nur das Lesen und Schriben der einzelnen Felder des jeweiligen Datensatzes. Für solche Zwecke habe ich mir mal zwei Hilfsroutinen geschrieben, mit denen man den aktuellen Datensatz einfach sichern und wieder zurückschreiben kann.
type
TRecordStore = TDictionary<string, Variant>;
TDataSetHelper = class...