Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem mit clientdataset (https://www.delphipraxis.net/181056-problem-mit-clientdataset.html)

Natcree 11. Jul 2014 02:18

Problem mit clientdataset
 
Hallo ich möchte in ein bestehendes Clientdataset ein Feld hinzufügen. Dazu speicher ich vorher die daten aus dem clientdataset in ein anderes. Danach soll ein Feldhinzugügt werden. Anschließend sollen die daten wieder zurück ins erste Clientdataset. Nunmehr mal funktioniert es mal nicht. Er gibt mir immer fehlermeldung das ich das Feld ID (autoinc feld) nicht modifizieren kann. und bricht ab. Hier mal der code

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
y,i:integer;
begin
ClientDataSet2.Data:=ClientDataSet1.Data; //kopiere Datenmenge
ClientDataSet1.Close;
ClientDataSet1.FieldDefs.Add('TMPFELD',ftString,20 ); //neues Feld hinzufügen
ClientDataSet1.CreateDataSet;
ClientDataSet1.Open;
for y:=0 to ClientDataSet2.RecordCount-1 do // Jetzt die alten Daten zurück kopieren
begin
ClientDataSet1.Append;
for i:=0 to ClientDataSet2.FieldCount-1 do
ClientDataSet1.Fields.Fields[i]:=ClientDataSet2.Fields.Fields[i];
clientdataset1.Post;
end;
end;
wenn keine daten drinne stehen kommt keine id modi... Meldung

mkinzler 11. Jul 2014 06:45

AW: Problem mit clientdataset
 
Warum machrst Du eine Kopie? Und warum kiopierst Du die Daten dann zurück?

Durch Erzeugen einer Kopie wird ja eine Kopie erzeugt, das Original bleibt unberührt. Beim Kopieren wird dann versucht identische Datensätze zu schreiben ( da ja alles schon vorhanden ist) was zu doppelten Datensätzen ( wenn keine Constraints vorhanden sind) oder einer Fehlermeldung führen kann.

Dein Fehler hat damit zu tun, dass du versuchst das Feld ID versuchst zu Kopieren ( ist autoinc)

Natcree 19. Jul 2014 21:56

AW: Problem mit clientdataset
 
also habe eine tool gebastelt ich habe fest gestellt das er nur ein problem mit dem autoinc feld hat nun speicher ich die daten in ein stringlist. dann mache ich eine kopie des 1. clientdataset in ein weiteres und füge ein spalte hinzu. nun kopiere ich den inhalt aus der stringlist bis auf die spalte mit den autoinc feldern die werden automatisch generiert und schon klappt es. sicherlich ein wenig umständlich aber es geht.. hat noch jemand ne andere idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz