AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Probleme mit dem Filterstring
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit dem Filterstring

Ein Thema von aladin60 · begonnen am 10. Jan 2009 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 17:15
Vielleicht ist der gesamte Ausdruck auch zu komplex
Markus Kinzler
  Mit Zitat antworten Zitat
aladin60

Registriert seit: 12. Mär 2008
Ort: Sachsen-Anhalt
45 Beiträge
 
Delphi 2006 Personal
 
#12

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 17:18
..eher nicht, ich habe auch solche:

Delphi-Quellcode:
        DSKund.Filter:='Name LIKE '''+'%'+S+'%'' OR Vorname LIKE '''+'%'+S+'%'' OR Bem LIKE '''+'%'+S+'%'''+
                         ' OR Tel LIKE '''+'%'+S+'%'' OR Fax LIKE '''+'%'+S+'%'' OR Mobil LIKE '''+'%'+S+'%'''+
                         ' OR Mail LIKE '''+'%'+S+'%'' OR Anrede LIKE '''+'%'+S+'%''';
Bedenklich ist für mich, dass wenn ich OR durch AND ersetze kein Fehler kommt, das Ergebnis natürlcih nicht das gewünschte ist.


Bernd.
  Mit Zitat antworten Zitat
aladin60

Registriert seit: 12. Mär 2008
Ort: Sachsen-Anhalt
45 Beiträge
 
Delphi 2006 Personal
 
#13

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 17:23
hier noch die SQL-Abfrage, die wunderbar funtioniert:

SELECT [Person]
,[Termin]
,[Alarm]
,[Adr]
,[Obj]
,[Kunde]
,[Notiz]
,[Betreff]
,[Archiv]
,[Sound]
FROM [Termine]
where (Archiv = 'false') AND (Betreff LIKE '%Ka%' OR Notiz LIKE '%Ka%')

PS: "Ka" ist der Suchbegriff.

Das Ergebnis lautet: (1 Zeile(n) betroffen)

Bernd.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 19:37
Wieso verwendest Du nicht einfach den Format-Befehl. Er befreit Dich von Plus- und Hochkommaorgien
Delphi-Quellcode:
// So:
Filter:='(Archiv = '+QuotedStr('false')+') AND ((Betreff LIKE '+QuotedStr('%'+SS+'%')+') OR (Notiz LIKE '+QuotedStr('%'+SS+'%')+'))'
// Oder so:
Filter := Format('(Archiv = %s) AND ((Betreff LIKE %s) OR Notize LIKE %1:s),['false',QuotedStr('%'+SS+'%')]);
Ist das nicht übersichtlicher und leichter zu lesen?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 19:58
Wieso lässt du nicht Filter Filter sein und baust dir eine passende parametrisierte Abfrage zusammen?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#16

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 20:51
Weil man so sehr flexibel auf unterschiedliche Filterszenarien reagieren kann. Aber grundsätzlich ist das natürlich die einfachste Vorgehensweise.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Probleme mit dem Filterstring

  Alt 10. Jan 2009, 20:58
Wobei ein Filter lokal filtert
Markus Kinzler
  Mit Zitat antworten Zitat
aladin60

Registriert seit: 12. Mär 2008
Ort: Sachsen-Anhalt
45 Beiträge
 
Delphi 2006 Personal
 
#18

Re: Probleme mit dem Filterstring

  Alt 11. Jan 2009, 17:26
Ich danke Euch allen für Eure Antworten.

Natürlich ist der Format-Befehl eine Alternative, da ich den Fall mit dem Filtern in einem recht umfangreichen Programm mit 4 DataSets und 2 Tabellen lediglich 4 Mal (tlw. auch kombiniert) benötige, sehe ich doch wenig Vorteile diese hier anzuwenden. Es wäre vielleicht für die Lesbarkeit der Quelltexte besser...

Zur Kontrolle gebe ich beim Programmieren immer eine Messagebox mit dem resultierenden string in der Testphase aus, da die "Hochkomma-Orgie" tatsächlich etwas unübesichtlich ist.

Die eigentlich Abfrage so zu formulieren ist dagegen keine Alternative, da die hier gewünschte "Suchfunktion" nur kurzzeitig zur Anzeige kommt, ich wegen der Abfrage dann aber die Daten erneut anfordern und den connect erneuern müsste. Natürlich auch noch zweimal, um wieder die gesamten Daten abzufragen.

Doch zurück zum ungelösten Problem: Filterstrings mit einem oder mehreren AND oder OR Verknüpfungen funktionieren, mischt man AND und OR verbunden mit Klammern kommt der Fehler...

Ich habe keine Idee mehr, falls jemand noch eine hat, her damit. Eine Lösung wäre aus meiner Sicht noch das satzweise durchsuchen, aber dann sind die DS nacheinander anzuzeigen - eigentlich nicht meine gewünschte Funktionalität.

Bernd.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Probleme mit dem Filterstring

  Alt 11. Jan 2009, 18:13
Verwende keinen Filter, sondern baue Dir die Query zur Laufzeit zusammen. Du weisst doch, das das SELECT mit dem Filter-String funktioniert.

So mach ich das immer.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
MatthiasR

Registriert seit: 21. Apr 2005
193 Beiträge
 
#20

Re: Probleme mit dem Filterstring

  Alt 9. Mär 2009, 12:44
Ich hänge mich hier mal ran...

Ich möchte einen DBGrid-Inhalt zur Laufzeit filtern. Und zwar soll ein Bediener über ein Edit-Feld die Möglichkeit haben, ein paar Anfangsbuchstaben einzugeben und der DBGrid-Inhalt passt sich dann direkt an und zeigt nur die Zeilen, bei denen der Inhalt eines bestimmten Feldes mit diesen Buchstaben beginnt (case-insensitiv).

Bisher habe ich es so versucht (Table aus Zeoslib):
Delphi-Quellcode:
Table.Filter := 'spaltenname = ' + QuotedStr(edSuche.Text + '*');
Table.FilterOptions := [foCaseInsensitive];
Table.Filtered := True;
Nur werden dann egal was ich eingebe keinerlei Zeilen aufgelistet, obwohl definitiv einige dem Suchkriterium entsprechen müssten :-/ . Woran kanns liegen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 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