在 ASP.NET 中,我可以选择从数据源构建 CheckBoxList 控件,其中项目的值可以是“Id”列(例如),而复选框旁边显示的文本来自“Name”列。
是否可以使用 VBA 为 Access 2003 做类似的事情?如果可能的话,我试图避免对项目列表进行硬编码,但不知道如何做类似的事情。
在 ASP.NET 中,我可以选择从数据源构建 CheckBoxList 控件,其中项目的值可以是“Id”列(例如),而复选框旁边显示的文本来自“Name”列。
是否可以使用 VBA 为 Access 2003 做类似的事情?如果可能的话,我试图避免对项目列表进行硬编码,但不知道如何做类似的事情。
只需使用列表框。Access 中的列表框很棒,因为它允许多列,但会根据您的要求隐藏第一列。而且您可以将列表框设置为允许多项选择(在列表框属性表的另一个选项卡中,将多选设置为“简单”
更好的是,您不需要任何代码来填写列表框,而是可以输入 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
因此,您无需在此处输入任何类型的列表。不清楚你是否“必须”在这里有一个实际的复选框 - 如果你愿意,你可以使用继续表单,但我认为上面的内容要简单得多,你根本不需要太多代码来设置它.