2012-08-08 48 views
1

我最近有一個問題如何從訪問數據庫填充組合框,但是我的最新問題對我來說有點棘手。VB.NET 2010-從訪問數據庫中的多列填充組合框

我需要從兩列從表中填充我的下一個組合框,即:

Reasoncode - 原因

,所以我想我的組合框如下所示 -

A - 帳戶

的S - 銷售

ST - 系統整潔

但是,原因代碼和原因描述存儲在我的數據庫的兩個獨立列中,並且它們不能連接在一起。這是可能的VB.Net,將多個列拖入一個組合框?

我當前的代碼來填充盒(LarsTech提供)

Protected Overrides Sub OnLoad(e As EventArgs) 
    Dim ds1 As New DataSet() 
    Dim ConnnectionString1 As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\Admin\Desktop\CancellationsAndMovements\CancellationsandMovements\cancmov.mdb" 

    Dim db1 As String = "SELECT reasoncode FROM Reason" 

    Using cn1 As New OleDbConnection(ConnnectionString1) 
     Using da As New OleDbDataAdapter(db1, cn1) 
      da.Fill(ds1, "reasoncode") 
     End Using 
    End Using 

    With drpMoveReason 
     .DisplayMember = "reasoncode" 
     .DataSource = ds1.Tables("reasoncode") 
     .SelectedIndex = 0 
    End With 

    MyBase.OnLoad(e) 

End Sub 

額外的專欄中,我想拉被稱爲「reasondesc」

如果可以填補這樣的幫助將不勝感激,也很感謝在我回寫到不同的數據庫時,我會如何寫回原因碼。

預先感謝您。

回答

0

這裏有幾個選項。爲什麼不嘗試在查詢串聯兩個:選擇reasoncode &「 - 」從& reasondesc ...

您可以通過進一步開發它: 選擇reasoncode,reasoncode +「 - 」 + reasondesc從描述...

然後使用原因代碼作爲valuemember,使寫回到表和描述作爲顯示成員。

1

您可以按照David Osborne的建議從數據庫獲取信息,也可以創建一個臨時數據表,該數據表具有一個ID列(您的原因碼)和連接的字符串作爲顯示列(將其命名爲description管他呢)。一旦擁有所有設置的臨時表列,您只需循環查看從數據庫獲取的所有記錄,然後手動將這些行添加到表中即可。

無論哪種情況,您都希望將組合框上的.ValueMember設置爲表中的reasoncode列,將.DisplayMember設置爲級聯原因碼和說明。然後,當您想要保存回數據庫時,只需從組合框中獲取.SelectedValue,它將成爲當前選擇的原因碼。