Akses 2007 bagaimana menggunakan VBA untuk mengulang Kueri dan mengulang laporan cetak

Saya memiliki modul yang mencetak serangkaian laporan berdasarkan kueri (Laporan kelas CAP gr 5) dengan mengulang tabel lain (School_room_grade). Laporan dicetak berdasarkan WhereCondition dalam modul yang cocok dengan baris dalam tabel School_room_grade. Proses ini digunakan agar setiap kombo kelas_ruang_sekolah mempunyai laporannya secara bersamaan dan penggunaan laporan tersebut tidak diperlukan.

Salah satu laporan (CAP Math Gr 5) telah dimodifikasi dan sekarang mencakup 7 sublaporan tertaut yang membuat prosesnya lambat. Masing-masing sublaporan didasarkan pada kueri yang sama namun diurutkan menggunakan bidang yang berbeda. Saya pikir mungkin lebih baik untuk membatalkan tautan sublaporan dan membatasi kueri hanya pada satu kombinasi kelas_ruang_sekolah pada satu waktu. Ketika saya pertama kali membuat laporan tanpa menghubungkan sublaporan, laporan itu sepertinya berjalan lebih cepat. Namun tentu saja bila tidak dihubungkan maka penyortiran laporan tidak akan berfungsi.

Saya berpikir bahwa saya harus membuat loop bersarang dengan kueri di luar dan kemudian mengulangi pencetakan laporan. Apakah menurut Anda ini akan meningkatkan kecepatan?

Berikut kode pencetakan laporan asli yang berfungsi sebelum ditambahkan ke laporan tertaut.

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

Kueri yang menjadi dasar semua laporan: [laporan kelas cap gr 5] - bidang kriterianya adalah [kelas_ruang_sekolah]. Tabel yang digunakan untuk perulangan adalah [school_room_query_table_5] dan bidang yang cocok adalah [school_room_grade]

Saya belum pernah melakukan perulangan melalui kueri bernama - dapatkah itu dilakukan?


person Brent    schedule 21.10.2010    source sumber
comment
Saya telah memutuskan untuk membagi kueri menjadi dua dan menjalankan laporan dari kueri terpisah yang lebih kecil ini. Itu telah meningkatkan kinerja. Saya masih tertarik untuk mengetahui apakah mungkin untuk mengulang kueri bernama dan hanya mereferensikan nama kueri atau apakah Anda harus menyalin seluruh sintaks ke dalam VBA dan memasukkan bidang kriteria ke dalam pernyataan Where sintaks tersebut.   -  person Brent    schedule 22.10.2010


Jawaban (1)


Dim db as Database
Dim rs as RecordSet

Set db = DAO.OpenDatabase("Database path")
Set rs = db.OpenRecordSet("Query name")

For i = 0 To rs.QueryDefs.Count - 1

     rs.QueryDefs.Name

next i

Sesuatu seperti ini seharusnya berfungsi untuk mengulang nama semua nama definisi kueri.

person Roi-Kyi Bryant    schedule 26.08.2011