Итак, у меня есть код, который фильтрует данные по нескольким критериям. Все остальные критерии работают нормально, но они основаны на текстовых полях. так что код просто
Dim SubjFilter As String = "Subjects = '" & TxtSubj.Text & " '"
а затем идентичен нижней части кода ниже. Это прекрасно печатает строку в списке, но когда я пытаюсь сделать это с помощью переключателей, кажется, что не удается найти критерии. В CSV каждая строка в 4-м столбце содержит информацию о 75+ или 85+ или что-то в этом роде, поэтому я знаю, что проблема не в этом. Никакой ошибки не возникает, это просто случай, когда он не может найти что-либо в этой категории или, возможно, что-то не так с тем, как я печатаю это в списке. Любое понимание будет оценено по достоинству, так как я сейчас потерялся.
Dim ATARFilter As String
If RBtn70.Checked = True Or
Rbtn75.Checked = True Or
RBtn80.Checked = True Or
Rbtn85.Checked = True Or
Rbtn90.Checked = True Or
Rbtn95.Checked = True Then 'if any of the radiobuttons are checked then the same printing process as before is done
If RBtn70.Checked = True Then
ATARFilter = "ATAR = '70+'"
ElseIf Rbtn75.Checked = True Then
ATARFilter = "ATAR = '75+'"
ElseIf RBtn80.Checked = True Then
ATARFilter = "ATAR = '80+'"
ElseIf Rbtn85.Checked = True Then
ATARFilter = "ATAR = '85+'"
ElseIf Rbtn90.Checked = True Then
ATARFilter = "ATAR = '90+'"
ElseIf Rbtn95.Checked = True Then
ATARFilter = "ATAR = '95+'" 'all of these just set the string value of the filter to be equal to whatever is on the RadioButton
Dim FilteredRowsATAR As DataRow() = TutorTable.Select(ATARFilter)
For Each row As DataRow In FilteredRowsATAR
ListBox1.Items.Add(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", row("Name"), row("Age"), row("Subjects"), row("ATAR"), row("Location"), row("PhNumber")))
Next
End If
End If
Меня смущает то, что вы имеете в виду, как вырвать лишнее пространство, какое дополнительное пространство?
Похоже, что ваш выбор будет применен, только если Rbtn95 истинно.
Только последнее условие в вашем Else Если содержит код для применения фильтра, вам нужно переместить его за пределы блока
Dim ATARFilter As String
If RBtn70.Checked = True Or
Rbtn75.Checked = True Or
RBtn80.Checked = True Or
Rbtn85.Checked = True Or
Rbtn90.Checked = True Or
Rbtn95.Checked = True Then 'if any of the radiobuttons are checked then the same printing process as before is done
If RBtn70.Checked = True Then
ATARFilter = "ATAR = '70+'"
ElseIf Rbtn75.Checked = True Then
ATARFilter = "ATAR = '75+'"
ElseIf RBtn80.Checked = True Then
ATARFilter = "ATAR = '80+'"
ElseIf Rbtn85.Checked = True Then
ATARFilter = "ATAR = '85+'"
ElseIf Rbtn90.Checked = True Then
ATARFilter = "ATAR = '90+'"
ElseIf Rbtn95.Checked = True Then
ATARFilter = "ATAR = '95+'" 'all of these just set the string value of the filter to be equal to whatever is on the RadioButton
End If
Dim FilteredRowsATAR As DataRow() = TutorTable.Select(ATARFilter)
For Each row As DataRow In FilteredRowsATAR
ListBox1.Items.Add(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", row("Name"), row("Age"), row("Subjects"), row("ATAR"), row("Location"), row("PhNumber")))
Next
End If
Для этого фрагмента кода требуется Imports System.Linq. Проверка ничего не говорит, что ничего не проверено
Private Sub OPCode()
Dim ATARFilter As String = ""
Dim rButton As RadioButton = GroupBox1.Controls.OfType(Of RadioButton).FirstOrDefault(Function(r) r.Checked = True)
If rButton Is Nothing Then
MessageBox.Show("Please make a selection.")
Exit Sub
Else
ATARFilter = rButton.Text 'or if the exact text cannot not appear
' in the text of the radio button then store it in the .Tag property
'at design time and change code to = CStr(rButton.Tag)
End If
Dim FilteredRowsATAR As DataRow() = TutorTable.Select(ATARFilter)
For Each row As DataRow In FilteredRowsATAR
ListBox1.Items.Add(String.Format("{0}, {1}, {2}, {3}, {4}, {5}", row("Name"), row("Age"), row("Subjects"), row("ATAR"), row("Location"), row("PhNumber")))
Next
End Sub
Вырвите лишнее место из фильтра,
TxtSubj.Text & " '"
должен бытьTxtSubj.Text & "'"
... ИМХО также поменяйте свойOr
наOrElse
.