Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war? (https://www.delphipraxis.net/130052-abfragen-ob-sql-query-mit-ibx-komponente-erfolgreich-war.html)

Tempdir 2. Mär 2009 16:38

Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX

Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war?
 
Hallo,

ich suche verzweifelt nach einer Möglichkeit abzufragen ob z.B. eine INSERT-Query erfolgreich durchgeführt, und der Datensatz gespeichert wurde.

Hier eine Beispiel-Query:

SQL-Code:
   
IBQuery1.Close;
IBQuery1.SQL.Text := 'INSERT INTO TESTTABLE FIELD1 VALUES (12345)';
IBQuery1.Open;
Die Query wird erfolgreich ausgeführt und der Datensatz auch gespeichert.
Mit Try/Except möchte ich nicht arbeiten, da es vielleicht Sekunden dauern kann bis ein eventuell fehlgeschlagener INSERT gemeldet wird (z.B. ausgelasteter Server...).

Besten Dank!

DeddyH 2. Mär 2009 16:43

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Verwende ExecSQL statt Open. Und dann versuche einmal, RowsAffected Deines Query abzufragen (ich nehme einfach mal an, dass es das bei IBQuery auch gibt).

Tempdir 2. Mär 2009 16:53

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Funktioniert - DANKE ! Hoffe das ist zuverlässig :)

Noch eine kleien Zusatzfrage:

Wie verwende ich STRINGS bei folgender Zuweisung:

SQL-Code:
IBQuery1.SQL.Text := 'INSERT INTO TESTTABLE FIELD1 VALUES ('Ich Bin ein String')';
Leider klappt das so wie oben gezeigt nicht, kann man die Semikolons irgendwie "escapen" ?

DANKE!

DataCool 5. Mär 2009 20:43

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Hi,

SQL-Code:
IBQuery1.SQL.Text := 'INSERT INTO TESTTABLE FIELD1 VALUES (''Ich Bin ein String'');';
Greetz Data

mkinzler 5. Mär 2009 20:46

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Oder mit (SQL-)Parameter
Delphi-Quellcode:
IBQuery1.SQL.Text := 'INSERT INTO TESTTABLE FIELD1 VALUES (:str);';
...
IBQuery1.ParamByName('str').Value := 'Ich bin ein String';

Tempdir 10. Mär 2009 12:56

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Perfekt - Danke! Das mit den Parametern scheint zu funktionieren, zumindest gehen schonmal 16 Parameter. Ich melde mich nachher wieder mit dem Resultat :)

Tempdir 10. Mär 2009 13:04

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Schlecht :( Mit den Parametern kann ich nur 18 Parameter definieren, dann passiert das gleiche wie oben, TdbQuery1.SQL.Text ist einfach leer.

Delphi-Quellcode:
TdbQuery1.SQL.Text := 'INSERT INTO welddata (column2,column3,column4,column5,column6,column7,column8,column9,column10,column11,column12,column13,column14,column15,column16,column17,column18,column19) VALUES (:v2,:v3,:v4,:v5,:v6,:v7,:v8,:v9,:v10,:v11,:v12,:v13,:v14,:v15,:v16,:v17,:v18,:v19);';

TdbQuery1.ParamByName('v2').Value := '5644';
TdbQuery1.ParamByName('v3').Value := '5644';
TdbQuery1.ParamByName('v4').Value := '5644';
TdbQuery1.ParamByName('v5').Value := '5644';
TdbQuery1.ParamByName('v6').Value := '5644';
TdbQuery1.ParamByName('v7').Value := '5644';
TdbQuery1.ParamByName('v8').Value := '5644';
TdbQuery1.ParamByName('v9').Value := '5644';
TdbQuery1.ParamByName('v10').Value := '5644';
TdbQuery1.ParamByName('v11').Value := '5644';
TdbQuery1.ParamByName('v12').Value := '5644';
TdbQuery1.ParamByName('v13').Value := '5644';
TdbQuery1.ParamByName('v14').Value := '5644';
TdbQuery1.ParamByName('v15').Value := '5644';
TdbQuery1.ParamByName('v16').Value := '5644';
TdbQuery1.ParamByName('v17').Value := '5644';
TdbQuery1.ParamByName('v18').Value := '5644';
TdbQuery1.ParamByName('v19').Value := '5644';
Exception-Meldung: Tdbquery1: Parameter 'v2' nicht gefunden.

Echt merkwürdig. Irgendwie scheint da was begrenzt zu sein.

nahpets 10. Mär 2009 13:17

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Hallo,

hast Du schon dasda aus Deiner vorherigen Anfrage ausprobiert?

Tempdir 10. Mär 2009 15:52

Re: Abfragen ob SQL-Query mit IBX-Komponente erfolgreich war
 
Hallo,

ja! DANKE klappt bestens. Resultat siehe hier

*irgendwie hab ich versehntlich in den falschen Thread hier gepostet :oops: *


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr.

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