循环访问整个 Access 2010 列表框

Posted

技术标签:

【中文标题】循环访问整个 Access 2010 列表框【英文标题】:Loop through entire Access 2010 listbox 【发布时间】:2015-05-18 17:29:58 【问题描述】:

我有一个带有列表框和日期选择器的表单。当我输入日期并从列表框中选择 40 个项目中的 1 个并单击我的按钮时,我能够生成一份报告。我的问题是,如何遍历所有 40 个项目并将每个报告导出为 pdf?任何帮助将不胜感激。此外,我希望每个报告都以与列表框中相同的名称保存。前任。第一份报告的标题是 RHM1,依此类推。

Private Sub Command3_Click()

MyFilter = "rptIncidentsByOrg"
MyPath = "C:\ComplyTrack\"
MyFilename = "Test.pdf"

For Each varItem In Me.lstActivityOrgs.ItemsSelected
    Debug.Print Me.lstActivityOrgs.Column(0, varItem)

DoCmd.OpenReport "rptIncidentsByOrg", acViewPreview, , "([Activity Org] = " & Chr(34) & Me.lstActivityOrgs.Column(0, i) & Chr(34) & ")"
DoCmd.OutputTo acOutputReport, "rptIncidentsByOrg", acFormatPDF, MyPath & MyFilename, True
DoCmd.Close acReport, "Test"

Next varItem

End Sub

【问题讨论】:

【参考方案1】:

文件名的更新选项“B”...

尝试类似:(根据需要更改 COLUMN)

A. To list only items selected:
Private Sub Command3_Click()
    For Each varItem In Me.lstActivityOrgs.ItemsSelected
        Debug.Print Me.lstActivityOrgs.Column(0, varItem)
        DoCmd.OpenReport "rptIncidentsByOrg", acViewPreview, , "([Activity Org] = "      & Chr(34) & Me.lstActivityOrgs.Column(XXX,varItem) & Chr(34) & ")"
    Next varItem
End Sub

Or B. List All Items:
Private Sub Command3_Click()
    MyFilter = "rptIncidentsByOrg"
    MyPath = "C:\ComplyTrack\"
    MyFilename = "<fromListBox>.pdf"
    For i = 0 To Me.lstActivityOrgs.ListCount
        MyFileName = Me.lstActivityOrgs.Column(0, i) & ".pdf"
        Debug.Print Me.lstActivityOrgs.Column(0, i)
        DoCmd.OpenReport "rptIncidentsByOrg", acViewPreview, , "([Activity Org] = "      & Chr(34) & Me.lstActivityOrgs.Column(XXX,i) & Chr(34) & ")"
        DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, MyPath & MyFileName
        DoCmd.Close acReport, "rptIncidentsByOrg"
    Next i
End Sub

【讨论】:

我选择了选项 B。第一个报告按预期生成并保存到我的 C:\。但是,在第一次报告完成后,我收到运行时错误 2501。我用我的问题发布了修改后的代码 我更新了“选项 B”以在列表框中按名称保存。您的错误 2501 的原因是您正在关闭不存在的报告“测试”——使用实际的报告名称(而不是文件名) 成功了。我正在将所有报告输出到我的 C;\ 驱动器,使用正确的名称和 pdf 格式,只需单击一下按钮

以上是关于循环访问整个 Access 2010 列表框的主要内容,如果未能解决你的问题,请参考以下文章

访问表单组合框 listindex 更改

Access 2007 VBA:构建一个列表框,其中包含来自另一个列表框的选择选项

访问列表框,包括来自文本框的信息

除了记录集之外,如何以编程方式将项目添加到 ms 访问列表/组合框

编辑绑定列表框内容后更新 MS Access

VBA - Access 03 - 遍历列表框,使用 if 语句进行评估