VERSION 1.0 CLASS BEGIN MultiUse = -1 'True Persistable = 0 'NotPersistable DataBindingBehavior = 0 'vbNone DataSourceBehavior = 0 'vbNone MTSTransactionMode = 0 'NotAnMTSObject END Attribute VB_Name = "clsCrystalReport" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit Private m_objAdo As clsADO Private m_objReportColl As clsReportColl Private m_objReportParmColl As clsReportParmColl Private m_objCrystalReport As CRAXDRT.Report Private Const sMODULE_NAME As String = "clsCrystalReport" Private Const sVBAPP_NAME = "SALSA" Private Const sSECTION_NAME = "Reports" Private Const sKEY_NAME = "Path" Private Const sDEFAULT = "d:\SALSA001\SALSA\REPORTS\" Public Property Get p_objAdo() As clsADO Set p_objAdo = m_objAdo End Property Public Property Let p_objAdo(objInADO As clsADO) Set m_objAdo = objInADO End Property Public Property Get p_objReportColl() As clsReportColl Set p_objReportColl = m_objReportColl End Property Public Property Let p_objReportColl(objReportColl As clsReportColl) Set m_objReportColl = objReportColl End Property Public Property Get p_objReportParmColl() As clsReportParmColl Set p_objReportParmColl = m_objReportParmColl End Property Public Property Let p_objReportParmColl(objReportParmColl As clsReportParmColl) Set m_objReportParmColl = objReportParmColl End Property Public Property Get p_objCrystalReport() As CRAXDRT.Report Set p_objCrystalReport = m_objCrystalReport End Property Public Property Let p_objCrystalReport(objCrystalReport As CRAXDRT.Report) Set m_objCrystalReport = objCrystalReport End Property Function FN_GenerateReport() As Boolean Dim objReport As clsReport Dim sPath As String Dim objApp As CRAXDRT.Application Dim l As Long Dim objReportParm As clsReportParm On Error GoTo FN_GenerateReport_Err '*** Get the current report definition object Set objReport = p_objReportColl.FN_objGetReport(p_objReportColl.p_lReportIndex) '*** Get report path sPath = GetSetting(sVBAPP_NAME, sSECTION_NAME, sKEY_NAME, sDEFAULT) '*** Validate that the report file exists - if not then raise meaningful error message If Dir(sPath & objReport.p_sForm) = "" Then SB_NotifyProgramerError sMODULE_NAME, "FN_GenerateReport", _ "Report form " & objReport.p_sForm & " was not found at location " & sPath Set objReport = Nothing FN_GenerateReport = False Exit Function End If '*** Create report object from report file (*.rpt) Set objApp = CreateObject("CrystalRuntime.Application.7") p_objCrystalReport = objApp.OpenReport(sPath & objReport.p_sForm, crOpenReportByTempCopy) Set objReport = Nothing Set objApp = Nothing With p_objCrystalReport '*** Assign connection and login properties Call .Database.Tables.Item(1).SetLogOnInfo(p_objAdo.p_sDSN, p_objAdo.p_sDSN, p_objAdo.p_sUser, p_objAdo.p_sPassword) '*** Iterate through the parameters collection and assign parameters '*** to the report form For l = 1 To p_objReportParmColl.p_lNumReportParms Set objReportParm = p_objReportParmColl.FN_objGetReportParm(l) If objReportParm.p_iType = 2 Then .ParameterFields(l).AddCurrentValue CInt(objReportParm.p_sValue) Else .ParameterFields(l).AddCurrentValue objReportParm.p_sValue End If Set objReportParm = Nothing Next l End With FN_GenerateReport = True Exit Function FN_GenerateReport_Err: SALSANotify.SB_PassNotificationUp Err, sMODULE_NAME, "FN_GenerateReport" End Function Sub SB_PrintReport() On Error GoTo SB_PrintReport_Err p_objCrystalReport.PrintOut Exit Sub SB_PrintReport_Err: SALSANotify.SB_PassNotificationUp Err, sMODULE_NAME, "SB_PrintReport" End Sub