SQLQuery-> Problem???
-
Hallo,
ich bekomme immer wieder Fehlermeldung.
Aber Syntax Error geht es bei mir nicht weiter ?DataModule2->SQLQuery1->SQL->Add("use db1;"); DataModule2->SQLQuery1->ExecSQL(); DataModule2->SQLQuery1->SQL->Clear(); DataModule2->SQLQuery1->SQL->Add("SELECT wert1, wert2 FROM tab_01;"); DataModule2->SQLQuery1->Open(); int i; for (i=0; i<= DataModule2->SQLQuery1->RecordCount; i++) { String var = DataModule2->SQLQuery1->FieldByName("wert2")->AsString; DataModule2->SQLQuery1->SQL->Add("use "+var+";"); DataModule2->SQLQuery1->ExecSQL(); // Syntax Error DataModule2->SQLQuery1->SQL->Add("insert into tab_test tall='"+Form1->Edit9->Text+"';"); DataModule2->SQLQuery1->ExecSQL(); DataModule2->SQLQuery1->Next(); }Habe schon hier in Forum gesucht aber keine lösung gefunden.
-
Lass dir den Inhalt von SQLQuery1->SQL an der entsprechenden Stelle mal ausgeben, dann sollte dir die Ursache klarwerden.
-
Hi,
muss mich korrigieren.
Die Fehlermeldung sind kein Syntax Error.
Die Meldungen kommen in Zeile 11 und 13, bei ExecSQL();DataModule2->SQLQuery1->ExecSQL();Das kann er nicht ausführen.
Was kann ich machen wenn ich mehrere ExecSQL() habe?
-
Hast Du mal Jansens Vorschlag beherzigt?
Gruß
Alexander
-
Ja habe ich,
Ausgabe 1:SELECT wert1, wert2 FROM tab_01;bei 2:
SELECT wert1, wert2 FROM tab_01; use db02;und beim 3:
SELECT wert1, wert2 FROM tab_01; use db02; insert into tab_test tall='test';Die wiederholen sich bei jeder Schleife.
-
Setze zuerst mal den Counter einen runter :
for (i=0; i<= DataModule2->SQLQuery1->RecordCount - 1; i++) { ... }MfG
kpeter
-
Und welchen Befehl hast du vor der Schleife vor dem SQL->Add(..) geschrieben?
-
void db_eintrag() { DataModule2->SQLQuery1->SQL->Clear();oder was meinst du ?
-
Es wird alles ausgeführt, was Du mit Add() hinzufügst, SQL ist
eine Stringliste (TStrings*). Wie Du ja schon selbst gesehen
hast, wird immer mehr eingetragen. Ich nehme an, das ist es,
worauf Dich alle hier aufmerksam machen wollten.
Was Du dagegen tun kannst, hast Du ja auch schon selbst geschrieben...Gruß
Alexander
-
Habe das probiert.
Ich denke du meinst das->DataModule2->SQLQuery1->SQL->Clear();aber das funktioniert irgendwie nicht.
Ich weiss nicht was wo machen soll.
Blick leider nicht mehr durch.
-
das Problem ist wohl eher dass du die Schleife mit den Werten des SQLQuery1 machst und IN der Schleife diesem Query wieder neue Befehle gibst und deshalb die eigentliche Schleife gar nicht mehr gültig ist. Verwende also einfach mal 2 SQLQuerys eins vor der Schleife und ein anderes in der Schleife...