Autor Beitrag
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Mo 23.12.02 09:37 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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.

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
kiwicht Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: 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:
ausblenden 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