Problem mit Variablen bei Update SQL
-
Hallo
ich will den Inhalt der Eingabefelder Edit3 und DBLookupComboBox1 in die SQL Anweisung in SQLQuery haben. Bring das aber nicht hin.
UPDATE T_USER
SET PASSWORT = 'Edit3->Text
WHERE BENUTZER = 'DBLookupComboBox1->TextFehlermeldung: Token unknown - line2 char46 DBLookupComboBox1
Das ist der bisherige Stand - aber das geht alles nicht. Hab es mit der Übergabe in eine Variable probiert also zuerst:
AnsiString benutzer;
benutzer = DBLookupComboBox1->Text;
passwort = Edit3->Text;in SQL
UPDATE T_USER
SET PASSWORT = :passwort
WHERE BENUTZER = :benutzerFehlermeldung: Cursor nicht aus Abfrage zurückgekehrt.
dann geht es aber auch nicht
Könnt ihr mir helfen ??
-
"Geht nicht" ist keine zulässige Fehlermeldung oder Problembeschreibung.
-
Die Fehlermeldungen stehen jetzt oben drin. Ich hoffe das hilft was.
-
Hi,
falls Du noch keine Lösung für Dein Problem gefunden hast, versuch doch mal das hier.
char SQL_String[500]; sprintf(SQL_String,"select * from T_USER where PASSWORT = '%s' and BENUTZER = '%s'",Edit3->Text, DBLookupComboBox1->Text ); Query1->SQL->Clear(); Query1->SQL->Add(SQL_String); Query1->Open();
So habe ich bis jetzt immer Variablen in einen SQL String kopiert. Evtl. mußt Du die Anführungszeichen beim %s noch weglassen, je nach dem wie Du die SQL Tabelle definiert hast.
Gruß Borste
-
Du kannst für drartige Prameter auch die Eigenschaft Parameter deiner Oquery- Komponete benutzen.
In der eigenschaft SQL gibst du zum Beispiel ein:Select * from user where name=:Name
Dann gehst du auf die Eigenschaft Parameter, klickst auf den bereits eingefügten Parameter und expandierst die Eigenschaft Value;
Im Type gibst du "String" ein.Im Quelltext schreibst du dann:
Query->Close(); Query->Parameters->Items[0]->Value="Andreas"; Query->Open();
Näheres kann man in der Hilfe nachlesen.
Auch das Thema Filter und Filtred ist interesant....
-
Hallo Borste
dein Tip funktioniert - d.h. der String wird zusammengesetzt das habe ich noch in einem Editfeld kontrolliert.
Aber:
Bei der Ausführung des SQLQuery kommt immer folgende Fehlermeldung"Cursor nicht aus Abfrage zurückgekehrt" und das Programm bricht ab
Mein Quelltext lautet:
char String[500];
sprintf (String,"UPDATE T_USER SET PASSWORT = '%s' WHERE BENUTZER = \"%s\" ", Edit3->Text, DBLookupComboBox1->Text);SQLQuery1->SQL->Add(String);
Edit4->Text = String; // Kontrollausgabe des Strings
SQLQuery1->Active = true;
ShowMessage ("Passwort wurde erfolgreich geändert");
SQLQuery1->Active = false;Kennst du diesen Fehler auch ?? bzw weißt du was man hier tun kann??
Gruss
Bernd
-
Hallo BerndKa,
dieses Problem habe ich bisher noch nicht beobachtet.
Falls Du Mircosoft SQL verwendest, versuch doch mal, einen Trace mitlaufen zu lassen. Vielleicht ergibt sich da ein Ansatz. Bei MySQL gibt es auch entsprechende Programme.
Ansonsten würde ich mal versuchen den Query nicht mit SQLQuery1->Active = true bzw. false zu öffnen bzw. zu schließen.
Ich verwende immer
SQLQuery1->SQL->Clear(); SQLQuery1->SQL->Add(String); SQLQuery1->Open();
Vielleicht funktioniert es ja dann.
Gruß Borste
-
Bei UPDATE-Statements würde ich es lieber mal mit ExecSQL() versuchen.
Siehe Hilfe und/oder das DB-Tutorial in der FAQ.