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
Debes declarar 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. - Ruben Galvez Quilca