Hallo...
Zitat:
Ich würde es mal mit der Eigenschaft 'AutoGenerateValue' des persistenten Feldes versuchen. Für das Identity-Feld sollte dieser Wert auf 'arAutoInc' stehen (leider macht das
ADO bzw. Delphi nicht von alleine, wenn man die Felder einliest).
...führte nur halb zum Teilziel. AutoGenerateValue funktioniert nur mit persistenten Feldern und kann nicht zur Laufzeit gesetzt werden. TField.FieldType hat auch ftAutoInc. Den dann auf das ID Feld gesetzt und es sind die ID´s nach dem Post in der Tabelle
Soweit so gut...
Delphi-Quellcode:
Table.Append;
Table.Post; // um die ID zu kriegen ...hier ist die ID auch nun da
Table.Edit;
Table... füllen (außer ID logischerweise)
Table.Post; // --> Fehler: "Der Schlüsselwert für diese Zeile wurde in der Datenquelle geändert oder gelöscht. Die lokale Zeile ist nun gelöscht "
...Die ID ist vor dem Post exakt identisch wie vor dem Edit. Es werden nur andere Felder befüllt.
Ein Workaround der durchläuft:
Delphi-Quellcode:
Table.Append;
Table.Post; // um die ID zu kriegen ...hier ist die ID auch nun da
LastID:= Table.FieldByName('ID').AsInteger; // ID merken
Table.Close;
Table.Open;
Table.Locate('ID',LastID,[]);
Table.Edit;
Table... füllen / ändern (außer ID logischerweise)
Table.Post;
Wenn das mit dem AutoInc zu tun hat futtere ich nen Besen.
Verzweiflung, weil ich mich quälen muß.
Zitat:
Irgendwie ist mein Beitrag noch nicht richtig angekommen.
Zitat:
Tja, meiner auch nicht.
... meint ihr ich ignoriere Euch ? Im Gegenteil.
Die Frage ist doch, warum
ADO so mit den AutoInc umgeht und andere Zugriffskomponenten das anders handlen. Und ein Edit + Post ist ja das normalste der Welt... nur bei
ADO nicht.
Nochmal:
Ich kann weder auf Querys ausweichen noch sonst irgendwas. Ich muß mit dem Append, Post, Edit leben ! Wenn es nach mir ging wäre
ADO schon von Anfang an weg gewesen. Das
ADO seine Eigenheiten hat ist ja hinlänglich bekannt.
Danke an alle die sich einen Kopf machen.