![]() |
Datenbank: Oracle • Zugriff über: BDE
Problem bei der Übergabe von SQLStatements an ein TQuery
Hi Leute :hi:
also bei Datenbanken bin noch nen ziemlicher Neuling darum wird die Antwort wahrscheinlich sehr einfach sein. Vornweg hab schon versucht was passendes in der DB zu finden hat aber irgendwie nichts funktioniert. :? Also hier das Problem: Ich habe folgende SQL-Anweisung
Delphi-Quellcode:
die wenn ich sie direkt beim Objekt Inspektor unter SQl eintrage tadellos funktioniert und mir das gewünschte Ergebnis in einem DBGrid ausgibt. Nun soll statt dem Wort KABEL in der SQL Anweisung der eingegebene Text eines Edit Fenster stehen wenn ich nun also im Quelltext folgendes Statement schreibe
SELECT SUCHTEXT
FROM ARTIKEL Artikel WHERE SUCHTEXT LIKE '%KABEL%'
Delphi-Quellcode:
bekomme ich folgende Fehlermeldung:
Form1.MyQuery.SQL.Add:='SELECT SUCHTEXT FROM ARTIKEL Artikel WHERE SUCHTEXT LIKE '%+Form1.Edit1.Text+%'';
Zitat:
Schon mal danke an alle die sich die Mühe gemacht haben und bis hier gelesen haben. :thumb: |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Hi Silbar,
die %-Zeichen müssen noch vor die Hochkommata. Auserdem erwartet TStringlist.Add den neu eingefügten String als Übergabeparameter. So sollte es funktionieren:
Delphi-Quellcode:
Mfg
Form1.MyQuery.SQL.Add('SELECT SUCHTEXT FROM Artikel WHERE SUCHTEXT LIKE %'+Form1.Edit1.Text+'%;');
Christian |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Hi Silbar,
versuchs doch mal so:
Delphi-Quellcode:
Das Label kannst du übrigens in diesem Fall weglassen.
Form1.MyQuery.SQL.Add:='SELECT SUCHTEXT FROM ARTIKEL Artikel WHERE Artikel.SUCHTEXT LIKE ''%'+Form1.Edit1.Text+'%''';
Delphi-Quellcode:
gmc
Form1.MyQuery.SQL.Add:='SELECT SUCHTEXT FROM ARTIKEL WHERE SUCHTEXT LIKE ''%'+Form1.Edit1.Text+'%''';
|
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Wieso liegt der "Suchtext" eigentlich als Feld in der DB ? Wieso steht da 2mal Artikel ? :shock:
Delphi-Quellcode:
Ich mache das so, sortiere nach Nummern und erschlage gleich noch die Groß/Kleinschreibung. 8)
ArtDS.SelectSQL.Text := 'SELECT * FROM ART WHERE UPPER (BEZ) LIKE UPPER (''%' + edSuch.Text + '%'') ORDER BY NR';
|
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Danke für die Lösung Delphi kompiliert jetzt zwar aber nun kommt wenn ich auf den Button klicke der das ganze auslösen soll folgende Fehlermeldung:
Zitat:
Mein Quelltext sieht so aus:
Delphi-Quellcode:
PPS.:Im Edit-Fenster stand 'KABEL' drin.
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.MyQuery.SQL.Add('SELECT SUCHTEXT FROM Artikel WHERE SUCHTEXT LIKE %'+Form1.Edit1.Text+'%;'); Form1.MyQuery.ExecSQL; end; PPPS.:Gemeint is die Lösung von Chris1986 die anderen teste ich noch @Hansa: Das kamm mit dem SQl Builder der TQuery Komponete ohe hat das unter des Builder irgendwie net funktionert liegt vermutlich am Aufbau der DB die ich bekommen habe. |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Delphi-Quellcode:
Grüße vom marabu
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.MyQuery.SQL.Text := 'SELECT SUCHTEXT FROM Artikel WHERE SUCHTEXT LIKE ''%' + Form1.Edit1.Text + '%'''; Form1.MyQuery.Open; // ExecSQL nur, wenn du keinen result set erwartest end; |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
das mag jetzt komisch klingen aber das DBGrid das ich mit der DataSource verbunden habe, das wiederum mit der TQuery verbunden ist gibt nix aus. Als ich den SQL Text direkt im Objekt Manager eingetragen habe hat sich das DBGrid selbstständig gefüllt nun isses aber leer obwohl ich weiss das es eigentlich mit Daten gefüllt sein müsste. Kann es sein das da noch ne Befehl fehlt der vorher net nowendig war?
PS.: Ich arbeite mit de Lösung von Marabu da bei den andere immer der Fehler von oben auf tritt Zitat:
|
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Du solltest nicht mit ExecSQL() arbeiten, wenn du ein SELECT Statement zum Server schickst.
marabu |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
mit welchem dann bin mit DB's net so vertraut bzw mit dem Befehlssatz
|
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Open heißt das Tier - habe ich weiter oben in den Code schon eingepflegt...
marabu |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Wenn man keine Parameter verwendet, sollte man zumindest die Funktion QuotedStr verwenden !
Delphi-Quellcode:
Andernfalls kommt es zu einem SQL Syntaxfehler wenn Edit1.Text mal ein Hochkoma enthalten sollte.
MyQuery.SQL.Text:='SELECT SUCHTEXT FROM ARTIKEL Artikel WHERE SUCHTEXT LIKE '+
QuotedStr('%'+Edit1.Text+'%'); MyQuery.Open; |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
danke leute (besonders marabu) :cheers: jetzt rennt das.
eine kleine weiteführende frage wie baue ich das UPPER von Hansa passend in marabu's bzw.shmia's quelltext ein irgendwie funzt das net wen ich das mache (im SUCHTEXT steht alles in Grossbuchstaben drin deshalb soll die Eingabe vom Edit auch in Grossbuchstaben umgewandelt werden) PS.: Das open habe ich wohl überlesen marabu sry |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Hier eine überarbeitete Fassung:
Delphi-Quellcode:
Verbesserungsvorschläge von Hansa und shmia sind eingebaut.
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.MyQuery.SQL.Text := 'SELECT SUCHTEXT FROM Artikel WHERE UPPER(SUCHTEXT) LIKE ''%' + QuotedStr(AnsiUppercase(Form1.Edit1.Text)) + '%'''; Form1.MyQuery.Open; // ExecSQL nur, wenn du keinen result set erwartest end; und auch noch ein Fehler - also unbedingt bis zum Beitrag von shmia weiterlesen... marabu |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Danke für die Mühe marabu aber jetzt bekomm ich die Meldung
Zitat:
|
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
ich glaub marabu meint die Funktion UpperCase
|
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Er meinte sogar AnsiUppercase() - um genau zu sein - aber so ist das im Alter: man meint manchmal das eine und schreibt das andere. Gut das immer einer da ist, der mitdenkt. Ich ändere das mal im Code, bevor noch jemand darauf hereinfällt...
marabu |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Zitat:
Und das mit den Hochkommas und QuotedStr passt auch nicht. Richtig wäre:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Form1.MyQuery.SQL.Text := 'SELECT SUCHTEXT FROM Artikel WHERE UPPER(SUCHTEXT) LIKE ' + QuotedStr('%'+AnsiUppercase(Form1.Edit1.Text)+'%'); Form1.MyQuery.Open; end; |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Heute ist nicht mein Tag
*UnbedachterTrittGegenSchreibtisch* Ich gehe dann mal nachbessern... marabu |
Re: Problem bei der Übergabe von SQLStatements an ein TQuery
Danke Leute jetzt funzt :thumb:
und marabu baruchst net sauer sein wusstest immmerhin mehr als ich :thumb: also leute cya |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:03 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-2025 by Thomas Breitkreuz