PDA

Click to See Complete Forum and Search --> : help please!


Palmtree
Nov 26th, 2003, 10:32 AM
I use vb5.0, Crystal Report7, Access95 database(with password).

I try to display my report by a button click. but I got error says "file can not be opened XXX at file location XXX".

The follwoing is my code:

Private m_strFileName As String
Private m_strReportPath
Public m_crwApplication As CRPEAuto.Application
Public m_crwReport As CRPEAuto.Report
Public m_crwView As CRPEAuto.View
Public m_crwDatabase As CRPEAuto.Database
Public m_crwDatabaseTable As CRPEAuto.DatabaseTable
Public m_crwSubReport As CRPEAuto.Report

Private Sub button_Click()
frm.clsRptObj.launchReport "rptName", "" ', "", -1, -1, "", "rptTitle"
frm.clsRptObj.showReport "rptTitle"
End Sub


Public Sub launchReport(strReportName As String, strSubRptName As String) ', paraFieldName As String, paraFieldValue As Integer, _
paraFieldType As Integer, selFormula As String, rptTitle As String)

On Error GoTo launchReportError
Screen.MousePointer = vbHourglass

If m_crwApplication Is Nothing Then
Set m_crwApplication = CreateObject("Crystal.CRPE.Application")
End If

If m_strReportPath = "" Then
m_strReportPath = App.path + "\crysReports\"
End If
m_strFileName = m_strReportPath & strReportName & ".rpt"

While Dir(m_strFileName) = ""
If MsgBox("Could not open " & m_strFileName & vbCrLf & vbCrLf & _
"Would you like to browse?", vbYesNo) = vbYes Then
frmMain.dlgDialog.CancelError = True
frmMain.dlgDialog.FileName = m_strFileName
frmMain.dlgDialog.Filter = "*.rpt"
frmMain.dlgDialog.ShowOpen
m_strFileName = frmMain.dlgDialog.FileName
End If
Wend
Screen.MousePointer = vbHourglass


Set m_crwReport = m_crwApplication.OpenReport(m_strFileName)
m_crwReport.Database.Tables(1).SetSessionInfo " ", Chr(10) & password

Set m_crwDatabase = m_crwReport.Database

For Each m_crwDatabaseTable In m_crwDatabase.Tables
m_crwDatabaseTable.Location = dbName
Next

' sub report -- 110999
Dim subRpt As CRPEAuto.Report
Dim subDb As CRPEAuto.Database
Dim subDBTable As CRPEAuto.DatabaseTable
Dim subRptName As String

If Len(strSubRptName) <> 0 Then
subRptName = strSubRptName & ".rpt"
Set subRpt = m_crwReport.OpenSubreport(subRptName)
Set subDb = subRpt.Database
For Each subDBTable In subDb.Tables
subDBTable.Location = dbName
Next
End If

GoTo launchReportExit

launchReportError:
MsgBox "launchReport: " + error$
launchReportExit:
Screen.MousePointer = vbNormal
End Sub

Public Sub showReport(rptTitle As String)
Set m_crwView = m_crwReport.Preview(rptTitle)
Set m_crwWindow = m_crwView.Parent
m_crwReport.Preview
End Sub

The program stops inside the showReport() function:

Set m_crwView = m_crwReport.Preview(rptTitle) gives me that error message.