Entwickler-Ecke
Datenbanken - TIBDataset und RadStudio2007 Update verlangt Parametername
hirsch - Mi 21.09.11 16:05
Titel: TIBDataset und RadStudio2007 Update verlangt Parametername
Meine Modify bringt immer die Fehlermeldung, dass der Parametername nicht definiert sei.
RadStudio2007/Delphi per IBX auf die Interbase6.0
Was fehlt mir hier?
Mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| with Datamodule1 do begin cds.First; CDS.Active:=False; CDS.SelectSQL.Clear; CDS.SelectSQL.Add('Select * From Teil2710 WHERE ART_NR='+art+''); CDS.Active:=True; CDS.ModifySQL.Clear; CDS.ModifySQL.Add('UPDATE TEIL270 SET:ART_SCHN = :'''+SCHArt+''' WHERE ART_NR = '''+art+''''); Showmessage(CDS.ModifySQL.Text); CDS.ExecSQL; CDS.ApplyUpdates; CDS.Refresh; end; |
SQL Analysefehler:
Parametername' erwartet aufgetreten
Danke für alle Antworten.
mandras - Mi 21.09.11 16:36
UPDATE TEIL270 SET:ART_SCHN ...
Der Doppelpunkt muß weg, und der danach (vor den Quotes) auch
hirsch - Do 22.09.11 08:26
Hallo Mandras,
vielen Dank für Deinen Tipp.
Nun habe ich das da:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| with Datamodule1 do begin cds.First; CDS.Active:=False; CDS.SelectSQL.Clear; CDS.SelectSQL.Add('Select * From Teil2710 WHERE ART_NR='+art+''); CDS.Active:=True; CDS.ModifySQL.Clear; CDS.ModifySQL.Add('UPDATE TEIL2710 SET ART_SCHN = '''+SCHArt+''' WHERE ART_NR = '''+art+''''); CDS.Open; if cds.CanModify=True then Showmessage ('Canmodify ist True') else Showmessage ('Canmodify ist False'); CDS.ExecSQL; CDS.ApplyUpdates; CDS.Refresh; Showmessage('Art: '+cds.FieldByName('ART_NR').AsString+' |Grp: '+cds.FieldByName('ART_GR').AsString+' |SchnorrNr: '+cds.FieldByName('ART_SCHN').AsString); end; |
Nun bin ich etwas verwirrt, denn da ist doch das Modify, aber keine Select.
Vorher kommt aber noch, dass das canModify TRUE ist.
Das CDS.Open habe ich nur mal so zum testen reingemacht, ich denke es kann nicht schaden.
Warum ist Interbase so böse zu mir?
mandras - Fr 23.09.11 11:48
Ein CDS ist sozusagen eine IBQuery mit integriertem IBUpdate (ganz stark vereinfacht).
Das bedeutet:
Wenn es geöffnet wird wird SELECTSQL zum holen der Daten genommen,
beim Löschen eines Satzes DELETESQL etc.
In Deinem Fall würde ich die Statements mit dem DatasetEditor erzeugen
(evtl. Dein SelectSQL vorher sichern und später wieder verwenden), das Modify sieht dann etwa so aus:
"Update Teil2710 set F1 = :F1, F2 = :F2, ... where ART_NR= :ART_NR"
Dann kannst Du mittels
CDS.Edit; CDS.FieldByName ('ART_GR').AsString := "abc"; ...; CDS.Post;
den aktuellen Satz ändern. Intern bastelt das CDS dann durch Parametersubstitution aus dem ModifySQL
die passenden SQL-Befehle
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!