Как запустить код с помощью события изменения ComboBox

У меня есть база данных, содержащая исторические цены на акции. На моей форме у меня есть два комбинированных списка, ComboBox_Ticker а также ComboBox_Date, Когда эти списки заполнены, я хочу проверить базу данных и посмотреть, существуют ли соответствующие данные в базе данных. Если это так, я хочу изменить текст метки с именем Label_If_Present в "В базе данных".

Моя проблема возникает с событием изменения. Я хочу, чтобы все это произошло, как только я изменю данные в текстовых полях. Я пробовал оба .TextChanged а также .LostFocus События. ". TextChanged" запускает код на ранней стадии и выдает ошибку в моем операторе команды SQL. Событие `.LostFocus'вообще не вызывает мой код.

Вот мой текущий код:

Public databaseName As String = "G:\Programming\Nordeen Investing 3\NI3 Database.mdb"
Public con As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & databaseName)
Public tblName As String = "Historical_Stock_Prices"

Private Sub Change_Labels(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox_Ticker.TextChanged, ComboBox_Date.TextChanged
    con.Close()
    Dim dr As OleDbDataReader
    con.Open()
    If (File.Exists(databaseName)) Then
        Dim restrictions(3) As String
        restrictions(2) = tblName
        Dim dbTbl As DataTable = con.GetSchema("Tables", restrictions)
        If dbTbl.Rows.Count = 0 Then
        Else
            Dim cmd2 As New OleDb.OleDbCommand("SELECT * FROM " & tblName & " WHERE  Ticker = '" & ComboBox_Ticker.Text & "' " & "  AND  Date1 = '" & ComboBox_Date.Text & "'", con)
            dr = cmd2.ExecuteReader
            If dr.Read() = 0 Then
                'If record does not exist
                Label_If_Present.Text = ""
            Else
                Label_If_Present.Text = "In Database"
            End If
            con.Close()
        End If
    Else
    End If
End Sub

Я успешно реализовал эту концепцию в других формах моего проекта. Этот немного отличается, и я не могу понять, почему я не могу заставить этот работать.

1 ответ

Обработка TextChanged событие должно работать, однако вам нужно установить DropDownStyle в DropDownList так что свойство Text может быть только заданным значением.
Затем убедитесь, что в обоих выпадающих списках выбраны значения. Примерно так должно работать:

  If ComboBox_Ticker.Text <> "" AndAlso DateTime.TryParse(ComboBox_Date.Text, Nothing) Then
Другие вопросы по тегам