Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zeos query mehrere sql statements per sql.add (https://www.delphipraxis.net/41426-zeos-query-mehrere-sql-statements-per-sql-add.html)

Grumble 3. Mär 2005 08:13

Datenbank: FIREBIRD • Version: 1.5.1 • Zugriff über: Zeos sql

Zeos query mehrere sql statements per sql.add
 
hi,

ich hab da n kleines prob mit der syntax bei mehreren sql statements: hier der code

Delphi-Quellcode:
 dm.ZQ.SQL.Clear;
 dm.ZQ.SQL.Delimiter:=';';
 for i := 1 to 2 do
     begin
       idv:=tlid.strings[i-1];
       fv:=tlf.strings[i-1];
       tll.append('UPDATE ASSET_DATA SET '+s+'='''+fv+''' WHERE ASSET_ID='+inttostr(caid)+' and IDVALUE='''+idv+''';');
 for i:=1 to 2 do
   begin
     dm.ZQ.SQL.add(tll.strings[i-1]);
   end;
  dm.ZQ.ExecSQL;
tll ist ne stringlist wo ich die udate commands reinschreib, probeweise erstemal auf 2 gemacht
bei execsql bekomm ich nach her die fehlermeldung:

toke unknown in line 2 char 1 update.
die beiden sql strings sehn so aus:
UPDATE ASSET_DATA SET STRNAME='blablabla' WHERE ASSET_ID=1 and IDVALUE='1';
UPDATE ASSET_DATA SET STRNAME='blablablabla' WHERE ASSET_ID=1 and IDVALUE='2';;

hat jemand ne idee?
achso die felder IDVALUE und STRNAME sind varchar, ASSET_ID ist integer und fk

Jasocul 3. Mär 2005 08:17

Re: Zeos query mehrere sql statements per sql.add
 
imho kann immer nur ein Update zur Zeit ausgeführt werden. Mehrere nacheinander in einem SQL-Statement funktioniert nicht. Da du aber eine StringList hast, kannst du die Statements auch nacheinander ausführen lassen.

Grumble 3. Mär 2005 08:20

Re: Zeos query mehrere sql statements per sql.add
 
aha, das ist mir klar ich wollte halt irgendwie performance rausholen und dachte wenn ich die updates sammle und einmal abschicke gehts irgendwie schneller.

Jasocul 3. Mär 2005 08:22

Re: Zeos query mehrere sql statements per sql.add
 
Ich habe die Zeos hier gerade nicht parat. Aber schau doch die Komponentenliste nochmal durch, ob da nicht eine bei ist, die das kann.
Ob das mehr Performance bringt, wage ich zu bezweifeln. Die Datenbank muss auch nacheinander abarbeiten. Vielleicht solltest du das in einem Thread auslagern, damit du im Programm weiter arbeiten kannst.

Stevie 3. Mär 2005 08:31

Re: Zeos query mehrere sql statements per sql.add
 
Das Ausführen von Scripts kann mit der Komponente TZSQLProcessor gemacht werden.

Grumble 3. Mär 2005 08:42

Re: Zeos query mehrere sql statements per sql.add
 
ok das ganze per processor

Delphi-Quellcode:
dm.ZQP.script.Clear;
dm.ZQP.Delimiter:=';';
for i := 1 to 2 do
     begin
       idv:=tlid.strings[i-1];
       fv:=tlf.strings[i-1];
       tll.append('UPDATE ASSET_DATA SET '+s+'='''+fv+''' WHERE ASSET_ID='+inttostr(caid)+' and IDVALUE='''+idv+''';');
for i:=1 to 2 do
   begin
     dm.ZQP.script.add(tll.strings[i-1]);
   end;
dm.zqp.execute;
funktioniert so auch nicht, hab keine ahnung weshalb
da bekomm ich den fehler token unknown: in line 1 char 84
Zitat:

dm.ZQP.script.text: 'UPDATE ASSET_DATA SET STRNAME='18.-MÄRZ-STRASSE' WHERE ASSET_ID=1 and IDVALUE='1';'#$D#$A'UPDATE ASSET_DATA SET STRNAME='18.-MÄRZ-STRASSE' WHERE ASSET_ID=1 and IDVALUE='2';'#$D#$A
wobei zeichen 84 ist: #10

wie muss ich das richtig machen mit dem zsqlprocessor?

Stevie 3. Mär 2005 08:48

Re: Zeos query mehrere sql statements per sql.add
 
Schon das probiert?

Delphi-Quellcode:
dm.ZQP.script := tll;
oder auch garnicht deine StringList benutzten, sondern direkt in .script schreiben (ist ja auch TStrings)

Grumble 3. Mär 2005 08:54

Re: Zeos query mehrere sql statements per sql.add
 
das bringt genau das gleiche ergebnis

Stevie 3. Mär 2005 09:15

Re: Zeos query mehrere sql statements per sql.add
 
Hmm, da bin ich echt ratlos... :gruebel:
Was passiert, wenn du deine beiden Updates im OI in Script schreibst und es dann ausführen lässt??

Grumble 3. Mär 2005 09:20

Re: Zeos query mehrere sql statements per sql.add
 
es kommt wieder dieser fehler

wie ist das mit den eigenschaften delimter und delimitertype? kanns daran liegen?


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