RE:Parametros para el Subinforme
Te paso información de como pasar párametros en Visual Basic (supongo que será parecido)
Private Sub Form_Load()
Dim crpParamdefs As CRAXDRT.ParameterFieldDefinitions
Dim crpParamdef As CRAXDRT.ParameterFieldDefinition
Dim strDate As String
Dim strMonth As String
Dim dFInicial As Date
Dim dFFinal As Date
' Abrir el reporte
Screen.MousePointer = vbHourglass
On Error GoTo errhandler
Set crReport = crApp.OpenReport(App.Path & "\rpt\certificacion.rpt", 1)
If IsNull(frmCertificacion.dtFechaInicio.Value) Or IsNull(frmCertificacion.dtFechaFin.Value) _
Then Exit Sub
dFInicial = frmCertificacion.dtFechaInicio.Value
dFFinal = frmCertificacion.dtFechaFin.Value
'*** Calcula el parámetro FechaParte. ***
Dim strTipoCertif As String
strTipoCertif = ""
If (Day(dFInicial) = 1) And (dFFinal = DateAdd("m", 1, dFInicial) - 1) Then
'*** Si es un mes completo, Fecha del tipo : Septiembre de 1999. ***
strTipoCertif = "Mensual"
strDate = Format(dFInicial, "mmmm")
strDate = strDate & " de " & Format(dFInicial, "yyyy") & vbNullChar
Else
'*** Si es un año completo, fecha tipo: Año 1999. ***
If (Day(dFInicial) = 1) And (dFFinal = DateAdd("yyyy", 1, dFInicial) - 1) Then
strDate = "Año " & Year(dFInicial)
strTipoCertif = "Anual"
Else
'*** Otro caso, del tipo: Del 12/12/98 al 10/10/99. ***
strDate = "Del " & dFInicial & " al " & dFFinal
strTipoCertif = "Otros"
End If
End If
'*** Carga la tabla de la que lee el informe. ***
Call frmCertificacion.CargarTablaCertificacion(strTipoCertif, dFInicial, dFFinal)
crReport.EnableParameterPrompting = False
Set crpParamdefs = crReport.ParameterFields
For Each crpParamdef In crpParamdefs
With crpParamdef
Select Case .ParameterFieldName
Case "FechaParte"
crpParamdef.AddCurrentValue (strDate & vbNullChar)
Case "FechaImpresion"
crpParamdef.AddCurrentValue (frmCertificacion.dtFechaImpresion.Value & vbNullChar)
Case "TipoCertificacion"
crpParamdef.AddCurrentValue (strTipoCertif & vbNullChar)
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
Screen.MousePointer = vbDefault
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
End Sub