Filterproblem die Xte

  • VB.NET

    Filterproblem die Xte


    Hallo Leute,

    ich mal wieder. Ich stehe total auf der Leitung.

    Aus einer Exceltabelle(Reifen) habe ich eine Datatable gemacht ( natürlich Typisiert)

    Die Tabelle möchte ich nun Filtern.
    Da ich die Filterergebnisse 2 mal parallel benötige, mache ich 2 Dataview.

    Zum Filtern habe ich 3 Kriterien. Diese werden über AND zusammengesetzt.
    Wenn ich alle 3 Zusammensetze, fehlt mir ein Reifen.

    Wenn ich jedes Kriterium(Filter) einzeln setze, ist bei jedem Filter der Reifen vorhanden.
    Wenn ich Kriterium 1 und 2 setze, ist der Reifen vorhanden.

    Hier eine Zusammenstellung der 3 Kriterien
    Eine Auswahl meiner Filterergebnisse
    Spoiler anzeigen

    Kriterium Load=([LStdC] >= 568 OR [LReinfC] >= 568)
    Kriterium Diam=([DODiam] >= 650 AND [DODiam] <= 690)
    Kriterium Width=([SSWidth] <= 315)

    Bei nachfolgenden Filtern fehlt der Reifen
    HA count nach Filter: 98 // Filter= ([LStdC] >= 568 OR [LReinfC] >= 568) AND ([SSWidth] <= 315) AND ([DODiam] >= 650 AND [DODiam] <= 690)
    HA count nach Filter: 98 // Filter= ([LStdC] >= 568 OR [LReinfC] >= 568)AND ([DODiam] >= 650 AND [DODiam] <= 690) AND ([SSWidth] <= 315)
    HA count nach Filter: 98 // Filter= ( ([LStdC] >= 568 OR [LReinfC] >= 568) AND ([DODiam] >= 650 AND [DODiam] <= 690) ) AND ([SSWidth] <= 315)
    HA count nach Filter: 98 // Filter= (([LStdC] >= 568 OR [LReinfC] >= 568) AND ([DODiam] >= 650 AND [DODiam] <= 690)) AND ([SSWidth] <= 315)
    HA count nach Filter: 102 // Filter= ([DODiam] >= 650 AND [DODiam] <= 690) AND ([SSWidth] <= 315)

    bei nachfolgenden Filtern ist der Reifen vorhanden
    HA count nach Filter: 118 // Filter= ([LStdC] >= 568 OR [LReinfC] >= 568) AND ([DODiam] >= 650 AND [DODiam] <= 690)
    HA count nach Filter: 575 // Filter= ([SSWidth] <= 315)
    HA count nach Filter: 421 // Filter= ([LStdC] >= 568 OR [LReinfC] >= 568) AND ([SSWidth] <= 315)

    fehlender Reifen:
    ID###Reifen#######DM####Std####Reinf####MRim####DSWidth####DODiam####SSWidth####SODiam####LStdC####LReinfC####PosRim
    635##295/25 R21###21#####0#####96######0########301########681########313########687#######0########710########10J 10½J 11J



    Nachfolgend der Codeauszug
    Spoiler anzeigen

    VB.NET-Quellcode

    1. ds = Tires.readTires
    2. dt = ds.Tables(0)
    3. Debug.Print(dt.TableName)
    4. bds.DataMember = dt.TableName
    5. bds.DataSource = ds
    6. Dim DVVA As New DataView(dt)
    7. Dim DVHA As New DataView(dt)
    8. FilterVAWidth = "([SSWidth] <= " & VAmax & ")"
    9. FilterHAWidth = "([SSWidth] <= " & HAmax & ")"
    10. 'FilterHAWidth = "([SSWidth] < 320)"
    11. FilterVALoad = "([LStdC] >= " & VAmindLoad & " OR [LReinfC] >= " & VAmindLoad & ")"
    12. FilterHALoad = "([LStdC] >= " & HAmindLoad & " OR [LReinfC] >= " & HAmindLoad & ")"
    13. FilterVACircum = "([DODiam] >= " & VACircummind & " AND [DODiam] <= " & VACircummax & ")"
    14. FilterHACircum = "([DODiam] >= " & HACircummind & " AND [DODiam] <= " & HACircummax & ")"
    15. FilterVA = FilterVALoad & " AND " & FilterVAWidth & " AND " & FilterVACircum
    16. 'FilterHA = "(" & FilterHALoad & " AND " & FilterHACircum & ") AND " & FilterHAWidth
    17. FilterHA = FilterHACircum & " AND " & FilterHAWidth
    18. DVVA.RowFilter = FilterVA
    19. DVHA.RowFilter = FilterHA
    20. bds.Filter = FilterHA
    21. 'For Each rwv As DataRowView In bds
    22. ' Debug.Print(rwv.Item("Reifen"))
    23. 'Next
    24. Dim result = From rw In dt Where (rw.Item("LStdC") >= HAmindLoad Or rw.Item("LReinfC") >= HAmindLoad) _
    25. And (rw.Item("DODiam") >= HACircummind And rw.Item("DODiam") <= HACircummax) _
    26. And rw.Item("SSWidth") <= HAmax
    27. Debug.Print("Linq count: " & result.Count)
    28. Debug.Print("VA count nach Filter: " & DVVA.Count)
    29. Debug.Print("HA count nach Filter: " & DVHA.Count & " // Filter= " & DVHA.RowFilter)
    30. Debug.Print("HA bdscount nach Filter: " & bds.Count)
    31. Funktionen.saveDataviewToExcel(DVVA)
    32. Funktionen.saveDataviewToExcel(DVHA)


    Wie im Codeauszug zu sehen ist, habe ich den Filter auch direkt auf einen Bindingsource angewendet >> gleiches Ergebnis.
    Ebenso habe ich mit Linq gefiltert, auch gleiches Ergebnis.

    Wo stehe ich auf der Leitung?
    Ich traue nun meinen ganzen Filtern nicht mehr. ;(

    Ich hoffe jemand hat einen Ansatzpunkt für mich.

    Gruß Wolfy

    Asche auf mein Haupt ist zu wenig! :cursing:
    Fehler gefunden.
    Es lag an meiner Funktion DataviewtoExcel. Es wurde immer die letzte Zeile nicht exportiert.

    Sorry und Dank.

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