Einzelnen Beitrag anzeigen

Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#19

AW: Datensatz in einer Datenbank kopieren

  Alt 28. Jun 2012, 14:27
Wenn Du in einem Event den Datensatzzeiger veränderst, dann passiert genau das: Obskurer und sporadischer Verlust des Einfügemodus.

Ich würde mir eine kleines Projekt bauen, das das Problem beschreibt, also z.B.:
1x Form, 1x Button (zum Start des Tests) 1x CDS, 1x Beispieldaten. Von mir aus noch ne Datasource und ein Grid, damit man die Daten sieht.

Im Click-Event des Buttons dann der Code, der den aktuellen Record ans Ende dupliziert. Sonst nix! Probieren.

Gehts? Aha, liegt der Fehler wohl woanders.
Geht nicht? Dann stell dein Projekt hier rein und andere sehen, ob sie das reproduzieren können oder einen robusten Workaround parat haben.

Wenn Du alle Probleme, bei denen Du nicht sofort weiterkommst, mit der Holzfällermethode umgehst, na denn 'Gute Nacht'.

Mein Versuch wäre:
Delphi-Quellcode:
Procedure DuplicateRecord(aDS : TDataset);
Var
  Data : Array Of Variant;
  I : Integer;

Begin
  SetLength (Data, aDS.FieldCount);
  For i:=0 to aDS.FieldCount - 1 do
    Data[i] := aDS.Fields[i].Value;
  aDS.Append;
  For i:=0 to aDS.FieldCount - 1 do
    If CanCopyField(aDS.Fields[i]) then
      aDS.Fields[i].Value := Data[i];
  aDS.Post;
End;
Wenn Das nicht geht, liegst am CDS (glaube ich nicht) oder an erwähnten Seiteneffekten (Events, OnCalcField etc.)
Ja, der Code ist fast identisch mit dem von mschaefer. Hab ich eben erst gemerkt.
  Mit Zitat antworten Zitat