Announcement

Collapse
No announcement yet.

In einer Spalte nach mehreren Werten Filtern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • In einer Spalte nach mehreren Werten Filtern

    Hallo,

    kann ich und wie, in einer spalte nach mehreren Werten Filtern?
    Beispiel:
    Ich suche in der Spalte Name nach:
    Lemcke
    Quauka
    Rilling

    Wie muss mein Filterstring aussehen?

    Gruß

    Markus
    Herzliche Grüße

    Markus Lemcke
    barrierefreies Webdesign

  • #2
    Dataset.Filter := 'Name = ''Lemcke'' or Name = ''Quauka'' or Name = ''Rilling''';

    Der Filterstring ist vom konkreten Datasettyp abhängig. Der hier sollte aber zumindest bei ADO und dem Clientdataset funktionieren.

    Ral

    Comment


    • #3
      danke Ralf
      Herzliche Grüße

      Markus Lemcke
      barrierefreies Webdesign

      Comment


      • #4
        das mit OR funzt schon, aber es ist quälend langsam
        Herzliche Grüße

        Markus Lemcke
        barrierefreies Webdesign

        Comment


        • #5
          Für ein Performanceoptimierung müßte ich/wir dann schon wissen welche Query Komponente verwendet wird, welche Datenbank dahintersteht und über wie viele Datensätze (lokal und in der Datenbank) wir hier sprechen.

          Ral

          Comment


          • #6
            Datenbank ist FlashFiler und die haben eben ihre eigenen komponenten die aber von tquery und ttable abgeleitet sind!
            mit dem OR-Filter bekomme ich beim ersten Filtern 8000 Datensätze zurück!

            Marku
            Herzliche Grüße

            Markus Lemcke
            barrierefreies Webdesign

            Comment


            • #7
              FlashFiler kenn ich leider nicht wirklich.

              Aber bei einer Datenmenge in dieser Größe solltest du dir überlegen das Filtern in SQL zu lösen(Flashfiler scheint ja SQL zu kennen wenn es schon Query und Table unterscheidet).

              Das günstigste sollte sein wenn du nicht nach deutlich mehr als 3 Namen suchst jeweils einen Abfrage je Name abzusetzen und per Union zu verknüpfen(unter der Annahme das die Name Spalte indiziert ist). Also etwa so

              Select Column1, ... ,ColumnN From Table where Name = 'Lemcke'
              union
              Select Column1, ... ,ColumnN From Table where Name = 'Quauka'
              union
              Select Column1, ... ,ColumnN From Table where Name = 'Rilling'

              Ral

              Comment


              • #8
                noch mal ne frage zum filter!

                ich suche jetzt alle Datensätze wo Quauka oder Lemcke oder <b>beides</b> im Feld Namen vorkommen kann!
                wie muss da der Filterstring aussehen?

                Gruß

                Marku
                Herzliche Grüße

                Markus Lemcke
                barrierefreies Webdesign

                Comment


                • #9
                  Hi,
                  bin nicht regelmäßig im Forum kann also schonmal länger dauern etwas von mir zu hören. Ich versuchs trotzdem nochmal.

                  Deine Query Komponente unterstützt hoffentlich den LIKE Syntax.
                  Dann sollte der Filter so aussehen:

                  Dataset.Filter := 'Name LIKE ''&Lemcke&'' or Name LIKE ''&Quauka&'';

                  Den Fall wenn beide Strings im Namen enthalten sind muß man natürlich nicht extra abfangen ist ja implizit in dem Filtern auf die einzelnen Strings bereits enthalten.

                  Ein LIKE ist aber natürlich langsamer als ein normaler Vergleich.

                  Gruß
                  Ral

                  Comment


                  • #10
                    Ich Depp, ich meinte natürlich %-Zeichen und nicht &- Zeichen.
                    Richtig ist also

                    Dataset.Filter := 'Name LIKE ''%Lemcke%'' or Name LIKE ''%Quauka%''

                    Comment


                    • #11
                      danke ralf!
                      sieht ja fast aus wie bei SQL!
                      war bei Filter nicht das *-zeichen der joker?

                      Gruß

                      marku
                      Herzliche Grüße

                      Markus Lemcke
                      barrierefreies Webdesign

                      Comment


                      • #12
                        Die Filter lehnen sich auch an ANSI-SQL an. Dort ist als % für eine beliebige Anzahl Zeichen und der _(Underscore) für genau ein Zeichen als Wildcard definiert. Da aber durch Windows natürlich * und ? wesentlich geläufiger sind unterstützten das viele Datanbanken zusätzlich.

                        Ral

                        Comment

                        Working...
                        X