Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

aktuellen Datensatz kopieren/duplizieren

  Alt 2. Mär 2004, 17:55
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]
Andreas
  Mit Zitat antworten Zitat