Filter mit variabler Anzahl von Suchkriterien

  • Access

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Acr0most.

    Filter mit variabler Anzahl von Suchkriterien

    Ich habe verschiedene Suchfelder wie ID, PLZ, Land, Kundennummer, usw.
    Wenn in ID was drinsteht soll nach der ID gesucht werden.
    Wenn jetzt ID und Land gefüllt sind soll nach beiden Kriterien gesucht werden.

    Ich will jetzt aber nicht jede mögliche Kombination einzeln aufzählen.

    Ich benutze Steuerelemente mit Filter um die Daten zu suchen.
    Ich hab das vor kurzem auch gemacht.

    VB.NET-Quellcode

    1. ​Private Sub tabelleAuswertungFuellen()
    2. Dim con As New MySqlConnection
    3. Dim cmd As New MySqlCommand
    4. Dim adapter As MySqlDataAdapter
    5. con.ConnectionString = "xxxxxxxxxxxxxxxx"
    6. cmd.Connection = con
    7. cmd.CommandText = "Select * From kunden
    8. Try
    9. con.Open()
    10. adapter = New MySqlDataAdapter(cmd.CommandText, con)
    11. tableauswertung = New Data.DataTable
    12. adapter.Fill(tableauswertung)
    13. dvauswertung = New DataView(tableauswertung)
    14. dgv_auswertung.DataSource = dvauswertung
    15. con.Close()
    16. Catch ex As Exception
    17. MessageBox.Show(ex.Message)
    18. End Try
    19. Private Sub button_click(sender As System.Object, e As System.EventArgs) Handles btn_filtern.click
    20. If textbox1.text.lenght > 0 Or textbox2.text.lenght > 0 Ortextbox3.text.lenght > 0 Or textbox4.text.lenght > 0 Then
    21. dvauswertung.RowFilter = filterSQL() ' Datagridview filtern
    22. Else
    23. Call tabelleAuswertungFuellen() 'Kein Filter ausgewählt --> tabelle füllen ohne Filter
    24. End If
    25. End Sub
    26. End Sub


    Du musst eine DataView auf den Datatable erstellen und das Datagridview dann mit dem DataView füllen. Danach halt eine Sub mit der Methode rowfilter und den Filterstring musst du dann selber zusammenbasteln vorher. Der sieht dann so aus.


    "ID = " & Textbox1.text & " AND Kunde = '" & textbox2.text & "'.......
    Einen Filter wofür? Woher kommen die Daten?

    Hier Code für bspw. SQL:

    VB.NET-Quellcode

    1. dim sWhere as String = " WHERE "
    2. if txtID.Text <> "" then
    3. sWhere = Stringbuilder(sWhere, txtId.Text, "AND")
    4. end if
    5. if txtPLZ.Text <> "" then
    6. sWhere = Stringbuilder(sWhere, txtPLZ.Text, "AND")
    7. end if
    8. if txtLand.Text <> "" then
    9. '[...]


    da du bei SQL die Expressions mit AND verknüpfen musst bietet sich an eine Fkt zu schreiben...

    VB.NET-Quellcode

    1. Private Function Stringbuilder(sText As String, sAnhang As String, sAdder As String) As String
    2. Dim sRet As String = ""
    3. If sText = "" Then
    4. sRet = sAnhang
    5. Else
    6. If Trim(sText) = "WHERE" Then
    7. sRet = sText & " " & sAnhang
    8. Else
    9. sRet = sText & " " & sAdder & " " & sAnhang
    10. End If
    11. End If
    12. Return sRet
    13. End Function



    Wenn das dir nicht weiterhelfen sollte, stelle ggf. deine Frage etwas konkreter.


    mit freundlichen Grüßen
    Acr0most

    PS: Sry für das viele Editieren, nur haben beim Kopieren aus dem Editor ständig ein paar Zeichen gefehlt..
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Acr0most“ ()

    Oh nooo :/
    Entschuldigung. Hab ich total überlesen..

    Aber Funktionsweise wäre die Selbe.^^
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: