1

在 ASP.NET 中,我可以选择从数据源构建 CheckBoxList 控件,其中项目的值可以是“Id”列(例如),而复选框旁边显示的文本来自“Name”列。

是否可以使用 VBA 为 Access 2003 做类似的事情?如果可能的话,我试图避免对项目列表进行硬编码,但不知道如何做类似的事情。

4

1 回答 1

2

只需使用列表框。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

因此,您无需在此处输入任何类型的列表。不清楚你是否“必须”在这里有一个实际的复选框 - 如果你愿意,你可以使用继续表单,但我认为上面的内容要简单得多,你根本不需要太多代码来设置它.

于 2012-08-18T16:46:24.447 回答