Lo primero que debemos hacer para poder imprimir reportes de CR12 desde VB5/6 es tener bien referenciado el producto. Para esto debemos agregar en las Referencias (ProyectàReferences) las siguientes referencias:
· Crystal Reports ActiveX Designer Design and Runtime Library 12.0 (si no esta en la lista, se puede agregar desde “C:\Program Files\Business Objects\BusinessObjects Enterprise 12.0\win32_x86\craxddrt.dll”
· Crystal ActiveX Reports Viewer Library 12.0
Y también agregar el componente:
· Crystal ActiveX Report Viewer Library 12.0
Para poder mostrar el reporte por pantalla.
Luego, procedemos de la siguiente manera:
Private Sub Imprimir()
‘ Objetos CR 2008
Dim crApp As New CRAXDDRT.Application
Dim crReport As New CRAXDDRT.Report
Dim crParamDefs As New CRAXDDRT.ParameterValueInfos
Dim crParamDef As New CRAXDDRT.ParameterValueInfo
Dim crParamDefs As CRAXDDRT.ParameterFieldDefinitions
Dim crParamDef As CRAXDDRT.ParameterFieldDefinition
Dim x As Integer
Dim intPosicion As Integer
Dim strNombreParam As String
Dim resultado As String
On Error GoTo Imprimir_EH
x = 0
‘Abrir el reporte
Screen.MousePointer = vbHourglass
mflgContinuar = True
Set crReport = crApp.OpenReport(Me.ReportFileName, 1)
‘ Pasa Parametros del reporte
Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
intPosicion = buscarValor(crParamDef.ParameterFieldName)
Select Case crParamDef.ValueType
Case 7
crParamDef.AddCurrentValue (CInt(ParametroValor(intPosicion)))
Case 12
crParamDef.AddCurrentValue (CStr(ParametroValor(intPosicion)))
Case 16
crParamDef.AddCurrentValue (CDate(ParametroValor(intPosicion)))
End Select
Next
‘ Valida si muestra vista previa o imprime directamente
If UCase(strShowPreview) = “S” Then
‘ Setea variables del Viewer
Me.Caption = strWindowTitle
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Me.Show
Else
crReport.ReadRecords
crReport.PrintOut
End If
Screen.MousePointer = vbDefault
Set crParamDefs = Nothing
Set crParamDef = Nothing
Exit Sub
Imprimir_EH:
If Err.Number = -2147206461 Then
MsgBox “El archivo de reporte no se encuentra, restáurelo de los discos de instalación”, vbCritical, vbOKOnly
Else
MsgBox “Error inesperado: ” & Err.Description, vbCritical + vbOKOnly
End If
mflgContinuar = False
Screen.MousePointer = vbDefault
Set crParamDefs = Nothing
Set crParamDef = Nothing
End Sub