(Sorry if I have repeated this, it did not appear the first time)
I have the following code on a button. The idea is that when this button is
clicked it prints several reports automatically then loops through several
other reports and prints them. These reports are not sent to a printer but
sent to a program called Fine Print PDF Factory which turns them into a PDF
file (set as the default printer)
This all works perfectly unless any of the reports have more than about
250-300 pages, if more than this then I occasionally get an error message
saying "Out Of Stack Space" or more often Access just closes in the middle
of a report without any message.
I am concerned about the (rst.Close) part, is this sufficient to return the
system memory? Should there be other specific command to do this? Does
anyone have any suggestions?
I have not tried sending it to a real printer as these reports contain
colour pictures and 300 of them would take a long time to test, I suppose
the problem could be with the PDF Factory but this seems unlikely as I have
printed long Word documents using it.
Many thanks in advance.
Private Sub Command134_Clic k()
On Error GoTo ErrReport
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Set dbs = CurrentDb()
Set rst = dbs.OpenRecords et("PrintDefaul tsAssendingQuer y") ' set to the
query
'added 7/7/03. print Cover first then Index report before other reports
'Check if any records first
Dim NumRecs As Long
NumRecs = DCount("[SortOrder]", "[TocCountQuery]", "[SortOrder]")
If NumRecs < 1 Then
MsgBox "There is No Data to print from any of the selected reports.",
vbCritical, "Error"
Exit Sub
End If
'Check if Outline Picture has been selected 24/07/03
Dim NumOutline As Long
NumOutline = DCount("[OutlineDrwaingI mpSiteID]", "[OutlineCountQue ry]",
"[OutlineDrwaingI mpSiteID]")
If NumOutline < 1 Then
MsgBox "Please enter the Site Outline Picture before printing reports.",
vbCritical, "Error"
Exit Sub
End If
'print these first
DoCmd.OpenRepor t "SiteOutlineRep ", acNormal, "", "" 'open the reports
DoCmd.OpenRepor t "NameAddressRep ", acNormal, "", ""
DoCmd.OpenRepor t "IndexRep", acNormal, "", "" 'open the reports
With rst
..MoveFirst
Do Until .EOF
strSQL = rst![ActualName] 'The field name on the query
DoCmd.OpenRepor t strSQL, acNormal, "", "" 'open the reports
..MoveNext
Loop
rst.Close
End With
Exit_OpenCustRe p_Click:
Exit Sub
ErrReport: 'Error checking
Select Case err
Case 2501 'the open report action was cancelled
Resume Next
Case Else
MsgBox Error$
End Select
Resume Exit_OpenCustRe p_Click
End Sub
I have the following code on a button. The idea is that when this button is
clicked it prints several reports automatically then loops through several
other reports and prints them. These reports are not sent to a printer but
sent to a program called Fine Print PDF Factory which turns them into a PDF
file (set as the default printer)
This all works perfectly unless any of the reports have more than about
250-300 pages, if more than this then I occasionally get an error message
saying "Out Of Stack Space" or more often Access just closes in the middle
of a report without any message.
I am concerned about the (rst.Close) part, is this sufficient to return the
system memory? Should there be other specific command to do this? Does
anyone have any suggestions?
I have not tried sending it to a real printer as these reports contain
colour pictures and 300 of them would take a long time to test, I suppose
the problem could be with the PDF Factory but this seems unlikely as I have
printed long Word documents using it.
Many thanks in advance.
Private Sub Command134_Clic k()
On Error GoTo ErrReport
Dim dbs As Database
Dim rst As Recordset
Dim strSQL As String
Set dbs = CurrentDb()
Set rst = dbs.OpenRecords et("PrintDefaul tsAssendingQuer y") ' set to the
query
'added 7/7/03. print Cover first then Index report before other reports
'Check if any records first
Dim NumRecs As Long
NumRecs = DCount("[SortOrder]", "[TocCountQuery]", "[SortOrder]")
If NumRecs < 1 Then
MsgBox "There is No Data to print from any of the selected reports.",
vbCritical, "Error"
Exit Sub
End If
'Check if Outline Picture has been selected 24/07/03
Dim NumOutline As Long
NumOutline = DCount("[OutlineDrwaingI mpSiteID]", "[OutlineCountQue ry]",
"[OutlineDrwaingI mpSiteID]")
If NumOutline < 1 Then
MsgBox "Please enter the Site Outline Picture before printing reports.",
vbCritical, "Error"
Exit Sub
End If
'print these first
DoCmd.OpenRepor t "SiteOutlineRep ", acNormal, "", "" 'open the reports
DoCmd.OpenRepor t "NameAddressRep ", acNormal, "", ""
DoCmd.OpenRepor t "IndexRep", acNormal, "", "" 'open the reports
With rst
..MoveFirst
Do Until .EOF
strSQL = rst![ActualName] 'The field name on the query
DoCmd.OpenRepor t strSQL, acNormal, "", "" 'open the reports
..MoveNext
Loop
rst.Close
End With
Exit_OpenCustRe p_Click:
Exit Sub
ErrReport: 'Error checking
Select Case err
Case 2501 'the open report action was cancelled
Resume Next
Case Else
MsgBox Error$
End Select
Resume Exit_OpenCustRe p_Click
End Sub