I am receiving the following exception randomly when printing crystal reports
via a print server application. The server will successfully print a random
number of an identical reports (report.rpt) and then for some reason, the
following exception is logged.
System.InvalidO perationExcepti on: Stack empty.
at System.Collecti ons.Stack.Pop()
at SCRStartup.Leav e()
at CrystalDecision s.CrystalReport s.Engine.Report Objects..ctor(S CRPrintJob
printJob, Int32 sectionCode)
at CrystalDecision s.CrystalReport s.Engine.Report Objects.GetEnum erator()
clsReports.LogI nReport()
The code for LogInReport is as follows
Dim ret As Boolean = False
Dim repDoc As New ReportDocument
Dim subRepDoc As New ReportDocument
Dim crSections As Sections
Dim crSection As Section
Dim crReportObjects As ReportObjects
Dim crReportObject As ReportObject
Dim crSubReportObje ct As SubreportObject
Dim crDatabase As Database
Dim crTables As Tables
Dim crTable As Table
Dim crConnInfo As New ConnectionInfo
Dim crLogOnInfo As New TableLogOnInfo
Try
repDoc.Load(mst rFile, OpenReportMetho d.OpenReportByD efault)
With crConnInfo
.ServerName = mstrServer
.DatabaseName = mstrDatabase
.UserID = mstrUserName
.Password = mstrPassWord
End With
'we iterate through the report database tables and log the user in
crDatabase = repDoc.Database
crTables = crDatabase.Tabl es
For Each crTable In crTables
crLogOnInfo = crTable.LogOnIn fo
crLogOnInfo.Con nectionInfo = crConnInfo
crTable.ApplyLo gOnInfo(crLogOn Info)
Next
crSections = repDoc.ReportDe finition.Sectio ns
For Each crSection In crSections
crReportObjects = crSection.Repor tObjects
For Each crReportObject In crReportObjects
If crReportObject. Kind =
ReportObjectKin d.SubreportObje ct Then
crSubReportObje ct = CType(crReportO bject,
SubreportObject )
subRepDoc =
crSubReportObje ct.OpenSubrepor t(crSubReportOb ject.SubreportN ame)
crDatabase = subRepDoc.Datab ase
crTables = crDatabase.Tabl es
For Each crTable In crTables
crLogOnInfo = crTable.LogOnIn fo
crTable.LogOnIn fo.ConnectionIn fo = crConnInfo
crTable.ApplyLo gOnInfo(crTable .LogOnInfo)
Next
End If
Next
Next
ret = True
Catch ex As Exception
EventLog.WriteE ntry(AppName, ex.ToString, EventLogEntryTy pe.Error)
End Try
Return ret
Any ideas?
TIA
via a print server application. The server will successfully print a random
number of an identical reports (report.rpt) and then for some reason, the
following exception is logged.
System.InvalidO perationExcepti on: Stack empty.
at System.Collecti ons.Stack.Pop()
at SCRStartup.Leav e()
at CrystalDecision s.CrystalReport s.Engine.Report Objects..ctor(S CRPrintJob
printJob, Int32 sectionCode)
at CrystalDecision s.CrystalReport s.Engine.Report Objects.GetEnum erator()
clsReports.LogI nReport()
The code for LogInReport is as follows
Dim ret As Boolean = False
Dim repDoc As New ReportDocument
Dim subRepDoc As New ReportDocument
Dim crSections As Sections
Dim crSection As Section
Dim crReportObjects As ReportObjects
Dim crReportObject As ReportObject
Dim crSubReportObje ct As SubreportObject
Dim crDatabase As Database
Dim crTables As Tables
Dim crTable As Table
Dim crConnInfo As New ConnectionInfo
Dim crLogOnInfo As New TableLogOnInfo
Try
repDoc.Load(mst rFile, OpenReportMetho d.OpenReportByD efault)
With crConnInfo
.ServerName = mstrServer
.DatabaseName = mstrDatabase
.UserID = mstrUserName
.Password = mstrPassWord
End With
'we iterate through the report database tables and log the user in
crDatabase = repDoc.Database
crTables = crDatabase.Tabl es
For Each crTable In crTables
crLogOnInfo = crTable.LogOnIn fo
crLogOnInfo.Con nectionInfo = crConnInfo
crTable.ApplyLo gOnInfo(crLogOn Info)
Next
crSections = repDoc.ReportDe finition.Sectio ns
For Each crSection In crSections
crReportObjects = crSection.Repor tObjects
For Each crReportObject In crReportObjects
If crReportObject. Kind =
ReportObjectKin d.SubreportObje ct Then
crSubReportObje ct = CType(crReportO bject,
SubreportObject )
subRepDoc =
crSubReportObje ct.OpenSubrepor t(crSubReportOb ject.SubreportN ame)
crDatabase = subRepDoc.Datab ase
crTables = crDatabase.Tabl es
For Each crTable In crTables
crLogOnInfo = crTable.LogOnIn fo
crTable.LogOnIn fo.ConnectionIn fo = crConnInfo
crTable.ApplyLo gOnInfo(crTable .LogOnInfo)
Next
End If
Next
Next
ret = True
Catch ex As Exception
EventLog.WriteE ntry(AppName, ex.ToString, EventLogEntryTy pe.Error)
End Try
Return ret
Any ideas?
TIA
Comment