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
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
VB.NET-Quellcode
- ds = Tires.readTires
- dt = ds.Tables(0)
- Debug.Print(dt.TableName)
- bds.DataMember = dt.TableName
- bds.DataSource = ds
- Dim DVVA As New DataView(dt)
- Dim DVHA As New DataView(dt)
- FilterVAWidth = "([SSWidth] <= " & VAmax & ")"
- FilterHAWidth = "([SSWidth] <= " & HAmax & ")"
- 'FilterHAWidth = "([SSWidth] < 320)"
- FilterVALoad = "([LStdC] >= " & VAmindLoad & " OR [LReinfC] >= " & VAmindLoad & ")"
- FilterHALoad = "([LStdC] >= " & HAmindLoad & " OR [LReinfC] >= " & HAmindLoad & ")"
- FilterVACircum = "([DODiam] >= " & VACircummind & " AND [DODiam] <= " & VACircummax & ")"
- FilterHACircum = "([DODiam] >= " & HACircummind & " AND [DODiam] <= " & HACircummax & ")"
- FilterVA = FilterVALoad & " AND " & FilterVAWidth & " AND " & FilterVACircum
- 'FilterHA = "(" & FilterHALoad & " AND " & FilterHACircum & ") AND " & FilterHAWidth
- FilterHA = FilterHACircum & " AND " & FilterHAWidth
- DVVA.RowFilter = FilterVA
- DVHA.RowFilter = FilterHA
- bds.Filter = FilterHA
- 'For Each rwv As DataRowView In bds
- ' Debug.Print(rwv.Item("Reifen"))
- 'Next
- Dim result = From rw In dt Where (rw.Item("LStdC") >= HAmindLoad Or rw.Item("LReinfC") >= HAmindLoad) _
- And (rw.Item("DODiam") >= HACircummind And rw.Item("DODiam") <= HACircummax) _
- And rw.Item("SSWidth") <= HAmax
- Debug.Print("Linq count: " & result.Count)
- Debug.Print("VA count nach Filter: " & DVVA.Count)
- Debug.Print("HA count nach Filter: " & DVHA.Count & " // Filter= " & DVHA.RowFilter)
- Debug.Print("HA bdscount nach Filter: " & bds.Count)
- Funktionen.saveDataviewToExcel(DVVA)
- 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!
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“ ()