Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Problem bei der Übergabe von SQLStatements an ein TQuery (https://www.delphipraxis.net/49586-problem-bei-der-uebergabe-von-sqlstatements-ein-tquery.html)

Silbar 13. Jul 2005 11:48

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:
SELECT SUCHTEXT
FROM ARTIKEL Artikel
WHERE SUCHTEXT LIKE '%KABEL%'
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
Delphi-Quellcode:
 Form1.MyQuery.SQL.Add:='SELECT SUCHTEXT FROM ARTIKEL Artikel WHERE SUCHTEXT LIKE '%+Form1.Edit1.Text+%'';
bekomme ich folgende Fehlermeldung:
Zitat:

[Error] OMDBTestUnit.pas(57): Not enough actual parameters
[Error] OMDBTestUnit.pas(57): Illegal character in input file: '%' ($25)
[Error] OMDBTestUnit.pas(57): Illegal character in input file: '%' ($25)
[Fatal Error] OMDBTestProject.dpr(5): Could not compile used unit 'OMDBTestUnit.pas'
Weiss einer wie ich den Quell code korrigieren muss damit es läuft?

Schon mal danke an alle die sich die Mühe gemacht haben und bis hier gelesen haben. :thumb:

Chris1986 13. Jul 2005 11:58

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:
Form1.MyQuery.SQL.Add('SELECT SUCHTEXT FROM Artikel WHERE SUCHTEXT LIKE %'+Form1.Edit1.Text+'%;');
Mfg
Christian

gmc616 13. Jul 2005 12:00

Re: Problem bei der Übergabe von SQLStatements an ein TQuery
 
Hi Silbar,

versuchs doch mal so:
Delphi-Quellcode:
Form1.MyQuery.SQL.Add:='SELECT SUCHTEXT FROM ARTIKEL Artikel WHERE Artikel.SUCHTEXT LIKE ''%'+Form1.Edit1.Text+'%''';
Das Label kannst du übrigens in diesem Fall weglassen.
Delphi-Quellcode:
Form1.MyQuery.SQL.Add:='SELECT SUCHTEXT FROM ARTIKEL WHERE SUCHTEXT LIKE ''%'+Form1.Edit1.Text+'%''';
gmc

Hansa 13. Jul 2005 12:06

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:
ArtDS.SelectSQL.Text := 'SELECT * FROM ART WHERE UPPER (BEZ) LIKE UPPER (''%' + edSuch.Text + '%'') ORDER BY NR';
Ich mache das so, sortiere nach Nummern und erschlage gleich noch die Groß/Kleinschreibung. 8)

Silbar 13. Jul 2005 12:13

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:

General SQL error
ORA-00911: Ungültiges Zeichen
PS.:
Mein Quelltext sieht so aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.MyQuery.SQL.Add('SELECT SUCHTEXT FROM Artikel WHERE SUCHTEXT LIKE %'+Form1.Edit1.Text+'%;');
 Form1.MyQuery.ExecSQL;
end;
PPS.:Im Edit-Fenster stand 'KABEL' drin.

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.

marabu 13. Jul 2005 12:17

Re: Problem bei der Übergabe von SQLStatements an ein TQuery
 
Delphi-Quellcode:
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;
Grüße vom marabu

Silbar 13. Jul 2005 12:25

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:

[Error] OMDBTestUnit.pas(57): Not enough actual parameters

marabu 13. Jul 2005 12:29

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

Silbar 13. Jul 2005 12:30

Re: Problem bei der Übergabe von SQLStatements an ein TQuery
 
mit welchem dann bin mit DB's net so vertraut bzw mit dem Befehlssatz

marabu 13. Jul 2005 12:35

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 Uhr.
Seite 1 von 2  1 2      

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