ACCESS VBA 从列表框中选择多个值并执行查询名称

Posted

技术标签:

【中文标题】ACCESS VBA 从列表框中选择多个值并执行查询名称【英文标题】:ACCESS VBA selecting multiple values from listbox and executing the query name 【发布时间】:2015-10-11 21:38:18 【问题描述】:

我的目的是让用户从列表框中选择一个或多个查询名称,并提示使用这些名称执行查询。

到目前为止,我有这个代码:

Private Sub Command43_Click()
  Dim rs As DAO.Recordset
  Dim valSelect As Variant
  Dim strValue As String

    For Each valSelect In Me.Combo29.ItemsSelected
    strValue = strValue & "'" & Me.Combo29.ItemData(valSelect) & "',"
    strValue = Left(strValue, Len(strValue) - 1)

    Set rs = CurrentDb.OpenRecordset(strValue)

    Debug.Print rs
   rs.Close
 Set rs = Nothing
 Next valSelect
MsgBox "Complete!"
End Sub

运行代码时,出现 Access 找不到查询名称的错误。

请帮忙!

【问题讨论】:

【参考方案1】:

一个命令只能打开一个查询,所以试试:

For Each valSelect In Me!Combo29.ItemsSelected
    strValue = Me!Combo29.ItemData(valSelect)
    Set rs = CurrentDb.OpenRecordset(strValue)
    Debug.Print strValue, rs.RecordCount
Next
rs.Close
Set rs = Nothing

并将您的控件重命名为有意义的名称。

【讨论】:

我在 Set rs = CurrentDb.OpenRecordset(strValue) 收到一个错误,指出这是一个无效操作。 上面的代码只是带有循环的sn-p。你还是得把 rs 调暗。 rs 变暗,但出现相同的错误: Private Sub Command43_Click() Dim rs As DAO.Recordset Dim valSelect As Variant Dim strValue As String For Each valSelect In Me.Combo29.ItemsSelected strValue = Me. Combo29.ItemData(valSelect) Set rs = CurrentDb.OpenRecordset(strValue) Debug.Print strValue, rs.RecordCount Next rs.Close Set rs = Nothing MsgBox "完成!"结束子 而valSelect是一个数字而strValue是一个字符串? valSelect 是 Variant 而 strValue 是一个字符串。但是,这是对我的代码的更新,我管理它做我需要的(从列表框中运行选定的查询名称(无论是单选还是多选)- Private Sub Command43_Click() Dim rs As DAO.Recordset Dim valSelect As Variant Dim strValue As String Set db = CurrentDb() For Each valSelect In Me.Combo29.ItemsSelected DoCmd.SetWarnings (Warningsoff) strValue = Me.Combo29.ItemData(valSelect) DoCmd.OpenQuery (strValue) Next DoCmd.SetWarnings (Warningson) MsgBox "Complete!"结束子

以上是关于ACCESS VBA 从列表框中选择多个值并执行查询名称的主要内容,如果未能解决你的问题,请参考以下文章

当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询

Access VBA 如何根据多选列表框中的选择过滤记录集?

如何确定在 Access VBA 中键入组合框和从下拉列表中选择之间的区别?

Access VBA Listbox.Requery 命令清除列表项

在列表框 ms-access 2013 VBA 中将多个不同的字段作为列表项返回

如何在 Access 中打开表单,自动选择组合框中的值并显示详细信息?