Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Probleme mit dem Filterstring (https://www.delphipraxis.net/127296-probleme-mit-dem-filterstring.html)

aladin60 10. Jan 2009 16:17

Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO

Probleme mit dem Filterstring
 
Hallo Ihr Wissenden,

frohes neues Jahr wünsche Ich Euch noch. Der Grund meines Auftrittes ist jedoch ein Problem, bei dessen Lösung ich Hilfe brauche.

Ich filtere eine Tabelle folgendermaßen:

Delphi-Quellcode:
Filter:=''(Archiv = ''false'') AND (Betreff LIKE '''+'%'+SS+'%'' OR Notiz LIKE '''+'%'+SS+'%'')'
was mit dem Fehler "Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereiches oder sind unvereinbar." endet.

Hierbei ist "SS" der zu suchende String. Lasse ich die Klammern weg, gibt es keine Fehlermeldung, es wird auch gefiltert aber natürlich mit dem falschen (logischen) Ergebnis.

Seht Ihr mein Versagen?

Bernd.

mkinzler 10. Jan 2009 16:18

Re: Probleme mit dem Filterstring
 
Versuch mal
Delphi-Quellcode:
Filter:=''(Archiv = ''false'') AND ((Betreff LIKE '''+'%'+SS+'%'') OR ( Notiz LIKE '''+'%'+SS+'%''))'

Matze 10. Jan 2009 16:21

Re: Probleme mit dem Filterstring
 
Hallo,

ich kann mich auch irren, aber gehört zu Beginn nicht nur ein Hochkomma hin, da du ja einen String zuweisen möchtest?

Also statt

Delphi-Quellcode:
Filter := ''( // ...
so

Delphi-Quellcode:
Filter := '( // ...
Grüße, Matze

aladin60 10. Jan 2009 16:31

Re: Probleme mit dem Filterstring
 
Hatte ich auch schon, muss aber wohl so ein:

Delphi-Quellcode:
 Filter:='(Archiv = ''false'') AND ((Betreff LIKE '''+'%'+SS+'%'') OR ( Notiz LIKE '''+'%'+SS+'%''))'
Sieht dann so aus: (Archiv = 'false') AND ((Betreff LIKE '%such%') OR (Notiz LIKE '%such%'))


...aber gleiches Ergebnis.

Bernd.

@Matze: Hast Recht, war aber nur ein Schreibfehler.

aladin60 10. Jan 2009 16:46

Re: Probleme mit dem Filterstring
 
Ich werde verrückt, probehalber habe ich das OR in der Klausel mal durch AND ersetzt:

Delphi-Quellcode:
Filter:='(Archiv = ''false'') AND (Betreff LIKE '''+'%'+SS+'%'' AND Notiz LIKE '''+'%'+SS+'%'')'
..da kommt kein Fehler. Ich weiß nicht weiter...

Bernd.


[edit=Matze]Hab den Beitrag mal neu abgesendet. Irgendwie wird/wurde das DP-Layout zerstört. MfG, Matze[/edit]

mkinzler 10. Jan 2009 16:50

Re: Probleme mit dem Filterstring
 
Verwende mal QuotedStr zum Einschliessen von Strings in Hochkomma

aladin60 10. Jan 2009 16:56

Re: Probleme mit dem Filterstring
 
...gleiches Ergebnis: Mit OR Fehlermeldung, mit AND geht es, aber logisch falsch.

Delphi-Quellcode:
Filter:='(Archiv = '+QuotedStr('false')+') AND (Betreff LIKE '+QuotedStr('%'+SS+'%')+' OR Notiz LIKE '+QuotedStr('%'+SS+'%')+')'
Bernd.

mkinzler 10. Jan 2009 17:02

Re: Probleme mit dem Filterstring
 
Bersuch es doch nochmal zu Klammern

WInfo 10. Jan 2009 17:07

Re: Probleme mit dem Filterstring
 
Moin Moin aladin60,

(1) gibts denn beim Filter einen Like, (2) müsst nicht statt % ein * kommen und (3) ist die partielle Suche in den Filteroptions aktiviert?

aladin60 10. Jan 2009 17:11

Re: Probleme mit dem Filterstring
 
habe ich...

Delphi-Quellcode:
 Filter:='(Archiv = '+QuotedStr('false')+') AND ((Betreff LIKE '+QuotedStr('%'+SS+'%')+') OR (Notiz LIKE '+QuotedStr('%'+SS+'%')+'))'
gleiches -schlechtes- Ergebnis.

Inzwischen habe ich unter SQL (Management Studio Express) gleiches getan (mit dem resultierenden String). Es geht mit der doppelten Klammerebene -(..) AND ((..) OR (..))- genauso wie mit der einfachen Klammerung -(..) AND (.. OR ..)- einwandfrei.

Bernd.

@ WInfo: Einzeln gehen alle Statements wunderbar, % ist richtig, es gibt auch ein LIKE. Trotzdem DANKE.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.
Seite 1 von 3  1 23      

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