Entwickler-Ecke
Datenbanken - SQL.UPDATE funzt nicht wie es sollte...
kiwicht - Mo 23.12.02 09:37
Titel: SQL.UPDATE funzt nicht wie es sollte...
Hallöle..
hab das Grundbedürfniss eines Laien-DB-Programmierers einen Datensatz in meiner Tabelle mit SQL zu ändern.
Hab das auch probiert, und zwar so:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| QueryDatenbank.Active := False; with QueryDatenbank.SQL do begin Clear; Add(´UPDATE datenbank´); Add(´SET dbfeld1 = "bla bla test"´); end; QueryDatenbank.Active := True; |
geht aber nicht.... :?
was mich nur mehr als verwundert, bzw. ärgert, ist das ich das so aus einem Buch übernommen hatte (btw Programmieren lernen in Borland Delphi 6, von Doberenz & Kowalski), wovon ich mittlerweile MEHR als enttäuscht bin...
nun ja, hoffe ihr könnt mir helfen
mfg & thx
kiwicht
ps: fehlermeldung von delphi:
Invalid field name. dbfeld1.
hab schon versucht das klein oder groß zu schreiben, nutzt nichts, ist aber def. das feld...
smiegel - Mo 23.12.02 09:46
Hallo,
versuche statt "QueryDatenbank.Active := True;" einmal "QueryDatenbank.ExecSQL;".
Mit ExecSQL führt man Anweisungen aus, die keinen Cursor auf Daten (wie z.B. INSERT, UPDATE, DELETE oder CREATE TABLE) zurückgeben.
kiwicht - Mo 23.12.02 11:16
hmm.... danke, aber klappt nit.
muss es erstensmal ohne boolean ausführn, also nur db.execsql, und dann kommt immer noch die fehlermeldung:
invalied file dbfeld1 .... :(
nachträglich:
hat das vielleicht was mit der TQueryUpdate-Komp zu tun...
hilfe.....
Udontknow - Mo 23.12.02 11:46
Hi!
Was ist denn eine TQueryUpdate-Komponente? Meinst du TQuery oder TUpdateSQL?
Zunächst mal: Was für eine Datenbank ist denn das? Interbase?
In dieser Datenbank gibt es eine Tabelle namens "datenbank"? Und in der Tabelle gibt es das Feld "DBFeld1", ja?
Der Fehler tritt auch erst zur Laufzeit auf, richtig?
Cu,
Udontknow
kiwicht - Mo 23.12.02 12:24
Ich meinte direkt die TUpdateSQL-Komponente, unter dem Reiter "BDE"
ich benutze DBase III+....
aber das tut dann auch nicht mehr zur Sache, weil ich jetzt das Prob gelöst hab, und zwar folgendermaßen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| QueryDB.Active := False; // erst die UPDATE-Proc with QueryDB.SQL do begin Clear; Add('UPDATE db SET feld1 = "bla bla"'); end; QueryDB.ExecSQL; //<- danke nochma an smiegel... // und dann getrennt davon die Aktualisierung der Anzeige... with QueryDB.SQL do begin Clear; Add('SELECT * FROM db*); end; QueryDB.Active := True; |
(Ob man die SQL-Anweisungen auch in einen do-with-block packen kann glaub ich nicht, da man ja erst die UPDATE-proc mit ExecSQL ausführen muss... egal)
und fertig is die wurst..... weiß zwar selber nicht, warums vorher nich ging, aber nun ja. tippfehler? möglich.
schlimmer find ich aber, das in meinem ach so tollemm delphi-buch über die procedure QueryDB.ExecSQL rein garnix drin steht, und das wo ich diese ja DEFINITV benötige, damit das funktioniert...... echt schwach.
auf jedenfall nochma vielen danke für die bemühungen...
mfg
kiwicht
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!