Problemas con reportes de crystal report 8 en vb6

Mi problema es que tengo un menu en mdi parent y en mi menu tengo reportes, los cuales los estoy elaborando con crystal report, al querer hacer una prueba con los reportes, al momento de ejecura el reporte se muestra por milésimas de segundo y desaparece.
No se cual pueda ser el problema, porque alcanzo a notar que el reporte si muestra lo que le pido pero desaparece rápidamente.

2 Respuestas

Respuesta
1
Sino te da ningún tipo de error,
fíjate en alguna propiedad haber si tiene algo que marque el tiempo de mostrado.
¿Usas timer en algún lado?
No uso ningún timer, y yo estoy de acuerdo contigo que es una propiedad pero no se cual.
¿Qué version de crystal usas?
¿Usas el crystal dentro del visual o al revés?
Mira uso el crystal report 8 y el vb6, mando llamar el reporte desde el MDIform principal vb6, no utilizo controles, mando llamar al reporte desde vb, con un recordset selecciono los datos que voy a querer(query).
Espero me puedas ayudar porque se muestra e inmediatamente se cierra el reporte. Pero se alcanza a ver que se se hizo la consulta.
Ya revise otro sistema que hice y los reportes si salen, no entiendo que pasa.
Saludos.
¿Me pasarías parte del código donde hace el llamado para mostrar el reporte?
Tenes algun form.show o alguna llamada a otro formulario cuando termina de armar el reporte?
Hago previamente la conexión, después declaro las siguientes variables y al botón se le agrega el código con el recordset
Dim crpApplication As CRPEAuto.Application ' Variable para crear una aplicación de Cristal con Automation Server
Dim crpReport As CRPEAuto.Report ' Variable para abrir el reporte
Dim crpDatabase As CRPEAuto.Database ' Variable para la Base de Datos
Dim crpTables As CRPEAuto.DatabaseTables ' Variable para tablas de la base de datos
Dim crpTable As CRPEAuto.DatabaseTable ' Variable para una tabla
Dim Rs As ADODB.Recordset ' Variable para el Recordset
Private Sub Command1_Click()
' Carga el Recorset con la información resultante del query
Set Rs = cn.Execute("Select A.NombreEmpresa,A.DomicilioEmpresa,B.NombreUsuario,B.Domicilio " & _
"from Empresa A, DatosUsuario B")
' Crea la aplicación del crystal
Set crpApplication = CreateObject("crystal.crpe.application")
'Abre el reporte
Set crpReport = crpApplication.OpenReport(App.Path & "\ReportEjemplo.Rpt")
' Asigna la base de datos del reporte
Set crpDatabase = crpReport.Database
' Asigna la lista de tablas del reporte
Set crpTables = crpDatabase.Tables
' La propiedad Item dentro de la colección de tablas de la Base de Datos le debe especificar cual tabla dentro de la
base
' de datos se remplazará con el recordset. Después el archivo de definición de datos actuará como la base de datos
con
' una sola tabla, solo se deberá pasar 1 en la propiedad item
Set crpTable = crpTables.Item(1)
'Una vez que se tiene el objeto tabla de base de datos para el objeto Report, usted puede pasar el Origen de Datos al
I.S.C. Alejandro Guzmán Zazueta
[email protected]
54
'reporte usando el método SetPrivateData. Este método requiere de dos parámetros. El primero es un valor indicando
'que el origen de datos que desea pasar es de tipo Actives Data Source. Este valor debe ser 3. El segundo parámetro
es
'el 'campo del origen de datos (RecordSet).
Call crpTable.SetPrivateData(3, Rs)
'Se dan los parámetros de la presentanción previa del reporte
crpReport.Preview " Título del Reporte", 0, 0, 800, 600, 524288 Or 16777216 Or 268435456
'Selección de impresora
crpReport.SelectPrinter "", "", ""
End Sub
En el menu selecciono reportes y me aparece una ventana (form mdichild) con un botón de reporte al presionar el botón debe aparecer el reporte, de hecho si lo hace pero inmediatamente desaparece.no se si sea alguna propiedad
en el form pones el componente crystal viewer?
No utilizo crystal viewer, con este código manda llamar una ventana donde esta el reporte. Y de ahí se puede mandar exportar o imprimir.
Saludos.
Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions
Dim crParamDef As CRAXDRT.ParameterFieldDefinition
'Abrir el reporte
Screen.MousePointer = vbHourglass
'Variables de referencia para los informes
'Dim CApplication As New CRAXDDRT.Application
'Dim WithEvents cReport As CRAXDDRT.Report
Set crReport = Nothing
Set crReport = crApp.OpenReport(App.Path & "\reportes\" & ReporteNom, 1)
crReport.DiscardSavedData
crReport.EnableParameterPrompting = False
crReport.Application.LogOnServer "pdssql.dll", "GUILLERMO", "SISTEMANEWASIS", "usuario", "password"
For i = 1 To crReport.Database.Tables.Count
crReport.Database.Tables(i).SetLogOnInfo "GUILLERMO", "SISTEMANEWASIS", "usuario", password
Next i
mflgContinuar = True
' Set crReport = crApp.LogOnServer(App.Path & "\reportes\" & ReporteNom, "servidor", "sistemaNewasis", "usuario", "password")
' Set crReport = crApp.OpenReport(App.Path & "\reportes\" & ReporteNom, 1)
' Parametros del reporte
Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "AñoSel"
crParamDef.AddCurrentValue (AñoSel)
Case "TipoSel"
crParamDef.AddCurrentValue (TipoLiqSel)
Case "Messel"
crParamDef.AddCurrentValue (MesSel)
Case "MadreSel"
crParamDef.AddCurrentValue (CodMadreSel)
Case "SubColSel"
crParamDef.AddCurrentValue (SubColSel)
Case "NombreCol"
crParamDef.AddCurrentValue (SubColNombre)
Case "Parametro1"
crParamDef.AddCurrentValue (Parametro1)
Case "NombreMes"
crParamDef.AddCurrentValue (MesSelNombre)
End Select
Next
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Screen.MousePointer = vbDefault
Set crParamDefs = Nothing
Set crParamDef = Nothing
Esta manera lo uso yo, la lista de parámetros es porque casi siempre tengo que usar los mismo y después es cuestión de poner un nombre.
Y si no hay parámetro, no lo toma.
Respuesta

Debes declara tus variables fuera del evento, para que tengan mayor ámbito, lo que pasa que tu reporte solo se muestra mientras dure tu evento click, por ellos tus variables que usa el reporte declaralas fuera del evento, dentro del formulario que los llama. Me comentas si te sirvió

Te recomiendo que uses option explicit en el formulario para que detecte las variables que te falta declarar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas