【发布时间】:2012-08-17 03:41:59
【问题描述】:
在 ASP.NET 中,我可以选择从数据源构建 CheckBoxList 控件,其中项目的值可以是“Id”列(例如),而复选框旁边显示的文本来自“名称” "列。
是否可以使用 VBA 对 Access 2003 执行类似的操作?如果可能的话,我会尽量避免对项目列表进行硬编码,但不知道如何做类似的事情。
【问题讨论】:
-
我不知道为什么我在你的问题中阅读了组合框,对不起。
在 ASP.NET 中,我可以选择从数据源构建 CheckBoxList 控件,其中项目的值可以是“Id”列(例如),而复选框旁边显示的文本来自“名称” "列。
是否可以使用 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
因此,您无需在此处输入任何类型的列表。不清楚你是否“必须”在这里有一个实际的复选框 - 如果你愿意,你可以使用继续表单,但我认为上面的内容要简单得多,你根本不需要太多代码来设置它.
【讨论】: