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:
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
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.
Gruß Achilleus
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
- Dim source1 As New BindingSource()
- Dim view1 As New DataView(myDataSet.Tables(EnDatabase.MdGrid))
- Dim s As String = ""
- MandantenInArbeitToolStripMenuItem.Checked = False
- MandantenMitAufgabenToolStripMenuItem.Checked = False
- MandantenMitElsterterminToolStripMenuItem.Checked = False
- MandantMitPostversandToolStripMenuItem.Checked = True
- Dim foundRows() As Data.DataRow
- Dim sSearch As String = "Postversand = True"
- foundRows = myDataSet.Tables(EnDatabase.VDLBeitrag).Select(sSearch)
- ToolStripMenuItemFilter.Image = My.Resources.filter_delete
- With DGVMada
- source1.DataSource = view1
- For Each dRow As Data.DataRow In foundRows
- s = s & String.Concat("[SEQ]=", dRow.Item(1), " Or ")
- Next
- s = s.Substring(0, s.Length - 4)
- source1.Filter = s
- .DataSource = view1
- .Columns(2).Visible = False
- .Columns(3).Visible = False
- .Columns(0).Width = 60
- .Columns(1).Width = .Width - .Columns(0).Width - .RowHeadersWidth - 20
- .Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
- .Refresh()
- End With
- If DGVMada.Rows.Count = 0 Then Exit Sub
- 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.
Gruß Achilleus