Dave the Golfer Ответов: 2

Как отфильтровать dataview с помощью двух фильтров


У меня есть dataview, содержащий результаты соревнований по гольфу. Я хочу разделить результаты на три дивизиона, основанные на "гандикапе"
У меня есть две глобальные переменные а именно:
GlobalVariables.DivNo
и
GlobalVariables.DivNo2
которые определяются из csv файла как 16 и 20
Для первого отдела мой код, который работает удовлетворительно, таков:
Dim LowHandi As String = GlobalVariables.DivNo + 1
        MResultsDV.RowFilter = "Handicap <" & LowHandi
третий код подразделения, который также работает удовлетворительно, является
MResultsDV.RowFilter = "Handicap >" & GlobalVariables.DivNo2
Однако мой код, который должен отфильтровывать результаты для гандикапов между 17 и 20, не работает.

Что я уже пробовал:

Моя первая попытка была
Dim HighHandi As String = GlobalVariables.DivNo2 + 1
        MResultsDV.RowFilter = "Handicap >" & GlobalVariables.DivNo
        MResultsDV.RowFilter = "Handicap <" & HighHandi
Однако последний фильтр переписал первый.
Итак, я попробовал
Dim HighHandi As String = GlobalVariables.DivNo2 + 1
        MResultsDV.RowFilter = "Handicap >" & GlobalVariables.DivNo And "Handicap <" & HighHandi
но получил следующую ошибку;
Система.InvalidCastException: 'преобразование из строки "гандикап >16" В тип "длинный" недопустимо.'
Тогда я попробовал
Dim HighHandi As String = GlobalVariables.DivNo2 + 1
        MResultsDV.RowFilter = "Handicap >" & GlobalVariables.DivNo AndAlso "Handicap <" & HighHandi
но получил эту ошибку; система.InvalidCastException: 'преобразование из строки "гандикап >16" В тип 'Boolean' недопустимо.'

Я тоже пытался
MResultsDV.RowFilter = '"Handicap >" & GlobalVariables.DivNo' And '"Handicap <" & HighHandi'
который бежал но не работал

2 Ответов

Рейтинг:
14

Bryian Tan

Здесь должен быть синтаксис для возврата между двумя числами

MResultsDV.RowFilter = "Handicap >=" & GlobalVariables.DivNo & " AND Handicap <=" & HighHandi


Maciej Los

5ed!

Dave the Golfer

Благодаря смене работы

Bryian Tan

Спасибо :)

Рейтинг:
10

Maciej Los

Один DataView.Свойство RowFilter (System.Data) | Microsoft Docs[^] собственность работает таким же образом, как и объект DataColumn.Свойство Выражения (System.Data) | Microsoft Docs[^].
Таким образом, вы можете построить сложное выражение, например:

DataView11.RowFilter = "ColumnName1 = 555 AND (ColumnName2 Like 'A*' OR ColumnName3 Like '*A')"


Операторы:
Конкатенация допускается с использованием логических операторов AND, OR и NOT. Вы можете использовать круглые скобки для группировки предложений и принудительного приоритета. Оператор AND имеет приоритет над другими операторами. Например:

(LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'


Строковые операторы:
Чтобы объединить строку, используйте символ+. Значение свойства CaseSensitive класса DataSet определяет, являются ли сравнения строк чувствительными к регистру.


Пожалуйста, перейдите по ссылкам, которые я вам предоставил.


Dave the Golfer

Пробовал эти ссылки раньше, но не смог понять синтаксис. Спасибо за помощь.

Maciej Los

Всегда пожалуйста.
Если мой asnwer был полезен, пожалуйста, примите его как решение (зеленая кнопка).

Овации
Мацей