Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Parameterübergabe in SQL Anweisung (https://www.delphipraxis.net/77736-parameteruebergabe-sql-anweisung.html)

SCHUCla74 24. Sep 2006 09:53

Datenbank: MSAccess • Version: 97 • Zugriff über: ADO_Connection

Parameterübergabe in SQL Anweisung
 
Hallo,
ich habe wiedermal ein Problem.
Mit BDS2006 habe ich ein älteres Programm aus Delphi7 aktualisiert und jetzt funktioniert meine SQL Abfrage nicht mehr. Es kommt aber keine Fehlermeldung, nur wird nichts angezeigt!
Meine Abfrage lautet folgendermassen:

Delphi-Quellcode:
WITH DaoQuery1 DO BEGIN
CLOSE;
SQL.Clear;
SQL.Add('SELECT * FROM [TafelName]');
SQL.Add('WHERE [FeldName] LIKE :parameter ');
Parameters.ParambyName('parameter').Value:='*';
Open;
end;
Also in Delphi 7 hat dies bis jetzt wunderbar geklappt, da hiess es allerdings:
Delphi-Quellcode:
...
ParamByName('parameter').AsString:='*';
...
Kann es sein, dass etwas mit der Parameterabfrage nicht stimmt?

Meine Datenbank ist noch immer im Access97-Format.
FÜr Hilfe, wÄr ich sehr dankbar.

[edit=SirThornberry]Delphi-Tags gesetzt. Nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]

mkinzler 24. Sep 2006 09:59

Re: Parameterübergabe in SQL Anweisung
 
Der SQL-Platzhalter ist eigentlich '%' nicht '*'. Versuch es mal so.

SCHUCla74 24. Sep 2006 10:20

Re: Parameterübergabe in SQL Anweisung
 
Funktioniert leider nicht. Irgendwie wird der Parameter nicht abgefragt.
Warum funktioniert es in Delphi 7 mit der selben Datenbank so gut?

mkinzler 24. Sep 2006 10:22

Re: Parameterübergabe in SQL Anweisung
 
Welchen Typ hat <Feldname>?
Hast du es schon mit .asString versucht?
Ist .ParamCheck True?

SirThornberry 24. Sep 2006 10:29

Re: Parameterübergabe in SQL Anweisung
 
@SCHUCla74: Könntest du bitte nächstes mal um deinen Quelltext Delphi-Tags setzen. Damit ist der Quelltext leichter lesbar. Ich habs diesmal für dich gesetzt. Beim nächsten mal bitte selbst machen. :)

SCHUCla74 24. Sep 2006 10:40

Re: Parameterübergabe in SQL Anweisung
 
Danke für die Tags, aber ich bin ziemlich neu im Forum.
Der Feldname ist vom Typ string, wie in Delphi7
ParamCheck ist true.
Parameters.ParamByName('Parameter').Value ist doch vom Typ Variant, oder? Das müsste doch klappen?

mkinzler 24. Sep 2006 10:43

Re: Parameterübergabe in SQL Anweisung
 
Zitat:

Parameters.ParamByName('Parameter').Value ist doch vom Typ Variant, oder? Das müsste doch klappen?
Eigentlich schon, es kann aber nicht Schaden den Typ explizit anzugeben.

SCHUCla74 24. Sep 2006 11:01

Re: Parameterübergabe in SQL Anweisung
 
Leider kann ich nirgends sehen wo ich .asString angeben kann, in Delphi 7 musste ich dies, aber in BDS2006 wirds mir nicht angeboten.

mkinzler 24. Sep 2006 11:02

Re: Parameterübergabe in SQL Anweisung
 
Schreib statt .Value einfach .asString

marabu 24. Sep 2006 11:10

Re: Parameterübergabe in SQL Anweisung
 
Herzlich willkommen in der Delphi-PRAXiS, Claude.

Ist das ein Schreibfehler von dir oder arbeitest du wirklich mit DAO? ADO wäre doch die bessere Wahl.

Freundliche Grüße vom marabu

SCHUCla74 24. Sep 2006 11:18

Re: Parameterübergabe in SQL Anweisung
 
Sch..., ja, ein Schreibfehler. Es ist ADO.
In Delphi 7 hatte ich die Komponente von DIAMOND und die hieß DAO, daher vielleicht die Verwechslung.
Will aber jetzt ohne Drittkomponenten auskommen.
Entschuldige nochmals.

SCHUCla74 24. Sep 2006 14:40

Re: Parameterübergabe in SQL Anweisung
 
Zitat:

Zitat von mkinzler
Schreib statt .Value einfach .asString

Geht leider nicht! Wird sofort rot unterstrichen und funzt nicht, sorry.

marabu 24. Sep 2006 14:52

Re: Parameterübergabe in SQL Anweisung
 
Ich bin mit den Gepflogenheiten von BDS nicht vertraut, aber es könnte sich um ein syntaktisches Problem handeln, welches an ganz anderer Stelle verursacht wird. Kannst du dich nicht herantasten? Funktioniert denn das hier:

Delphi-Quellcode:
with AdoQuery do
begin
  SQL.Text := 'SELECT * FROM [TafelName] WHERE [FeldName] LIKE ''%''';
  Open;
end;
Vielleicht liegt es gar nicht an den Parametern.

Grüße vom marabu

mkinzler 24. Sep 2006 14:55

Re: Parameterübergabe in SQL Anweisung
 
Grundsätzlich sollte es eigentlich über parameter funktionieren.
Zitat:

mkinzler hat folgendes geschrieben:
Schreib statt .Value einfach .asString

Geht leider nicht! Wird sofort rot unterstrichen und funzt nicht, sorry.
Ich ging davon aus, daß ein parameter der Ado-Komponenten identisch mit den von normalen DataSets sind und deshlab .as<X> unterstützen, welche diese wohl nicht tun.

-Funktioniert der Zugriff ohne Parameter? (Siehe auch Achims Beitrag)
-Welche Komponente ( TADOQuery, TADODataSet)?

SCHUCla74 24. Sep 2006 15:03

Re: Parameterübergabe in SQL Anweisung
 
Zitat:

Zitat von marabu
Ich bin mit den Gepflogenheiten von BDS nicht vertraut, aber es könnte sich um ein syntaktisches Problem handeln, welches an ganz anderer Stelle verursacht wird. Kannst du dich nicht herantasten? Funktioniert denn das hier:

Delphi-Quellcode:
with AdoQuery do
begin
  SQL.Text := 'SELECT * FROM [TafelName] WHERE [FeldName] LIKE ''%''';
  Open;
end;
Vielleicht liegt es gar nicht an den Parametern.

Grüße vom marabu

Ja, du hast bestimmt recht. Dies funktioniert wunderbar. Ich werd die SQL Anweisung nochmal überprüfen!
Danke für die Idee!

SCHUCla74 24. Sep 2006 15:22

Re: Parameterübergabe in SQL Anweisung
 
Zitat:

Zitat von mkinzler
Grundsätzlich sollte es eigentlich über parameter funktionieren.
Zitat:

mkinzler hat folgendes geschrieben:
Schreib statt .Value einfach .asString

Geht leider nicht! Wird sofort rot unterstrichen und funzt nicht, sorry.
Ich ging davon aus, daß ein parameter der Ado-Komponenten identisch mit den von normalen DataSets sind und deshlab .as<X> unterstützen, welche diese wohl nicht tun.

-Funktioniert der Zugriff ohne Parameter? (Siehe auch Achims Beitrag)
-Welche Komponente ( TADOQuery, TADODataSet)?

Ohne Parameter funktioniert alles wunderbar: alle sonstige Abfragen via SQL.

Ich verwende jetzt die ganz normalen Komponenten:
TAdoConnection, TAdoQuery, TDBGrid und TDataSource.

Soweit glaub ich alles Ok?

SCHUCla74 24. Sep 2006 15:53

Re: Parameterübergabe in SQL Anweisung
 
Dank an alle; es funktioniert.
War wahrscheinlech das Zeichen '*' das ich durch '%' ersetzt habe. Access ist immer wieder speziell!
Mein Tag ist gerettet.


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