Ja, ich glaube, ich weiß jetzt, was du meinst.
Mir entzieht sich im Moment zwar der Sinn deines Vorgehens, aber ich habe da eine kleine Routine für dich:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| Function DBEmpty(dts : TDataSet) : Boolean; begin Result := not dts.Active; if not Result then begin Result := dts.eof and dts.bof; end; end;
procedure KopiereAktuellenDatensatzMitAppend(qQuelle, qZiel : TDataset; Speichern : Boolean); var cnt : Integer; arr : array of variant; begin if qQuelle.Active and (not DBEmpty(qQuelle)) then begin SetLength(arr, qQuelle.FieldCount); for cnt := 0 to qQuelle.FieldCount - 1 do begin arr[cnt] := qQuelle.Fields[cnt].AsVariant; end; qZiel.Append; for cnt := 0 to qZiel.FieldCount - 1 do begin qZiel.Fields[cnt].AsVariant := arr[cnt]; end; if Speichern then begin qZiel.Post; end; end; end; |
Voraussetzungen für diese Prozedur:
- Die Ziel-Tabelle darf nicht ReadOnly sein.
- In qZiel müssen mindestens soviele Felder sein, wie in qQuelle.
- Die Felder sollten vom selben Typ sein. (Variant prüft den Typ nicht)