Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi mehrere Optionen Filter (https://www.delphipraxis.net/120007-mehrere-optionen-filter.html)

Tim Henford 4. Sep 2008 11:29

Datenbank: MS SQL 2k • Zugriff über: ADO

mehrere Optionen Filter
 
Hallo,

folgender Filter funktioniert einwandfrei:

Delphi-Quellcode:
Query.Filtered:= false;
Query.Filter:= 'Titel like ''*'+Eingabe.Text+'*'' AND wann>='+QuotedStr('01.01.2007 00:00:00')+
                          ' AND wann<='+QuotedStr('01.01.2008 00:00:00');
Query.Filtered:= true;
aber

Delphi-Quellcode:
Query.Filtered:= false;
Query.Filter:= 'Titel like ''*'+Eingabe.Text+'*'' OR wer like ''*'+wer.Text+'*'' AND wann>='+QuotedStr('01.01.2007 00:00:00')+
                          ' AND wann<='+QuotedStr('01.01.2008 00:00:00');
Query.Filtered:= true;
Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereichs....

Woran kann das liegen? Irgendwie hängt das wohl mit dem Datum zusammen und der Anzahl Werte
VG Tim

DeddyH 4. Sep 2008 12:16

Re: mehrere Optionen Filter
 
Parametrisiere die Abfrage mal. Und ist wirklich "*" die Wildcard und nicht "%"?

Tim Henford 4. Sep 2008 12:24

Re: mehrere Optionen Filter
 
Was meinst du mit Parametrisieren?

DeddyH 4. Sep 2008 12:25

Re: mehrere Optionen Filter
 
Hier im Forum suchenSQL-Parameter

Tim Henford 4. Sep 2008 12:51

Re: mehrere Optionen Filter
 
Danke, verstehe ich aber immer noch nicht ganz, wie mir das für den Filter hilft.
Das mit dem Sternchen funktioniert eigentlich wie gewollt...

Aber irgendwie eben 2 Parameter mit Datum nicht, wie gesagt mit einem scheint es zu gehen..

DeddyH 4. Sep 2008 12:54

Re: mehrere Optionen Filter
 
Lass Dir mal den Filterstring ausgeben, evtl. sieht man da mehr.

Tim Henford 4. Sep 2008 13:08

Re: mehrere Optionen Filter
 
ok, danke für die Hilfe
Scheinbar liegt der Fehler beim OR:

Delphi-Quellcode:
Query.Filtered:= false;
Query.Filter:= 'Titel like ''*'+Eingabe.Text+'*'' [b]OR[/b] wer like ''*'+wer.Text+'*'' AND wann>='+QuotedStr('01.01.2007 00:00:00')+
                          ' AND wann<='+QuotedStr('01.01.2008 00:00:00');
Query.Filtered:= true;
funktioniert nicht


Delphi-Quellcode:
Query.Filtered:= false;
Query.Filter:= 'Titel like ''*'+Eingabe.Text+'*'' [b]AND[/b] wer like ''*'+wer.Text+'*'' AND wann>='+QuotedStr('01.01.2007 00:00:00')+
                          ' AND wann<='+QuotedStr('01.01.2008 00:00:00');
Query.Filtered:= true;
funktioniert. Aber warum? Kann man das nicht so definieren?

DeddyH 4. Sep 2008 13:15

Re: mehrere Optionen Filter
 
Setz mal testhalber Klammern.
Delphi-Quellcode:
Query.Filtered:= false;
Query.Filter:= 'Titel like ''*'+Eingabe.Text+'*'' OR (wer like ''*'+wer.Text+'*'' AND wann>='+QuotedStr('01.01.2007 00:00:00')+
                          ' AND wann<='+QuotedStr('01.01.2008 00:00:00') + ')';
Query.Filtered:= true;

Tim Henford 4. Sep 2008 13:30

Re: mehrere Optionen Filter
 
ok letzteres geht, aber wenn ich jetzt wieder folgendes mache:

Delphi-Quellcode:
Query.Filter:= '(Titel like ''*'+Eingabe.Text+'*'' OR wer like ''*'+Eingabe.Text+
   '*'' OR wie like ''*'+Eingabe.Text+
   '*'' OR was like ''*'+Eingabe.Text+
   '*'') AND (wann>='+QuotedStr('01.01.2007 00:00:00')+
   ' AND wann<='+QuotedStr('01.01.2008 00:00:00') + ')';
geht es wieder nicht.
ich möchte einfach das in der DB in den Feldern Titel, wer, wie, was nach dem Suchkriterium aus Eingabe.text gesucht wird und das Datum in dem angegebenen Zeitraum liegt...

DeddyH 4. Sep 2008 13:45

Re: mehrere Optionen Filter
 
Ich empfehle Dir, die Statements mal mit einem SQL-Editor zu testen. Wenn sie funktionieren, kannst Du sie dann in Delphi einbauen.

sonicus83 4. Sep 2008 14:05

Re: mehrere Optionen Filter
 
Kleiner Tipp, ohne es getestet zu haben: (nochmal)
Setz die einzelnen Abfragen doch mal in Klammern..

SQL-Code:
Query.Filter:= '((Titel like ''*'+Eingabe.Text+'*'') OR (wer like ''*'+Eingabe.Text+
   '*'') OR (wie like ''*'+Eingabe.Text+
   '*'') OR (was like ''*'+Eingabe.Text+
   '*'') AND (wann>='+QuotedStr('01.01.2007 00:00:00')+
   ') AND (wann<='+QuotedStr('01.01.2008 00:00:00') + '))';

DeddyH 4. Sep 2008 14:10

Re: mehrere Optionen Filter
 
Ist das Access oder MS SQL? Die Syntax lässt eher auf Access schließen, da dann lieber eine Klammerung mehr verwenden :stupid:

Tim Henford 4. Sep 2008 14:13

Re: mehrere Optionen Filter
 
-ist MSSQL2000
- mit Klammern klappt es leider auch noch nicht

-im SQL-Analyzer funktioniert folgendes Statement problemlos
SQL-Code:
USE meineDB
SELECT * FROM meineTab WHERE (Titel like 'abc' OR wer like 'AQ' OR was like 'aq') AND (wann>='01.01.2007 00:00:00' AND wann<='04.09.2008 00:00:00')
GO
- Aber letzteres eben nicht als Filter für mein Programm, ich wollt aber den SQL-Text meines AdoQuerys nicht ändern, sondern eben mit der Filter-Optione arbeiten, sowas versteh ich nicht...


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