У меня есть существующий модуль, который печатает серию отчетов, основанных на запросе (Отчет классной комнаты CAP gr 5), просматривая другую таблицу (School_room_grade). Отчеты были напечатаны на основе условия WhereCondition в модуле, который соответствовал строкам таблицы School_room_grade. Этот процесс используется для того, чтобы в каждом комбо «school_room_grade» были свои отчеты, и использование отчетов не требуется.
Один из отчетов (CAP Math Gr 5) был изменен и теперь включает 7 связанных подотчетов, которые замедляют процесс. Каждый из подотчетов основан на одном и том же запросе, но сортируется с использованием разных полей. Я подумал, что может быть лучше отсоединить вложенные отчеты и ограничить запрос только одной комбинацией school_room_grade за раз. Когда я впервые сделал отчет без привязки к подотчетам, он, казалось, работал быстрее. Но, конечно, когда это не связано, сортировка отчетов не работает.
Я думал, что мне следует создать вложенный цикл с запросом снаружи, а затем выполнить цикл печати отчетов. Как вы думаете, это улучшит скорость?
Вот исходный код печати отчета, который работал до добавления в связанный отчет.
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
Запрос, на котором основаны все отчеты: [верхний классный отчет № 5] - поле критериев - [school_room_grade].
Таблица, используемая для цикла - [school_room_query_table_5], а соответствующее поле - [school_room_grade]
Я никогда не делал цикл через именованный запрос - это можно сделать?