我創建了一個包含歷史股票價格的數據庫。在我的表格中,我有兩個組合框,ComboBox_Ticker
和ComboBox_Date
。當這些組合框填滿時,我想檢查數據庫並查看數據庫中是否存在相應的數據。如果是這樣,我想將名爲Label_If_Present
的標籤文本更改爲「In Database」。如何用組合框更改事件觸發代碼
我的問題發生在更改事件中。一旦我改變了文本框中的數據,我希望所有這一切都發生。我已經嘗試了.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
我已經成功地實現我的項目內的其他形式的這一概念。這個有點不同,我不明白爲什麼我不能讓這個工作。
SelectedItemChanged或SelectedIndexChanged(或類似的東西)將是我通常的選擇這樣的事情。 –