Переменная используется до того, как ей было присвоено значение, и теперь данные не фильтруются

Итак, у меня есть код, который фильтрует данные по нескольким критериям. Все остальные критерии работают нормально, но они основаны на текстовых полях. так что код просто

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

Вырвите лишнее место из фильтра, TxtSubj.Text & " '" должен быть TxtSubj.Text & "'" ... ИМХО также поменяйте свой Or на OrElse.

zaggler 09.08.2018 14:33

Меня смущает то, что вы имеете в виду, как вырвать лишнее пространство, какое дополнительное пространство?

Jack Wypior 09.08.2018 14:45

Похоже, что ваш выбор будет применен, только если Rbtn95 истинно.

Andrew Mortimer 09.08.2018 14:50
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
3
48
2

Ответы 2

Только последнее условие в вашем 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

Другие вопросы по теме