Announcement

Collapse
No announcement yet.

DataView RowFilter Expression

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

  • DataView RowFilter Expression

    Guten Morgen,
    brauch wieder mal eure Hilfe. Ich versuche eine Expression zu basteln als Filter für die Anzeige von Rows aus einer DB in einem DataGridView, angebunden an ein DataView. Für eine Datums-Column sieht es z.B. so aus:
    HTML Code:
    trmView.RowFilter = "C4131=#" & Date.Today.ToString("yyyy-MM-dd") & "#"
    Nun brauche ich neben weiteren Filtern auch einen für meine Columns "C4110", "C4111" und "C4112". Darin stehen Name, Vorname und Geburtsdatum. Ich muss das DGV (also die trmView) dahingehend filtern, dass nur die Rows angezeigt werden, deren Werte in einer Textbox zu finden sind.
    In der Textbox steht z.B.
    HTML Code:
    bla bla
    Fünfstück, Harald 12.01.1943
    bla bla
    Im Grid sollen nun nur die Rows angezeigt werden, die im Feld C4110 "Fünftstück" oder im Feld C4111 "Harald" oder im Feld C4112 "12.01.1943" haben. Bei den Namen möglichst noch mit phonetischen Algorithmus (Fünfstück - Fuenfstueck).

    Ich habe alles versucht, was ich kenne (LIKE, IN ...), aber nach Stunden des rumfummelns gebe ich jetzt auf und versuche Hilfe bei euch zu bekommen. Erbarmt sich jemand? Danke!
    Gruß Norbert


  • #2
    also wenn Du nach SQL Lösungen suchst und nicht ein grob befülltes Grid über VB Code weiter eindampfen willst, dann schau mal hier:
    https://dev.mysql.com/doc/refman/8.0...-language.html

    (ich nehme an, Du bist bei Version 8)
    Gruß, defo

    Comment


    • #3
      Weitere Möglichkeit ein Vergleich mit SoundEx

      https://www.w3resource.com/mysql/str...x-function.php
      Christian

      Comment


      • #4
        Danke! Ihr habt euch auf SoundEx eingeschossen. Aber mir fehlt vordergründig die Syntax für die Expression in Vb.Net (vergleiche Feld aus der DB mit TextBox.Text)
        Vielleicht trivial, aber ich schnalls einfach nicht.

        Der Link von defo könnte mir helfen, aber wir fahren die 8 nur testweise auf einem Laptop lokal. Aktuell auf dem Server ist noch 5.6
        Der Link von Christian erschliesst sich mir leider nicht. Warum SOUNDEX('w3resource') ?

        Comment


        • #5
          Das erfüllt deine Anforderung

          Bei den Namen möglichst noch mit phonetischen Algorithmus (Fünfstück - Fuenfstueck
          Ein String wird mittels SoundEx umgewandelt. Ähnliche Strings ergeben die gleiche Umwandlung
          Christian

          Comment


          • #6
            Verstehe: "SoundEx("Fünftstück") = SoundEx("Fuenfstueck") ergibt True
            Aber wie muss der RowFilter aussehen unter Bezug auf TextBox.Text?
            trmView.RowFilter = "C4110 ???

            Comment


            • #7
              Kann ich nicht sagen, programmiere nicht mit MS-Produkten.
              Aber wenn alle Suchbegriffe in einer Textbox stehen, ist diese wohl zu parsen
              1. Zeile ist x
              2. Zeile bis zum Komma Nachname
              ...
              Das ist kein gutes Vorgehen, verschiedene Informationen in einer Box abzufragen
              Christian

              Comment


              • #8
                Danke. Du hast völlig Recht. Hab die TextBox für diese Aktion jetzt aufgegeben. Mache zusätzlich eine Property in der Klasse mit dem Suchstring. Gleich im richtigen Format für die Expression
                HTML Code:
                PatDaten = "('" & name & "','" & vorname & "','" & geboren & "')"
                Dann geht es einfach mit
                HTML Code:
                trmView.RowFilter = "C4110 In " & PatDaten & " Or C4111 In " & PatDaten & " Or C4112 In " & PatDaten
                Was Schlaueres fällt mir jetzt auch nicht mehr ein ...

                Schönes Wochenende

                Comment


                • #9
                  RowFilter filtert eine lokale Datenmenge. Also Daten die bereits lokal vorliegen werden noch weiter gefiltert als das was man aus der Datenbank geholt hat. Da ist die Datenbank also völlig unbeteiligt und deren Funktionalität hilft dir hier gar nicht. Wenn du Datenbankfunktionalität nutzen willst wie zum Beispiel Soundex mußt du das früher tun also zum Beispiel beim befüllen der lokalen Datenmenge (die DataTable, die EntityFramework Datenmenge oder was du auch immer benutzt hast.)

                  Comment

                  Working...
                  X