RE:Crystall Reports en Modal
He tardado un poco en responder... pero como esta respuesta perdurará mas allá de la raza humana, aquí lo dejo....
Lo mejor es que te crees otro FORMULARIO con el objecto crystalreport y pases a este los parametros necesarior y lances este segundo formulario modal. El único problema que tendras es cerrar el formulario modal, pues no podrás controlar cuando cierran el informe de crystal, pero este problema considero es menor que el que planteas y tiene mejor pinta de ser solucionado... aunque ahora no se como.
El codigo del 2º formulario a lanzar modal y que incluye el objecto CrystalRepor seria algo así:
'con esta funcion pudo acceder directamente al objeto crystal .
Public Function GetRPT() As CrystalReport
Set GetRPT = Me.CrystalReport1
End Function
Public Function Liquidacion(ElFiltro As String, RPT As String) As Boolean
Informe = "ESLIQUIDACION"
Listado = RPT
Filtro = ElFiltro
Me.Show 1
End Function
y la llamada al formulario algo así:
Dim F As New frmCrystalView
Filtro = "{Suscripcion.num_suscripcion}=" & Dato.Num_Suscripcion & " and {Suscripcion.num_renovacion}=" & Dato.Num_renovacion
'esto lo remplezo por el acceso al formulario 2º
'CrystalReport1.Formulas(1) = "PrimeraLiquidacion= '" & IIf(PrimeraLiquidacion, "S", "N") & "'"
PrimeraLiquidacion = False
F.GetRPT.Formulas(1) = "PrimeraLiquidacion= '" & IIf(PrimeraLiquidacion, "S", "N") & "'"
F.Liquidacion Filtro, wListadoSel
------
En el 2º formulario puedes poner un texto de 'INFORME LANZADO' y un botón de cerrar y que el usuario pulse cerrar el infome y luego a tu botón de cerrar.
Puedes usar INFORME EMBEBIDOS (RDC, creo recordar) y así puedes controlar los eventos (WITHEVENTS) sobre el control Crystal y cambiar toda la filosofia, pero pierdes el control que te da el tener los RPT externos. (editables sin tocar el .EXE).
Atentamente,
R.Alonso