У меня есть существующий модуль, который печатает серию отчетов на основе запроса (отчет класса CAP gr 5), проходя через другую таблицу (School_room_grade). Отчеты были распечатаны на основе условия WhereCondition в модуле, совпадающего со строками в таблице School_room_grade. Этот процесс используется для того, чтобы у каждой комбинации school_room_grade были свои отчеты вместе, и повторение отчетов не требуется.
Один из отчетов (CAP Math Gr 5) был изменен и теперь включает 7 связанных подотчетов, что замедляет процесс. Каждый из подотчетов основан на одном и том же запросе, но отсортирован по разным полям. Я подумал, что было бы лучше разорвать связь между подотчетами и ограничить запрос только одной комбинацией «школа_комната_класс» за раз. Когда я впервые сделал отчет, не связывая вложенные отчеты, казалось, что он работает быстрее. Но, конечно, когда он не связан, сортировка отчетов не работает.
Я думал, что мне следует сделать вложенный цикл с запросом снаружи, а затем выполнить цикл печати отчетов. Как вы думаете, это улучшит скорость?
Вот исходный код печати отчета, который работал до добавления в связанный отчет.
Option Compare Database
'------------------------------------------------------------
' Print Grade 5 & 6 CAP homeroom reports
'
'------------------------------------------------------------
Sub PrintReports()
Dim rs As DAO.Recordset
Dim rptArr As Variant
Dim rpt As Long
rptArr = Array("CAP MATH GR 5", "CAP ELA GR 5")
Set rs = CurrentDb.OpenRecordset("school_room_query_table_5")
With rs
.MoveFirst
Do While Not .EOF
For rpt = LBound(rptArr) To UBound(rptArr)
DoCmd.OpenReport ReportName:=rptArr(rpt), View:=acViewNormal, _
WhereCondition:="[school_room_grade] = '" & rs!school_room_grade & "'"
Next
.MoveNext
Loop
.Close
End With
MsgBox "Done"
End Sub
Запрос, на котором основаны все отчеты: [cap class report gr 5] — поле критериев — [school_room_grade]. Таблица, используемая для цикла, — [school_room_query_table_5], а соответствующее поле — [school_room_grade].
Я никогда не выполнял цикл по именованному запросу - можно ли это сделать?