在ASP.NET中,我可以選擇從數據源構建CheckBoxList控件,其中項目的值可以是「Id」列(例如),而複選框旁邊顯示的文本來自「名稱」列。Databound Microsoft Access的CheckBoxList
是否可以使用VBA爲Access 2003做類似的事情?我試圖儘可能避免硬編碼項目列表,但無法弄清楚如何做與此類似的任何事情。
在ASP.NET中,我可以選擇從數據源構建CheckBoxList控件,其中項目的值可以是「Id」列(例如),而複選框旁邊顯示的文本來自「名稱」列。Databound Microsoft Access的CheckBoxList
是否可以使用VBA爲Access 2003做類似的事情?我試圖儘可能避免硬編碼項目列表,但無法弄清楚如何做與此類似的任何事情。
只需使用一個列表框。 Access中的列表框非常棒,因爲它允許多列,但會按照您的要求隱藏第一列。你可以設置列表框允許多個選擇(在列表框的屬性表的另一個選項卡中,將Multiselect設置爲「簡單」
甚至更好的是,你不需要任何代碼來填寫列表框,但可以在SQL類型或者簡單地立足於一個SQL查詢列表框中
所以一個列表框可以是這樣的:
按鈕打開所選項目到後面的代碼有用的PK ID列表如下所示:
Private Sub cmdFax_Click()
Dim strIDList As String
Dim vID As Variant
Dim strSQLWhere As String
For Each vID In Me.lstFaxList.ItemsSelected
If strIDList <> "" Then strIDList = strIDList & ","
strIDList = strIDList & lstFaxList.ItemData(vID)
Next
If strIDList <> "" Then
strSQLWhere = " ID in (" & strIDList & ")"
End If
DoCmd.OpenReport "rptFax", acViewPreview, , strSQLWhere
End Sub
如果你願意,你可以在供應代碼或設置列表框的SQL是這樣的:
Sub mytest()
Dim strSql As String
strSql = "Select ID, firstName, LastName, City " & _
"where city = 'Edmonton'"
Me.lstFaxList.RowSource = strSql
End Sub
這樣你就不需要在這裏輸入任何類型的列表。不清楚你是否「必須」在這裏有一個實際的複選框 - 如果你願意,你可以使用連續表單,但是我認爲上述內容更加簡單,你不需要太多的代碼就可以設置。
這看起來會是完美的 - 謝謝! – RubyHaus 2012-08-21 17:54:12
我不知道爲什麼我在你的問題中閱讀組合框,抱歉。 – Fionnuala 2012-08-17 19:56:40
看到一些想法http://stackoverflow.com/questions/814526/checked-list-box – Fionnuala 2012-08-17 20:03:07