RE:Ayuda con visual 6.0 y cristal
Yo estuve peleandome varios dias con esto......
Comprueba que parametros son los que necesitas pasar al informe... y pasaselos de la siguiente manera. Te paso un ejemplo de mi código para que lo compruebes.
Dim crpParamDefs As CRAXDRT.ParameterFieldDefinitions
Dim crpParamdef As CRAXDRT.ParameterFieldDefinition
Dim streport As String
Dim strDate As String
'Abrir el reporte
'Screen.MousePointer = vbHourglass
On Error GoTo ErrHandler
streport = App.Path & "\rpt\" & frmInformes.Text1.Text
Set crReport = crApp.OpenReport(App.Path & "\rpt\" & frmInformes.Text1.Text, 1)
'crReport.SQLQueryString = "Tu consulta SQL" ' esta
'consulta es opcional
crReport.EnableParameterPrompting = False
' **Calcula el párametro Fecha Parte
If (Day(frmInformes.dtIntervaloInicial.Value) = 1) And (frmInformes.dtIntervaloFinal.Value = DateAdd("m", 1, frmInformes.dtIntervaloInicial.Value) - 1) Then
'*** Si es un mes completo, Fecha del tipo : Septiembre de 1999. ***
strDate = Format(frmInformes.dtIntervaloInicial.Value, "mmmm")
strDate = strDate & " de " & Format(frmInformes.dtIntervaloInicial.Value, "yyyy") & vbNullChar
Else
'*** Si es un año completo, fecha tipo: Año 1999. ***
If (Day(frmInformes.dtIntervaloInicial.Value) = 1) And (frmInformes.dtIntervaloFinal.Value = DateAdd("yyyy", 1, frmInformes.dtIntervaloInicial.Value) - 1) Then
strDate = "Año " & Year(frmInformes.dtIntervaloInicial.Value)
Else
If frmInformes.dtIntervaloInicial.Value = frmInformes.dtIntervaloFinal.Value Then
strDate = frmInformes.dtIntervaloFinal.Value
Else
'*** Otro caso, del tipo: Del 12/12/98 al 10/10/99 ***
strDate = "Del " & frmInformes.dtIntervaloInicial.Value & " al " & frmInformes.dtIntervaloFinal.Value
End If
End If
End If
Dim i As Integer
Dim strCapitulos As String
strCapitulos = ""
For i = 1 To frmInformes.lvCapitulos.ListItems.Count
strCapitulos = strCapitulos & " " & frmInformes.lvCapitulos.ListItems.Item(i).Text
Next
Set crpParamDefs = crReport.ParameterFields
For Each crpParamdef In crpParamDefs
With crpParamdef
Select Case .ParameterFieldName
Case "FechaParte"
crpParamdef.AddCurrentValue (strDate & vbNullChar)
Case "FechaImpresion"
crpParamdef.AddCurrentValue (frmInformes.dtFechaImpresion.Value & vbNullChar)
Case "FechaInicial"
crpParamdef.AddCurrentValue (frmInformes.dtIntervaloInicial.Value)
Case "FechaFinal"
crpParamdef.AddCurrentValue (frmInformes.dtIntervaloFinal.Value)
Case "Param1"
If Right(streport, 14) = "Accidentes.rpt" Or Right(streport, 17) = "AccidentesCar.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.MortalesCheck.Value & frmInformes.GravesCheck.Value _
& frmInformes.GravesCheck.Value & frmInformes.LevesCheck.Value _
& frmInformes.IlesosCheck.Value)
Else
crpParamdef.AddCurrentValue (Val(frmInformes.OrdenacionCombo.ListIndex + 1) & vbNullChar)
End If
Case "Param2"
crpParamdef.AddCurrentValue (frmInformes.AgrupaciónText.Text & vbNullChar)
Case "Capitulo"
If Right(streport, 26) = "MaterialesListadoFecha.rpt" Then
crpParamdef.AddCurrentValue (strCapitulos & vbNullChar)
Else
crpParamdef.AddCurrentValue (frmInformes.GrupoCombo.Text & vbNullChar)
End If
Case "Operacion"
If Right(streport, 16) = "OperacionCar.rpt" Or Right(streport, 24) = "OperacionDescripcion.rpt" _
Then
crpParamdef.AddCurrentValue (frmInformes.cmoOperaciones.ItemData(frmInformes.cmoOperaciones.ListIndex) & vbNullChar)
End If
Case "Grupo"
If Right(streport, 14) = "PersonalOp.rpt" Or Right(streport, 18) = "CategoriaGrupo.rpt" Or Right(streport, 19) = "MaquinariaGrupo.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.GrupoCombo.ItemData(frmInformes.GrupoCombo.ListIndex))
End If
If Right(streport, 17) = "PersonalOpThr.rpt" Or _
Right(streport, 21) = "CategoriaGrupoThr.rpt" Or _
Right(streport, 22) = "MaquinariaGrupoThr.rpt" Then
crpParamdef.AddCurrentValue (frmInformes.GrupoCombo.ItemData(frmInformes.GrupoCombo.ListIndex))
End If
Case Else
Call infPanel.InformationOutput(vbCritical, _
"Error en informe. Nombre de parámetro desconocido")
Exit Sub
End Select
End With
Next
CrystalActiveXReportViewer1.ReportSource = crReport
CrystalActiveXReportViewer1.DisplayGroupTree = False
CrystalActiveXReportViewer1.ViewReport
Set crpParamDefs = Nothing
Set crpParamdef = Nothing
Exit Sub
ErrHandler:
If Err.Number = -2147206461 Then
MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _
vbCritical + vbOKOnly
End If
Screen.MousePointer = vbDefault
End Sub