Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 创建循环以打开和导出报告_Loops_Ms Access_While Loop_Vba_Ms Access 2016 - Fatal编程技术网

Loops 创建循环以打开和导出报告

Loops 创建循环以打开和导出报告,loops,ms-access,while-loop,vba,ms-access-2016,Loops,Ms Access,While Loop,Vba,Ms Access 2016,背景: 我有一个数据库,我正在为学校董事会制作。我正处于最后阶段,从来没有一个循环是我想不出来的…除了这一个 设置: 下面是运行报告“rpt\u SeatingChart\u AMFirst”的查询的SQL 它请求输入的表单是报告应该显示的学校。因此,如果我从combo113中选择school 1,报告将只显示分配给该学校的学生。我在这里找到了一张有学校的桌子:[tbl_学校]![学校名称] 执行: 点击按钮时,我希望[rpt_SeatingChart_AMFirst]打开[tbl_School

背景: 我有一个数据库,我正在为学校董事会制作。我正处于最后阶段,从来没有一个循环是我想不出来的…除了这一个

设置: 下面是运行报告“rpt\u SeatingChart\u AMFirst”的查询的SQL

它请求输入的表单是报告应该显示的学校。因此,如果我从combo113中选择school 1,报告将只显示分配给该学校的学生。我在这里找到了一张有学校的桌子:[tbl_学校]![学校名称]

执行:
点击按钮时,我希望[rpt_SeatingChart_AMFirst]打开[tbl_Schools]表中的第一个[School Name]。将该报告导出为PDF格式,然后作为表中的第二个[学校名称]关闭并重新打开。导出并重复,直到从表中打开该报告中的所有学校。

我将从报告查询中的
WHERE
子句中删除
[School Name]
条件,以便您可以在打开报告时指定此条件。您的按钮事件需要打开一个记录集

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("select [School Name] from tbl_Schools")
然后,您可以循环遍历此记录集,并将学校名称传递给OpenReport命令

While Not rs.EOF
    DoCmd.OpenReport "rpt_SeatingChart_AMFirst", , , "[School Name] = '" & rs(0) & "'"
    rs.MoveNext
Loop

Set rs = Nothing 
这完全来自内存,因此您可能需要检查OpenReport命令中的逗号数-您要查找的是
Where condition
参数。如果要使用所选组合框值从表单中打开报告,可以使用相同的
Where condition
技巧

希望这有帮助

[编辑]我刚刚发现了PDF要求。为此,我要做的是创建一个特定的PDF版本的报告,您可以将报告的属性设置为打印到特定的打印机,即PDF打印机驱动程序。在循环中,您可以使用学校名称重命名PDF文件,这样它就不会被下一个学校的报告覆盖


[另一次编辑!]刚刚记住,在尝试重命名PDF文件之前,您需要确保报告已完成PDF文件的创建。我记不起这篇文章的确切代码,因此,除非其他人在此期间发布更好的答案,否则你需要等到我回到办公室后,我才能给你这个答案。

我无法添加评论,但请尝试对Skippy发布的内容进行此编辑

While Not rs.EOF
    DoCmd.OpenReport "rpt_SeatingChart_AMFirst", , , "[School Name] = '" & rs.fields("[School Name]").value & "'"
    rs.MoveNext
Loop

Set rs = Nothing 

按如下方式编辑代码:

Private Sub GreenBinderReport_Click() 

    Dim OP1 As String
    Dim RPT As String
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset("select [School Name] from tbl_Schools")
    OP1 = "C:\Users\Joel Dahl\Desktop\ExportTest\"
    RPT = "rpt_SeatingChart_TEST"

    Do While Not rs.EOF
        DoCmd.OpenReport "rpt_SeatingChart_TEST", acViewPreview, , "[School Name] = '" & rs(0) & "'"
        DoCmd.OutputTo acOutputReport, RPT, acFormatPDF, OP1 & rs(0) & ".pdf"
        DoCmd.Close acReport, RPT
        rs.MoveNext
    Loop

    Set rs = Nothing
End Sub

谢谢你让我站起来跑步!我在你的代码中添加了一些东西,试图从中得到我需要的东西。我非常接近,但我希望我错过了一些小东西。它在表中的三条记录之间循环,并创建三个报告。但是,它没有将筛选器应用于报表。所有三所学校都出现在每份报告中,而不是每份报告都有一所学校。我希望我澄清得足够清楚!我将把代码放在下一个注释中,因为它太长了。
Private Sub GreenBinderReport_Click()Dim OP1 as String Dim RPT as String Dim rs as DAO.Recordset rs=CurrentDb.OpenRecordset(“从tbl_学校选择[学校名称]”)OP1=“C:\Users\Joel Dahl\Desktop\ExportTest\”RPT=“RPT\u SeatingChart\u TEST”Do While Not rs.EOF DoCmd.OutputTo acOutputReport,RPT,acFormatPDF'DoCmd.OpenReport“RPT_SeatingChart_TEST”,acViewPreview,“[School Name]=””&rs(0)和“'”rs.MoveNext循环集rs=Nothing End Sub
Private Sub GreenBinderReport_Click() 

    Dim OP1 As String
    Dim RPT As String
    Dim rs As DAO.Recordset

    Set rs = CurrentDb.OpenRecordset("select [School Name] from tbl_Schools")
    OP1 = "C:\Users\Joel Dahl\Desktop\ExportTest\"
    RPT = "rpt_SeatingChart_TEST"

    Do While Not rs.EOF
        DoCmd.OpenReport "rpt_SeatingChart_TEST", acViewPreview, , "[School Name] = '" & rs(0) & "'"
        DoCmd.OutputTo acOutputReport, RPT, acFormatPDF, OP1 & rs(0) & ".pdf"
        DoCmd.Close acReport, RPT
        rs.MoveNext
    Loop

    Set rs = Nothing
End Sub