DataTable multiple Filter

  • VB.NET

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 56 Antworten in diesem Thema. Der letzte Beitrag () ist von Sam85.

    Neu

    Hallo,

    Ich hab dazu nochmal zwei Rückfragen:

    1. Kann mcb_körper.DataSource auch abkürzen (Dim ds as "was auch immer" = mcb_körper.DataSource) ?
    2. Kann ich irgendwie mit einer Schleife den gesamten Code abkürzen? ?(

    PS: Hätte ich bei den Bedingungen auch das AndAlso präferieren sollen?

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim pg As String = mcb_pg.Text, kasse As String = mcb_kasse.Text, bereich As String = mcb_bereich.Text,
    2. klasse As String = mcb_klasse.Text, körper As String = mcb_körper.Text, name As String = mtb_name.Text
    3. If kasse = "" And bereich = "" And klasse = "" And name = "" Then '0
    4. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg
    5. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    6. ElseIf kasse <> "" And bereich = "" And klasse = "" And name = "" Then '1/1/4
    7. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    8. And OT.Kasse = kasse
    9. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    10. ElseIf kasse = "" And bereich <> "" And klasse = "" And name = "" Then '1/2/4
    11. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    12. And OT.Körperbereich = körper
    13. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    14. ElseIf kasse = "" And bereich = "" And klasse <> "" And name = "" Then '1/3/4
    15. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    16. And OT.Kasse = kasse
    17. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    18. ElseIf kasse = "" And bereich = "" And klasse = "" And name <> "" Then '1/4/4
    19. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    20. And OT.Bezeichnung = name
    21. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    22. ElseIf kasse <> "" And bereich <> "" And klasse = "" And name = "" Then '2/1/6
    23. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    24. And OT.Kasse = kasse _
    25. And OT.Produktbereich = bereich
    26. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    27. ElseIf kasse <> "" And bereich = "" And klasse <> "" And name = "" Then '2/2/6
    28. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    29. And OT.Kasse = kasse _
    30. And OT.Produktklasse = klasse
    31. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    32. ElseIf kasse <> "" And bereich = "" And klasse = "" And name <> "" Then '2/3/6
    33. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    34. And OT.Kasse = kasse _
    35. And OT.Bezeichnung = name
    36. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    37. ElseIf kasse = "" And bereich <> "" And klasse <> "" And name = "" Then '2/4/6
    38. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    39. And OT.Produktbereich = bereich _
    40. And OT.Produktklasse = klasse
    41. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    42. ElseIf kasse = "" And bereich <> "" And klasse = "" And name <> "" Then '2/5/6
    43. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    44. And OT.Produktbereich = bereich _
    45. And OT.Bezeichnung = name
    46. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    47. ElseIf kasse = "" And bereich = "" And klasse <> "" And name <> "" Then '2/6/6
    48. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    49. And OT.Produktklasse = klasse _
    50. And OT.Bezeichnung = name
    51. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    52. ElseIf kasse <> "" And bereich <> "" And klasse <> "" And name = "" Then '3/1/4
    53. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    54. And OT.Kasse = kasse _
    55. And OT.Produktbereich = bereich _
    56. And OT.Produktklasse = klasse
    57. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    58. ElseIf kasse <> "" And bereich <> "" And klasse = "" And name <> "" Then '3/2/4
    59. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    60. And OT.Kasse = kasse _
    61. And OT.Produktbereich = bereich _
    62. And OT.Bezeichnung = name
    63. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    64. ElseIf kasse <> "" And bereich = "" And klasse <> "" And name <> "" Then '3/3/4
    65. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    66. And OT.Kasse = kasse _
    67. And OT.Produktklasse = klasse _
    68. And OT.Bezeichnung = name
    69. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    70. ElseIf kasse = "" And bereich <> "" And klasse <> "" And name <> "" Then '3/4/4
    71. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    72. And OT.Produktbereich = bereich _
    73. And OT.Produktklasse = klasse _
    74. And OT.Bezeichnung = name
    75. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    76. ElseIf kasse <> "" And bereich <> "" And klasse <> "" And name <> "" Then '4
    77. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    78. And OT.Kasse = kasse _
    79. And OT.Produktbereich = bereich _
    80. And OT.Produktklasse = klasse _
    81. And OT.Bezeichnung = name
    82. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    83. End If

    Neu

    Sam85 schrieb:

    Hätte ich bei den Bedingungen auch das AndAlso präferieren sollen?
    Ja - hat doch EDR schon oben gemeint...

    Sam85 schrieb:

    Kann mcb_körper.DataSource auch abkürzen
    was meinst du da genau?
    Ich glaube, deine Fragen drehen sich irgendwie im Kreis...
    Beschreibe einmal ganz genau und detailliert, wie dein Vorhaben aussieht - was genau möchtest du machen...

    Neu

    Gibt es dann keinen Konflikt wenn ich x <> "" andalso y <> "" und bei x ist dann aber nichts ausgewählt? Sonst ändere ich das noch ab.
    Mit abkürzen meine ich in etwa so Dim ds as "was auch immer" = mcb_körper.DataSource

    EDIT:

    Mein Vorhaben ist es halt die ausgewählten Kriterien unabhängig abhängig voneinander zu nutzen und nicht Abhängigkeit unabhängig. Also wenn ich die Produktgruppe auswähle, kann ich auch gleich den Körperbereich auswählen ohne vorher die Kasse oder den Produktbereich auszuwählen.

    Derzeit lass ich die DataSource an der ComboBox so ermitteln, um alle Alternativen abzuwägen. Ich denke das geht bestimmt auch besser. (Exemplarisch jetzt nur von eine ComboBox).

    Private Sub mcb_körper_DropDown(sender As Object, e As EventArgs) Handles mcb_körper.DropDown

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub mcb_körper_DropDown(sender As Object, e As EventArgs) Handles mcb_körper.DropDown
    2. Dim pg As String = mcb_pg.Text, kasse As String = mcb_kasse.Text, bereich As String = mcb_bereich.Text,
    3. klasse As String = mcb_klasse.Text, körper As String = mcb_körper.Text, name As String = mtb_name.Text
    4. If kasse = "" And bereich = "" And klasse = "" And name = "" Then '0/1/1
    5. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg
    6. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    7. ElseIf kasse <> "" And bereich = "" And klasse = "" And name = "" Then '1/1/4
    8. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    9. And OT.Kasse = kasse
    10. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    11. ElseIf kasse = "" And bereich <> "" And klasse = "" And name = "" Then '1/2/4
    12. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    13. And OT.Körperbereich = körper
    14. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    15. ElseIf kasse = "" And bereich = "" And klasse <> "" And name = "" Then '1/3/4
    16. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    17. And OT.Kasse = kasse
    18. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    19. ElseIf kasse = "" And bereich = "" And klasse = "" And name <> "" Then '1/4/4
    20. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    21. And OT.Bezeichnung = name
    22. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    23. ElseIf kasse <> "" And bereich <> "" And klasse = "" And name = "" Then '2/1/6
    24. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    25. And OT.Kasse = kasse _
    26. And OT.Produktbereich = bereich
    27. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    28. ElseIf kasse <> "" And bereich = "" And klasse <> "" And name = "" Then '2/2/6
    29. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    30. And OT.Kasse = kasse _
    31. And OT.Produktklasse = klasse
    32. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    33. ElseIf kasse <> "" And bereich = "" And klasse = "" And name <> "" Then '2/3/6
    34. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    35. And OT.Kasse = kasse _
    36. And OT.Bezeichnung = name
    37. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    38. ElseIf kasse = "" And bereich <> "" And klasse <> "" And name = "" Then '2/4/6
    39. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    40. And OT.Produktbereich = bereich _
    41. And OT.Produktklasse = klasse
    42. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    43. ElseIf kasse = "" And bereich <> "" And klasse = "" And name <> "" Then '2/5/6
    44. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    45. And OT.Produktbereich = bereich _
    46. And OT.Bezeichnung = name
    47. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    48. ElseIf kasse = "" And bereich = "" And klasse <> "" And name <> "" Then '2/6/6
    49. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    50. And OT.Produktklasse = klasse _
    51. And OT.Bezeichnung = name
    52. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    53. ElseIf kasse <> "" And bereich <> "" And klasse <> "" And name = "" Then '3/1/4
    54. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    55. And OT.Kasse = kasse _
    56. And OT.Produktbereich = bereich _
    57. And OT.Produktklasse = klasse
    58. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    59. ElseIf kasse <> "" And bereich <> "" And klasse = "" And name <> "" Then '3/2/4
    60. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    61. And OT.Kasse = kasse _
    62. And OT.Produktbereich = bereich _
    63. And OT.Bezeichnung = name
    64. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    65. ElseIf kasse <> "" And bereich = "" And klasse <> "" And name <> "" Then '3/3/4
    66. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    67. And OT.Kasse = kasse _
    68. And OT.Produktklasse = klasse _
    69. And OT.Bezeichnung = name
    70. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    71. ElseIf kasse = "" And bereich <> "" And klasse <> "" And name <> "" Then '3/4/4
    72. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    73. And OT.Produktbereich = bereich _
    74. And OT.Produktklasse = klasse _
    75. And OT.Bezeichnung = name
    76. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    77. ElseIf kasse <> "" And bereich <> "" And klasse <> "" And name <> "" Then '4/1/1
    78. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    79. And OT.Kasse = kasse _
    80. And OT.Produktbereich = bereich _
    81. And OT.Produktklasse = klasse _
    82. And OT.Bezeichnung = name
    83. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    84. End If
    85. End Sub



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

    Neu

    Sam85 schrieb:

    was auch immer
    Du weist nicht, welchen Datentyp die Datasource-Eigenschaft besitzt?
    msdn.microsoft.com/de-de/library/x8160f6f(v=vs.110).aspx
    Du kannst auch Dim ds = mcb_körper.DataSource schreiben, wenn du das meinst?
    Aber da muss dann Option Infer On eingestellt sein, sonnst meckert die IDE...

    Edit:
    Mein Vorhaben ist es halt die ausgewählten Kriterien unabhängig voneinander zu nutzen und nicht in Abhängigkeit.
    Derzeit lass ich die DataSource an der ComboBox so ermitteln, um alle Alternativen abzuwägen.
    Wiederspricht sich dass nicht?

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VB1963“ ()

    Neu

    Deine unabhähgigen Filter aber noch nicht? (siehe oben mein Edit)
    Ach ja sorry, mies formuliert..genau andersherum.
    :S
    Gut, dann doch untereinander in Abhängigkeit...
    Wie - musst du noch erklären...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Neu

    Jetzt bin ich gerade etwas verwirrt :). Nochmal
    Ich nehme mal exemplarisch ein Codestück. Kann ich alle 4 Faktoren prüfen und anschließend im Where Segement die betroffenen Elemente miteinfließen lassen ohne dabei diesen endlosen Code zu verwenden? Das trifft meine Frage hoffentlich etwas besser.

    VB.NET-Quellcode

    1. ElseIf kasse <> "" AndAlso bereich <> "" AndAlso klasse <> "" AndAlso name <> "" Then '4/1/1
    2. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    3. AndAlso OT.Kasse = kasse _
    4. AndAlso OT.Produktbereich = bereich _
    5. AndAlso OT.Produktklasse = klasse _
    6. AndAlso OT.Bezeichnung = name
    7. Select OT.Körperbereich Distinct Order By Körperbereich).ToList


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim pg As String = mcb_pg.Text, kasse As String = mcb_kasse.Text, bereich As String = mcb_bereich.Text,
    2. klasse As String = mcb_klasse.Text, körper As String = mcb_körper.Text, name As String = mtb_name.Text
    3. If kasse = "" AndAlso bereich = "" AndAlso klasse = "" AndAlso name = "" Then '0/1/1
    4. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg
    5. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    6. ElseIf kasse <> "" AndAlso bereich = "" AndAlso klasse = "" AndAlso name = "" Then '1/1/4
    7. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    8. AndAlso OT.Kasse = kasse
    9. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    10. ElseIf kasse = "" AndAlso bereich <> "" AndAlso klasse = "" AndAlso name = "" Then '1/2/4
    11. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    12. AndAlso OT.Körperbereich = körper
    13. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    14. ElseIf kasse = "" AndAlso bereich = "" AndAlso klasse <> "" AndAlso name = "" Then '1/3/4
    15. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    16. AndAlso OT.Kasse = kasse
    17. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    18. ElseIf kasse = "" AndAlso bereich = "" AndAlso klasse = "" AndAlso name <> "" Then '1/4/4
    19. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    20. AndAlso OT.Bezeichnung = name
    21. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    22. ElseIf kasse <> "" AndAlso bereich <> "" AndAlso klasse = "" AndAlso name = "" Then '2/1/6
    23. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    24. AndAlso OT.Kasse = kasse _
    25. AndAlso OT.Produktbereich = bereich
    26. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    27. ElseIf kasse <> "" AndAlso bereich = "" AndAlso klasse <> "" AndAlso name = "" Then '2/2/6
    28. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    29. AndAlso OT.Kasse = kasse _
    30. AndAlso OT.Produktklasse = klasse
    31. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    32. ElseIf kasse <> "" AndAlso bereich = "" AndAlso klasse = "" AndAlso name <> "" Then '2/3/6
    33. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    34. AndAlso OT.Kasse = kasse _
    35. AndAlso OT.Bezeichnung = name
    36. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    37. ElseIf kasse = "" AndAlso bereich <> "" AndAlso klasse <> "" AndAlso name = "" Then '2/4/6
    38. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    39. AndAlso OT.Produktbereich = bereich _
    40. AndAlso OT.Produktklasse = klasse
    41. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    42. ElseIf kasse = "" AndAlso bereich <> "" AndAlso klasse = "" AndAlso name <> "" Then '2/5/6
    43. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    44. AndAlso OT.Produktbereich = bereich _
    45. AndAlso OT.Bezeichnung = name
    46. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    47. ElseIf kasse = "" AndAlso bereich = "" AndAlso klasse <> "" AndAlso name <> "" Then '2/6/6
    48. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    49. AndAlso OT.Produktklasse = klasse _
    50. AndAlso OT.Bezeichnung = name
    51. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    52. ElseIf kasse <> "" AndAlso bereich <> "" AndAlso klasse <> "" AndAlso name = "" Then '3/1/4
    53. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    54. AndAlso OT.Kasse = kasse _
    55. AndAlso OT.Produktbereich = bereich _
    56. AndAlso OT.Produktklasse = klasse
    57. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    58. ElseIf kasse <> "" AndAlso bereich <> "" AndAlso klasse = "" AndAlso name <> "" Then '3/2/4
    59. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    60. AndAlso OT.Kasse = kasse _
    61. AndAlso OT.Produktbereich = bereich _
    62. AndAlso OT.Bezeichnung = name
    63. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    64. ElseIf kasse <> "" AndAlso bereich = "" AndAlso klasse <> "" AndAlso name <> "" Then '3/3/4
    65. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    66. AndAlso OT.Kasse = kasse _
    67. AndAlso OT.Produktklasse = klasse _
    68. AndAlso OT.Bezeichnung = name
    69. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    70. ElseIf kasse = "" AndAlso bereich <> "" AndAlso klasse <> "" AndAlso name <> "" Then '3/4/4
    71. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    72. AndAlso OT.Produktbereich = bereich _
    73. AndAlso OT.Produktklasse = klasse _
    74. AndAlso OT.Bezeichnung = name
    75. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    76. ElseIf kasse <> "" AndAlso bereich <> "" AndAlso klasse <> "" AndAlso name <> "" Then '4/1/1
    77. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    78. AndAlso OT.Kasse = kasse _
    79. AndAlso OT.Produktbereich = bereich _
    80. AndAlso OT.Produktklasse = klasse _
    81. AndAlso OT.Bezeichnung = name
    82. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    83. End If



    EDIT:
    Es gibt 5 ComboBoxen und 1 TextBox, wobei mit Auswahl bei der ersten ComboBox, alle anderen Controls Enabled werden.
    Nun will ich ab dem Zeitpunkt wo in der ersten ComboBox etwas ausgewählt wurde, das nächste ComboBox alle Filter mitnimmt, die bereits ausgewählt wurden. Unabhängig davon, welche ComboBox nun als nächstes gewählt wird. (Hoffe das macht endlich Sinn...). 8|

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sam85“ ()

    Neu

    Wenn du das ganze Filter-Brim-Borium abkürzen möchtest - dann könntest du für die einzelnen Vergleichsausdrücke eine eigene Function schreiben un die im WHERE-Abschnitt verwenden...
    Wenn ich dich jetzt richtig verstanden habe, willst du die Elemente ohne Angabe nicht berücksichtigen...

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. mcb_körper.DataSource = (From OT In OrthesenDS.OrthesenDT Where OT.Produktgruppe = pg _
    3. AndAlso isTheSame(OT.Kasse, kasse) _
    4. AndAlso isTheSame(OT.Produktbereich, bereich) _
    5. AndAlso isITheSame(OT.Produktklasse, klasse) _
    6. AndAlso isTheSame(OT.Bezeichnung, Name)
    7. Select OT.Körperbereich Distinct Order By Körperbereich).ToList
    8. End Sub
    9. Private Function isTheSame(dsItem As String, compItem As String) As Boolean
    10. If compItem = "" Then Return True
    11. Return compItem = dsItem
    12. End Function

    Ist aber nicht getestet! Da muss alles als String vorhanden sein...
    Damit könnest du mit obiger Abfrage alles abdecken - denke ich.
    Wenn keine Angabe dann wird das Element nicht genommen, sonnst wird's abgefragt...
    Wie gesagt nur ein ungetester Codesample!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „VB1963“ ()

    Neu

    Das funktioniert super, vielen Dank. :thumbsup: Mit der Function wird also überprüft ob das Kriterium Wahr ist und wenn es so ist, dann wird es einbezogen ansonsten "übersprungen".

    Neu

    Dann habe ich noch eine Frage. Und zwar will in einen ausgewählten Filter so wieder entfernen (Maus klick, rechts auf die ComboBox). Jedoch werden damit alle bisherigen Filtern entfernt (vermutlich weil die BindingSource sich ja auf alles bezieht). Kann ich den Effekt auf das eine Segment reduzieren?

    VB.NET-Quellcode

    1. Private Sub mcb_bereich_MouseDown(sender As Object, e As MouseEventArgs) Handles mcb_bereich.MouseDown
    2. If e.Button = MouseButtons.Right Then
    3. mcb_bereich.DataSource = ("").ToList
    4. OrthesenDTBindingSource.RemoveFilter()
    5. End If
    6. End Sub

    Neu

    Sam85 schrieb:

    OrthesenDTBindingSource.RemoveFilter()
    Wenn du den Filter entfernst, dann ist er halt weg - und es wird über die BS wieder ungefiltert alles angezeigt!

    Sam85 schrieb:

    vermutlich weil die BindingSource sich ja auf alles bezieht
    Die BS ist dort verantwortlich, wo sie zur .Datasource-Eigenschaft zugeteilt wurde...

    Sam85 schrieb:

    Kann ich den Effekt auf das eine Segment reduzieren?
    Erkläre den Effekt bzw. Segment nochmals genauer...
    Meinst du als Segment ein Filterargument einer BS?
    Und das Segment soll bei einer Combobox ausgewählt werden können?
    Uund die Combobox ist an einer eigenen BS gebunden?
    Oder wie?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()

    Neu

    @Sam85: Du willst doch den Filter wieder etwas unscharf stellen, richtig? In Post#49 wurde doch ein passender Filtercode schon gepostet. Nachdem Du die Combobox, deren Filterkriterium nicht mehr haben willst, angeklickt hast, sollte es doch reichen, jenen Code nochmals auszuführen, oder? Also jenen Code aus dem Button1_Click in eine eigene Funktion packen und diese Funktion jeweils aufrufen. Einmal in Button1_Click und einmal, nachdem ein Filterkriterium entfernt wurde.
    • meine wichtigste Programmiererkenntnis: Mühsam erhängt sich das Eichhörnchen.
    • eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    • »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    • If Not GrammarIsOk() Then AssumeThatCodeIsOk = False

    Neu

    @VaporiZed
    Ah ok, das wollte ich wissen. Ich kann also den Filter nur Rückgängig machen, in dem ich ihn auflöse und einfach den "Schritt zurück gehe" in dem ich bis zum vorherigen Punkt erneut Filter (hab ich das so richtig wiedergegeben?).

    @VB1963
    Hmm nein, es ist wie VaporiZed beschrieben hat. Ich habe erst einen Filter gesetzt und will diesen dann Rückgängig machen. Nur macht das Remove beim BindingSource.Filter ja alles zum Anfang wie du ja auch erwähnt hast.

    Neu

    Sam85 schrieb:

    Ich habe erst einen Filter gesetzt und will diesen dann Rückgängig machen.
    Von welchen Filter sprichst du jetzt?
    mcb_körper.DataSource in Post#49: Da werden die Daten von OrthesenDS.OrthesenDT mittels der Argumente in der WHERE-Klausel abgefragt und das Ergebnis der Datasource von mcb_körper zugewiesen...
    Und du sprichst von OrthesenDTBindingSource.RemoveFilter(): da wird aber die Filtereigenschaft einer BS gelöscht und wieder alles angezeigt...
    mcb_bereich.DataSource = ("").ToList??? : mache lieber mcb_bereich.DataSource = Nothing, aber damit trennst du die Datenverbindung und hast keine Daten mehr in der Combobox!