【问题标题】:How to use a list of records as filter to run a macro in Access 2007如何使用记录列表作为筛选器在 Access 2007 中运行宏
【发布时间】:2020-07-13 21:13:07
【问题描述】:

我是在 Access 中编程的新手,可能有另一种方法来做我想做的事情,但我希望有人能帮助我。

  1. 我有一个包含 5 个字段的查询:日期、销售人员、项目、数量和价值。
  2. 在我的数据库中,我有大约 600 名不同的销售人员
  3. 我有一个链接到 1 中提到的查询的报告。基本上将信息放在表格格式中,以便打印。

我要做的是构建一个获取销售人员 1 的宏,在相应字段中过滤带有该记录的报告,将报告打印到带有销售人员姓名和日期的 pdf 文件,然后转到下一个销售人员,以此类推,直到到达最后一个销售人员。

简而言之,我需要为查询中显示的每个销售人员生成一个 pdf 文件。

我已经寻找了一个解决方案,但没有什么能接近我所需要的。

希望有人可以帮助或至少以可能的方式指导我完成此任务。

最好的

豪尔赫·桑托斯

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    以下 VBA 代码将从表中获取名称列表,然后运行并将报告另存为 PDF。

    Option Compare Database
    Option Explicit
    
    Function Print_Salesman_Report()
    Dim strSQL      As String
    Dim rs          As DAO.recordSet
    Dim dbs         As DAO.Database
    Dim strFileName As String
    
    Set dbs = CurrentDb
    strSQL = "select * from salesperson order by [salesperson name];"       ' Select Salesperson names (if dup's, you need to change sql)
    Set rs = dbs.OpenRecordset(strSQL)          ' Open list of names to process
    
    Do While Not rs.EOF                         ' Repeat until finished
        Debug.Print rs![salesperson name]
        strFileName = "C:\temp\" & rs![salesperson name] & ".pdf"       ' Create file name (modify as needed)
        DoCmd.OutputTo acOutputReport, "rptSalesperson", acFormatPDF, strFileName, False    ' Run the report
    
        rs.MoveNext     ' Get next salesperson
    Loop
    
    rs.Close            ' Wrap it up.  All Dunn here.
    Set rs = Nothing
    dbs.Close
    Set dbs = Nothing
    End Function
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2012-05-11
    • 2010-10-27
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多