Программирование отчета MS Access для фильтрации по определенному идентификатору - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть набор записей, по которому я зацикливаюсь, и я хотел бы создать отчет, который отображает информацию для каждого идентификатора пользователя в наборе записей.Я нашел много постов, которые помогли мне написать код, но я не могу понять, почему мой код продолжает открывать отчет со всеми идентификаторами пользователей вместо каждого идентификатора пользователя в отдельности.Вот код, который я использую:


Public Function report()

Dim rs As Recordset
Dim strReportName As String
Dim fileName, pathName As String

pathName = "C:\Users\Joe\Documents"
Set rs = CurrentDb.OpenRecordset("SELECT Add_user, keyer FROM qryProductionReport;")

strReportName = "ProductionReport"

Do While Not rs.EOF
    DoCmd.OpenReport strReportName, acViewPreview, , "Add_user = " & rs!Add_user, acHidden
    DoCmd.OutputTo acOutputReport, strReportName, acFormatPDF, pathName & strReportName & rs!Keyer & ".PDF"
    DoCmd.Close acReport, strReportName
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing

End Function

Я убедился, что мое имя поля Add_user в отчете соответствует фильтру, который у меня есть в строке DoCmd.OpenReport.Я использую Access 2016. Спасибо за помощь.

1 Ответ

0 голосов
/ 23 сентября 2019

Одним из способов является изменение вашего отчета для использования TempVars критериев
(например, [TempVars]![userId]), как объяснено здесь .Затем вы можете использовать его так:

Public Function report()

Dim rs As Recordset, strReportName As String
Dim fileName as String, pathName As String

pathName = "C:\Users\Joe\Documents\"
Set rs = CurrentDb.OpenRecordset("SELECT Add_user, keyer FROM qryProductionReport;")
strReportName = "ProductionReport"

Do While Not rs.EOF
    TempVars("userId") = rs!Add_user
    DoCmd.OutputTo acOutputReport, strReportName, acFormatPDF, pathName & strReportName & rs!Keyer & ".PDF"
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing

End Function
...