Filter View mit {n}-Werten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Achilleus.

    Filter View mit {n}-Werten

    Hallo Leute,

    ich habe mir einige Datenfilter erstellt und bin auf ein Problem (?) gestoßen.

    Bei wenigen Filterwerten verknüpfe ich diese mit einer OR-Anweisung:

    VB.NET-Quellcode

    1. Dim source1 As New BindingSource()
    2. Dim view1 As New DataView(myDataSet.Tables(EnDatabase.MdGrid))
    3. Dim s As String = ""
    4. MandantenInArbeitToolStripMenuItem.Checked = False
    5. MandantenMitAufgabenToolStripMenuItem.Checked = False
    6. MandantenMitElsterterminToolStripMenuItem.Checked = False
    7. MandantMitPostversandToolStripMenuItem.Checked = True
    8. Dim foundRows() As Data.DataRow
    9. Dim sSearch As String = "Postversand = True"
    10. foundRows = myDataSet.Tables(EnDatabase.VDLBeitrag).Select(sSearch)
    11. ToolStripMenuItemFilter.Image = My.Resources.filter_delete
    12. With DGVMada
    13. source1.DataSource = view1
    14. For Each dRow As Data.DataRow In foundRows
    15. s = s & String.Concat("[SEQ]=", dRow.Item(1), " Or ")
    16. Next
    17. s = s.Substring(0, s.Length - 4)
    18. source1.Filter = s
    19. .DataSource = view1
    20. .Columns(2).Visible = False
    21. .Columns(3).Visible = False
    22. .Columns(0).Width = 60
    23. .Columns(1).Width = .Width - .Columns(0).Width - .RowHeadersWidth - 20
    24. .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
    25. .Refresh()
    26. End With
    27. If DGVMada.Rows.Count = 0 Then Exit Sub
    28. DGVMada.Focus()


    Das klappt auch einwandfrei.

    Ich stelle mir aber die Frage, was wäre wenn es nicht nur 5 oder 10 Werte wären, sondern 100er von Werten. In Access würde ich für so etwas eine Unterabfrage erstellen z. B. mit Kriterien: <>All (SELECT Beiträge.SEQ FROM Beiträge WHERE (((Beiträge.Jahr)=2018));) Und <9999. Kann man das auch in VBNet darstellen?

    Es ist zwar nur eine grundsätzliche Frage, aber dennoch kann man das ja einmal gebrauchen.

    Ich hoffe ich konnte mich verständlich ausdrücken. :whistling:

    Gruß Achilleus
    Schau dir mal die Expression-Syntax an: learn.microsoft.com/en-us/dotn…n.expression?view=net-7.0
    es gibt dort auch einen In-Operator.
    Für ganz schwierige Fälle kann man auch Linq2Dataset bemühen - dazu habichglaub ein Tut im Datenbank-Bereich veröfflicht.

    Ansonsten: Ein Dataset ist numal was anneres als eine Datenbank. Also im weitesten Sinne kann man Dataset durchaus als relationale Datenbank betrachten - aber eben ohne Sql.