Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Datenbanken (https://www.delphipraxis.net/22-library-datenbanken/)
-   -   Delphi aktuellen Datensatz kopieren/duplizieren (https://www.delphipraxis.net/17291-aktuellen-datensatz-kopieren-duplizieren.html)

shmia 2. Mär 2004 17:55


aktuellen Datensatz kopieren/duplizieren
 
mit folgender Funktion kann der aktuelle Datensatz als Kopie
eingefügt werden:

Delphi-Quellcode:
procedure DuplicateCurrentRecord(aDataSet : TDataSet);
var
  Data : array of variant;
  aRecord : array of TVarRec;
  i : integer;
  max : integer;
begin
  max := aDataSet.fields.count -1;
  // set the lenghth of the arecord array to be the same as the number of
  // elements in the data array
  SetLength(arecord,max+1);
  SetLength(data,max+1);

  // set the variant type pointers to the data array
  for i := 0 to max do
  begin
    arecord[i].VType := vtVariant;
    arecord[i].VVariant := @data[i];
  end;

  // Copy the Record to the Array
  for i := 0 to max do
    Data[i] := aDataSet.fields[i].value;

  aDataSet.Append;
  aDataSet.SetFields(aRecord);
end;
Das Dataset befindet sich jetzt im Einfügemode (dsInsert).
Das Programm oder der Benutzer muss nun zumindest das
Primärschlüsselfeld abändern, sonst kann der Datensatz nicht gepostet werden.

Hier ein Beispiel:

Delphi-Quellcode:
begin
  DuplicateCurrentRecord(Table1);
  Table1['Kundennr'] := Table1['Kundennr']+'b'; // Primärschlüsselfeld ändern
  Table1.Post; // Datensatz posten
end;
[edit=Matze]Code formatiert. Mfg, Matze[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz