Entwickler-Ecke

Datenbanken - Tabellenfilter auf zwei Spalten?


Arne Danikowski - So 16.09.07 15:50
Titel: Tabellenfilter auf zwei Spalten?
Hallo,

ich versuche grade eine Tabelle zu Filtern. Dabei sollen zwei Filterbedinngungen erfüllt werden:

Delphi-Quelltext
1:
table1.filter:= 'archiv <>' +QuotedStr('Ja') or 'papierk <>' +QuotedStr('Ja');                    


funktioniert aber nicht.

Wo liegt mein Denkfehler?


jasocul - So 16.09.07 16:16
Titel: Re: Tabellenfilter auf zwei Spalten?
user profile iconArne Danikowski hat folgendes geschrieben:
funktioniert aber nicht.
Ein bisschen genauer wäre schon nicht schlecht.

Ich denke aber, dass es gut wäre, die Bedingungen korrekt mit Klammern zu versehen.


Martok - So 16.09.07 16:19

Und ein paar mal Quotes sortieren dürfte auch nicht schaden, sieht man schon am Highlighter...


Arne Danikowski - So 16.09.07 19:19

beim kompelieren kommt. Operation nicht anwendbar. Ich habe das ach mal in Klammern gesetzt.

Delphi-Quelltext
1:
table1.filter:= ('archiv <>' +QuotedStr('Ja') or 'papierk <>' +QuotedStr('Ja'));                    


gleiches Problem.
Hatte ich erwähnt, das ich Anfänger bin?


dummzeuch - So 16.09.07 19:29

user profile iconArne Danikowski hat folgendes geschrieben:
beim kompelieren kommt. Operation nicht anwendbar. Ich habe das ach mal in Klammern gesetzt.

Delphi-Quelltext
1:
table1.filter:= ('archiv <>' +QuotedStr('Ja') or 'papierk <>' +QuotedStr('Ja'));                    


gleiches Problem.
Hatte ich erwähnt, das ich Anfänger bin?


Noe, hattest Du nicht.

Table1.Filter ist eine String-Property, d.h. es muss heissen:


Delphi-Quelltext
1:
table1.filter:= '(archiv <>' + QuotedStr('Ja') + ') or (papierk <>' + QuotedStr('Ja') + ')';                    


twm


Arne Danikowski - So 16.09.07 20:51

danke für die schnelle hilfe.

das ganze funktioniert soweit.

Wie aber muss das ganze aussehen, wenn ich den Filter nur auf "oder" haben möchte?

also entweder wenn archive den Wert 'Ja' enthält ODER Papierk den Wert 'ja'?

So wie es oben ist also.


Delphi-Quelltext
1:
table1.filter:= '(archiv <>' + QuotedStr('Ja') + ') or (papierk <>' + QuotedStr('Ja') + ')';                    


werden die Datensätze nur herausgefiltert wenn archiv UND Papierk den Wert 'Ja' enthalten

mfg


Arne Danikowski - Mi 19.09.07 12:42

Danke,

habe den Fehler selber gefunden nur um das abzuschließen, falls jemand anderns dieses Trad gbrauchen kann:

es muss

Delphi-Quelltext
1:
and                    


also:



Delphi-Quelltext
1:
table1.filter:= 'archiv <>' +QuotedStr('Ja') and 'papierk <>' +QuotedStr('Ja');                    


heißen. Das läßt sich dann auch beliebig erweitern.