我创建了一个包含历史股票价格的数据库。在我的表单上,我有两个组合框,ComboBox_Ticker
并且ComboBox_Date
. 当这些组合框被填充时,我想检查数据库并查看数据库中是否存在相应的数据。如果是这样,我想将名为“In Database”的标签的文本更改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
我已经在我的项目中的其他形式上成功地实现了这个概念。这个有点不同,我不知道为什么我不能让这个工作。