ฉันมีโมดูลที่มีอยู่ซึ่งพิมพ์ชุดรายงานตามแบบสอบถาม (รายงานห้องเรียน 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
ข้อความค้นหาที่รายงานทั้งหมดอิงตาม: [cap Classroom Report gr 5] - ช่องเกณฑ์คือ [school_room_grade] ตารางที่ใช้สำหรับลูปคือ [school_room_query_table_5] และช่องที่ตรงกันคือ [school_room_grade]
ฉันไม่เคยทำการวนซ้ำแบบสอบถามที่มีชื่อ - สามารถทำได้หรือไม่