2013-07-25 55 views
1

我創建了一個包含歷史股票價格的數據庫。在我的表格中,我有兩個組合框,ComboBox_TickerComboBox_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 

我已經成功地實現我的項目內的其他形式的這一概念。這個有點不同,我不明白爲什麼我不能讓這個工作。

+0

SelectedItemChanged或SelectedIndexChanged(或類似的東西)將是我通常的選擇這樣的事情。 –

回答

2

處理TextChanged事件應該可行,但是您需要將DropDownStyle設置爲DropDownList,以便Text屬性只能是給定值。
然後檢查兩個組合框是否有選定的值。像這樣的東西應該工作:

If ComboBox_Ticker.Text <> "" AndAlso DateTime.TryParse(ComboBox_Date.Text, Nothing) Then 
+1

這可能是更好的檢查日期ticker的DateTime.TryParse(ComboBox_Date.Text,Nothing)實際日期'而不是任何文本。還應該查看[命令參數](http://msdn.microsoft.com/zh-cn/library/system.data.oledb.oledbcommand.parameters.aspx)以幫助避免注入攻擊。 – kwwallpe

+0

這部分工作。最初我無法完成一個組合框。現在我可以填寫一個comobobox,但只要我輸入一個東西到另一個錯誤再次出現。它不會等到我完成了兩個組合框的輸入。 – gromit1

+0

@kwwallpe這是我收到的錯誤'System.Data.dll中發生'System.Data.OleDb.OleDbException'類型的未處理異常 其他信息:標準表達式中的數據類型不匹配。' – gromit1

相關問題