過去の株価を含むデータベースを作成しました。私のフォームには、2 つのコンボボックスが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
このコンセプトをプロジェクト内の他のフォームにうまく実装しました。これは少し異なり、なぜこれが機能しないのかわかりません。