Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Hilfe mal wieder... Probs mit SQL (https://www.delphipraxis.net/32701-hilfe-mal-wieder-probs-mit-sql.html)

IOAH 27. Okt 2004 13:30


Hilfe mal wieder... Probs mit SQL
 
Hi Zusammen :-)

Ich bin hier gerade an nem Prog am werkeln und ich möchte mit einem Buttonclick dafür sorgen, dass ein neuer Eintrag in einer meiner SQL-Tabellen erledigt wird...

Ich habe jetzt als befehl eingegeben:

Code:
Insert into DMS_USERGROUP VALUES ("[Null]","[Null]","[Null]","[Null]","[Null]","[Null]","[Null]")
Dann gibt er mir eine Fehlermeldung wieder, die lautet: "Can not open a resultset"

Das Problem ist, dass er aber den Eintrag in der Datenbank macht... Kann mir vielleicht jemand sagen, wie ich das evtl. auch ohne Fehlermeldung hinbekommen würde? ;-)

Vielen Dank im Vorraus :-)

IOAH

Igotcha 27. Okt 2004 13:45

Re: Hilfe mal wieder... Probs mit SQL
 
Ich weiss ja nicht, welche DB Du benutzt, aber ein INSERT-Statement sieht eigentlich so aus:

Code:
INSERT INTO tbl_name (col1,col2) VALUES(val1, val2);
Gruß Igotcha

IOAH 27. Okt 2004 13:57

Re: Hilfe mal wieder... Probs mit SQL
 
Hmm... da hast du mich auf einen der Fehler von mir auffmerksam gemacht, danke... aber auch nachdem ich das beseitigt habe kommt die Fehlermeldung noch... Ich nutze für SQL in Delphi die Zeos-Komponenten, kennst du sie?

MfG

IOAH

Igotcha 27. Okt 2004 14:01

Re: Hilfe mal wieder... Probs mit SQL
 
Klar, die benutze ich auch :-)

Da ich keinen Code von Dir kenne, schiesse ich mal ins Blaue und sage, dass evtl. was mit dem "[NULL]"-Wert nicht stimmt. Habe nämlich noch nie NULL in einem Datensatz hinzugefügt ;-)

Wenn ein Feld bei mir NULL sein darf, dann schreibe ich da bei einem INSERT auch nichts rein.

Und übergibst Du Deine Parameter direkt im SQL-String, oder als Parameter?

Mit den Zeos-Komponenten sieht das dann so aus:

Delphi-Quellcode:
ZQ1.SQL.Text:='INSERT INTO tbl_name (col1, col2) VALUES(:val1, :val2)';
ZQ1.ParamByName('val1').AsString:='Test1';
ZQ1.ParamByName('val2').AsString:='Test2';
ZQ1.ExecSQL; // Beim Schreiben in die DB immer "ExecSQL" verwenden, beim Lesen "Open"
Gruß Igotcha

r_kerber 27. Okt 2004 14:03

Re: Hilfe mal wieder... Probs mit SQL
 
Moin IOAH,

Zitat:

Zitat von IOAH
Dann gibt er mir eine Fehlermeldung wieder, die lautet: "Can not open a resultset"

Ich kenne zwar die Zeos-Kompos nicht, aber bei den "normalen" Delphi-Kompos (TQuery,...) werden INSERT-, UPDATE- und DELETE-Befehle nicht durch Open sondern durch ExecSQL ausgeführt, da diese keine Ergebnismenge (ResultSet) zurückliefern. Open verwnedet man nur für SELECT-Anweisungen.

IOAH 27. Okt 2004 14:10

Re: Hilfe mal wieder... Probs mit SQL
 
Na ja, ich hab da jetzt mal echte werte eingegeben er spuckt immer noch diese Fehlermeldung raus, trägt es aber auch in der Datenbank ein... *grr* Verzweifle *grr*

Trotzdem danke @ Igotcha...

@ r_kerber: wie lautet denn die Syntax für ExecSQL?

MfG

IOAH

Igotcha 27. Okt 2004 14:12

Re: Hilfe mal wieder... Probs mit SQL
 
Zitat:

Zitat von IOAH
@ r_kerber: wie lautet denn die Syntax für ExecSQL?

Steht doch in meinem Post oben ;-)

ExecSQL ist eine Methode der Zeos-Query-Komponente... ah da fällt mir gerade was ein: Es gibt bei Zeos 2 Query-Komponenten. Eine davon ist readonly, benutzt Du diese evtl?

Gruß Igotcha

Jasocul 27. Okt 2004 14:24

Re: Hilfe mal wieder... Probs mit SQL
 
Ich bin mir ziemlich sicher, dass du ZQ1.Open schreibst.
Stattdessen musst du ZQ1.ExecSQL schreiben.

IOAH 28. Okt 2004 11:18

Re: Hilfe mal wieder... Probs mit SQL
 
ES KLAPPT!!!

Danke Leute :-)


IOAH


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:26 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