2012-08-08 156 views
1

我目前正在嘗試從MDB數據庫中填充VB.Net中窗體上的下拉框,以供我爲工作而工作。VB.Net 2010 - 從MDB訪問數據庫填充組合框

我在名爲「cancmov」的數據庫中有一個名爲「Months」的表,並且我試圖從中拉出的字段名爲MoveMonth。

當前的代碼,我現在用的就是: -

Private Sub drpMovedFrom_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles drpMovedFrom.SelectedIndexChanged 


    Dim ConnnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Admin\Desktop\CancellationsAndMovements\CancellationsandMovements\cancmov.mdb" 
    Dim db As String = "SELECT MoveMonth FROM Months" 
    Dim cn As New OleDbConnection(ConnnectionString) 
    Dim da As New OleDbDataAdapter(db, cn) 
    Dim ds As New DataSet() 

    da.Fill(ds, "MoveMonth") 

    With drpMovedFrom 
     .DataSource = ds.Tables("MoveMonth") 
     .SelectedIndex = 0 
    End With 

End Sub 

正如你可能從上面的收集,我目前在學習的過程中,所以很多上面的我試圖讓我的頭轉過身來。實際上,我從Google上發現的一個類似問題中提取了上述代碼。任何幫助將不勝感激,即使只是指向一個資源,我可以學習爲自己做這個。

感謝您提前。

+0

你目前的版本有什麼問題? – 2012-08-08 19:59:39

回答

4

蝙蝠:

當下拉指數變化時,您正在調用此代碼。可能不是你想要的,因爲它總是將其設置回零。

另外,嘗試使用以方括號您的可支配的對象:

Private ds As New DataSet() 
Private ConnnectionString As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Admin\Desktop\CancellationsAndMovements\CancellationsandMovements\cancmov.mdb" 

Protected Overrides Sub OnLoad(e As EventArgs) 
    Dim db As String = "SELECT MoveMonth FROM Months" 

    Using cn As New OleDbConnection(ConnnectionString) 
    Using da As New OleDbDataAdapter(db, cn) 
     da.Fill(ds, "MoveMonth") 
    End Using 
    End Using 

    With drpMovedFrom 
     .DisplayMember = "MoveMonth" 
     .DataSource = ds.Tables("MoveMonth") 
     .SelectedIndex = 0 
    End With 

    MyBase.OnLoad(e) 
End Sub 

此外,組合框有DisplayMember和ValueMember屬性,您映射到您的數據源。 DisplayMember是您在列表中看到的值,ValueMember通常是可見屬性的ID值。

+0

你我的朋友,是個紳士和學者!這工作完美。我已經採納了你的建議,將它從組合框本身移到可以隨意調用的子組中。非常感謝你,你不知道你剛剛解決了這個程序有多少未來的問題。 – user1585769 2012-08-08 20:09:51