Announcement

Collapse
No announcement yet.

Datensatz übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datensatz übergeben

    Hallo Spezialisten!<BR>
    Wie kann ich einen kompletten Datensatz von einer Datenquelle an eine andere übergeben? z.B Query an ClientDataSet<BR>
    Der Weg:<BR>
    <I>
    ziel.FieldByName('name').AsVariant := quelle.FieldByName('name').AsVariant
    </I><BR>
    funktioniert zwar, erschein mir aber sehr mühsam, da man alle Felder separat angeben muß.<BR>
    Ein APPENDRECORD arbeitet mit einem [ARRAY OF CONST], aber welche Funktion liefert sowas zum übergeben?<BR>
    <BR>
    Danke für Hilfe.
    <BR>
    Gruß Gunnar

  • #2
    Hallo,

    wenn man alles in eine Schleife auslagert, hält sich der Aufwand in Grenzen. Das folgende Beispiel demonstriert dies mit TADODataSet (alias Recordset-Objekt von ADO):
    <pre>
    procedure TForm1.ButtonCopy2Click(Sender: TObject);
    var
    iFields : Integer;
    i : Integer;
    begin
    ADODataSet2.Append;
    with ADODataSet1 do
    begin
    iFields := FieldCount - 1;
    for i := 0 to iFields do
    if RecordSet.Fields[i].Properties['ISAUTOINCREMENT'].Value = False then
    ADODataSet2.FieldByName(Fields[i].FieldName).Assign(
    FieldByName(Fields[i].FieldName));
    end;
    ADODataSet2.Post;
    StatusBar1.SimpleText := 'Datensatz in die 2. Tabelle kopiert';
    end;
    </pre&gt

    Comment


    • #3
      Danke für die Info.<BR>
      Damit ist bestätigt, was ich vermutet hatte

      Comment


      • #4
        Hallo,

        ich muss diesen alten Thread leider nochmal aufwärmen, das Problem mit dem Kopieren eines Datensatzes war mit obiger Routine bisher bei mir gut gelöst. Nun habe ich aber einen Fall, bei dem es anscheinend nicht funktioniert:

        Bisher benutzte ich das Quell-ADODataSet mit CommandType cmdTable und hatte einzelne Sätze mit Locate gelesen, die ich anschließend kopierte. Jetzt habe ich aber einen Fall, in dem ich mit cmdText das Ergebnis einer Query weiterverarbeiten muss und dass beim Kopieren die Abfrage
        <PRE>
        QuellDataSet.Recordset.Fields[i].Properties['ISAUTOINCREMENT']
        </PRE>
        <B>immer</B> false liefert, auch bei meinem Primary Key, der als Autoincrement definiert ist und beim Zugriff über cmdTable korrekt true meldet.

        Funktioniert diese Abfrage nur bei cmdTable oder mache ich etwas falsch?

        Danke vorab für die Hilfe

        Kar

        Comment

        Working...
        X