Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Query unabhängig von Groß- oder Kleinbuchstaben filtern (https://www.delphipraxis.net/29656-query-unabhaengig-von-gross-oder-kleinbuchstaben-filtern.html)

FBrust 12. Sep 2004 18:00


Query unabhängig von Groß- oder Kleinbuchstaben filtern
 
Hallo,

ich habe eine Abfrage, die eine große Anzahl Datensätze liefert. Um das Durchsuchen einfacher zu
machen, möchte ich die Abfrage filtern.

Nun habe ich mit
Delphi-Quellcode:
    strUpC := UpperCase(edtFilter.Text);
    with qryMusic do begin
      Close;
      Filtered := False;
      if edtFilter.Text <> '' then begin
        strFilter := '(Interpret = ' + '''' + edtfilter.Text + '*'+  '''' + ')';
        strFilter := strFilter + ' OR ';
        strFilter := strFilter + '(Interpret = ' + '''' + strUpC + '*';
        strFilter := strFilter +  '''' + ')';
        Filter := strFilter;
        Filtered := True;
      end;
      Open;
    end;
einen Filter eingebaut, der bei jeder Eingabe die Abfrage neu filtert. Ziel ist, mit fortschreitender
Eingabe das Filterergebnis immer weiter zu verkleinern.

Das Problem ist nun, das bei Eingabe von "a" alles gefunden wird, was mit "a" und "A" beginnt, aber beim zweiten Buchstaben, z. B. "b" würde alles mit "ab" und "AB" gefunden werden, aber nichts mit "Ab" am Wortbeginn.

Wie kann ich denn die Suche so gestalten, dass, wenn ich Kleinbuchstaben eingebe, trotzdem alles gefiltert werden kann?


Gruß

Frank

djmasi 12. Sep 2004 18:09

Re: Query unabhängig von Groß- oder Kleinbuchstaben filtern
 
Es gibt die Eigenschaft FilterOptions
Zitat:

Zitat von Delphi Hilfe
Delphi-Syntax:
type
TFilterOption = (foCaseInsensitive, foNoPartialCompare);
TFilterOptions = set of TFilterOption;

foCaseInsensitive Literale Strings im Filter werden ohne Berücksichtigung der Groß-/Kleinschreibung mit Stringwerten in Feldern verglichen.


Hansa 12. Sep 2004 18:11

Re: Query unabhängig von Groß- oder Kleinbuchstaben filtern
 
Tja, "Filter" ist eines der Wörter, die sehr beliebt sind und trotzdem für Ärger sorgen, weil sie nicht richtig verstanden werden. 8) In Deinem Delphi-Programm ist jetzt mit Upcase alles groß, aber in der DB nicht ! Da muß noch in den SQL-String ein UPPER rein.

djmasi 12. Sep 2004 18:19

Re: Query unabhängig von Groß- oder Kleinbuchstaben filtern
 
In welchen SQL-String?

Er braucht nur den Code etwas ändern:
Delphi-Quellcode:
procedure TForm1.edtFilterChange(Sender: TObject);
var
  strFilter: String;
begin
    //Filtereigenschaft einstellen
    qryMusic.FilterOptions := [foCaseInsensitive];
    with qryMusic do begin
      Close;
      Filtered := False;
      if edtFilter.Text <> '' then begin
        //diese Zeile reicht schon aus
        strFilter := '(Interpret = ' + '''' + edtfilter.Text + '*'+  '''' + ')';
        Filter := strFilter;
        Filtered := True;
      end;
      Open;
    end;
end;

FBrust 12. Sep 2004 18:22

Re: Query unabhängig von Groß- oder Kleinbuchstaben filtern
 
Hallo djmasi,

genau das wars, funzt jetzt so wie es soll. Danke!


Gruß
Frank


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