Integrar Crystal Reports Con Visual Foxpro

Integrar Crystal Reports con Visual FoxPro Cómo puedo mostrar un reporte de Crystal Reports en mi aplicación? Para preve

Views 234 Downloads 4 File size 126KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Integrar Crystal Reports con Visual FoxPro Cómo puedo mostrar un reporte de Crystal Reports en mi aplicación? Para prever un reporte en Visual Foxpro usando el Report Designer Component (RDC): 1. En Visual FoxPro cree una forma nueva en blanco. 2. Vaya al menú 'View' y seleccione 'Form Controls Toolbar'. Desde 'Form Controls Toolbar', seleccione 'ActiveX Control (OleControl) e insertelo en la forma en blanco. 3. El ventana de dialogo 'Insert Object' aparecerá. Clic 'Insert Control' y en 'Object Type' seleccione 'Crystal Report View Control'. Clic 'OK'. 4. En el evento 'Form Load' escriba el siguiente código: SYS(2333 , 1 ) *!* Abilita soporte para doble interfaz del ActiveX 5. Desde la barra de controles de la forma inserte un botón de comando en la forma. Doble clic el botón para entrar en el evento 'Click' y escriba el siguiente código: ------------------------------------------------------------*!* Defina los objetos Crystal Application y Reporte *!* como variables globales public CRApplication public CRReport *!* Asigne los objetos Crystal Application y Reporte a sus tipo de clase. *!* A diferencia de otras herramientas, también debe asignar el tipo de report.. CRApplication = createobject ("CrystalRuntime.Application") CRReport = createobject ("CrystalRuntime.Report") *!* Abra el reporte CRReport = CRApplication.OpenReport("c:\mireporte.rpt") *!* Adjunte el reporte al viewer form1.OleControl1.reportsource = CRReport *!* Muestre el reporte form1.OleControl1.viewreport -----------------------------------------------------------5. Ejecute la aplicación al presionar "ctrl+E" ó presionando el icono " ! ". El reporte aparece en el control viewer de Crystal Report.

Imprimir un Reporte El imprimir el report es la función mas usada dentro del reporte, aqui está el código para hacerlo desde VFP LOCAL oCR LOCAL oRpt oCR = CREATEOBJECT(“CrystalRuntime.Application”) oRpt = oCR.OpenReport(“C:\Temp\Taz.RPT”) IF oRpt.HasSavedData oRpt.DiscardSavedData() ENDIF oRpt.PrintOut() Es buena idea el descartar cualquier datos guardados con el reporte. El método PrintOut le mostrará un diálogo Print al usuario. Si no quiere mostrar éste diálogo, enviele False como el primer parámetro.

Otros dos métodos de interés son PrinterSetup( ) y SelectPrinter( ). PrinterSetup( ) le permite cambiar de impresora programáticamente. SelectPrinter( ) muestra el diálogo de Print Setup.

Acceso a Datos Es casi seguro que la ubicación de los datos cambiará del momento de diseño a cuando se ejecute. Con el uso del objeto Database, la colección de tablas en la base de datos y el objeto DatabaseTable, usted puede cambiar la ubicación del reporte. Los pasos exactos a seguir para accesar los datos depende del tipo de datos y el método de acceso, ya sea directo, via ODBC, ó OLE DB. En general, usted necesita crear el objeto Database, luego usar la colección DatabaseTables para profundizar hasta cada uno de los objetos DatabaseTable. Note que las colecciones en Crystal Reports son basadas-en-1. Habrá un objeto DatabaseTable para cada tabla en el reporte. El siguiente código demuestra cada uno de estos métodos. Acceso Directo Se puede usar Datos Directos directamente desde from Crystal Reports sin usar ODBC ú OLEDB. Fox 2x y Access son ejemplos de datos directos. En el caso de datos directos, la ubicación y nombre de la tabla puede cambiar al momento de ejecución. LOCAL LOCAL LOCAL LOCAL LOCAL

oCR oRpt oDB ocDBT oDBT

oCR = CREATEOBJECT("CrystalRuntime.Application") oRpt = oCR.OpenReport("C:\EFox\Direct1.RPT") * Cree el objeto Database oDB = oRpt.Database()

* Obtenga una referencia a la colección DatabaseTables ocDBT = oDB.Tables() * Obtenga una referencia al objeto DatabaseTable para tabla 1 oDBT = ocDBT.Item(1) * Asigne la ubicación oDBT.Location = "C:\EFox\Customer.DBF" oRpt.PrintOut()

Datos con ODBC Una vez tenga un DSN configurado, conectandose es muy sencillo LOCAL LOCAL LOCAL LOCAL LOCAL

oCR oRpt oDB ocDBT oDBT

oCR = CREATEOBJECT("CrystalRuntime.Application") oRpt = oCR.OpenReport("C:\EFox\ODBC1.RPT") * Cree el objeto Database oDB = oRpt.Database() * Obtenga una referencia a la colección DatabaseTables ocDBT = oDB.Tables() * Obtenga una referencia al objeto DatabaseTable para la tabla 1 oDBT = ocDBT.Item(1) * Asigne la ubicación * Ésta funciona para un DSN oDBT.SetLogOnInfo("TazODBCRuntime") IF oRPt.HasSavedData oRPT.DiscardSavedData() ENDIF oRpt.PrintOut()

XML Data Crystal Reports usa el driver de ODBC CRXML para conectar a datos XML. Usted necesitará configurar un DSN para el acceso a datos. El siguiente código demuestra como conectar a un fichero XML en tiempo de ejecución. LOCAL LOCAL LOCAL LOCAL LOCAL

oCR oRpt oDB ocDBT oDBT

oCR = CREATEOBJECT("CrystalRuntime.Application") oRpt = oCR.OpenReport("C:\EFox\XML1.RPT") * Cree el objeto Database oDB = oRpt.Database() * Obtenga una referencia a la colección DatabaseTables ocDBT = oDB.Tables() * Obtenga una referencia al objeto DatabaseTable para la tabla 1 oDBT = ocDBT.Item(1)

* Ésta funciona para DSN oDBT.SetLogOnInfo("TazXMLRuntime") IF oRPt.HasSavedData oRPT.DiscardSavedData() ENDIF oRpt.PrintOut()

ADO Data El Uso de datos ADO es un poco diferente que los métodos anteriores. Por la razón de que ADO es un objeto mantenido en memoria, no hay un fichero físico para que Crystal Reports use. En éste caso, cree un Recordset ADO y envielo a Crystal Reports. LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL

oCR oRpt oDB ocDBT oDBT oConn oRS

*Designe la parte ADO oConn = CREATEOBJECT("ADODB.Connection") oConn.ConnectionString = "Provider=VFPOLEDB.1;Data Source=C:\eFox\Data\tastrade.dbc;Password=''" oConn.Open() oRS = CREATEOBJECT("ADODB.RecordSet") oRS.Open("Select * FROM Customer", oConn) oCR = CREATEOBJECT("CrystalRuntime.Application") oRpt = oCR.OpenReport("C:\EFox\ADO1.RPT")

* Cree el objeto Database oDB = oRpt.Database() * Obtenga una referencia a la colección DatabaseTables ocDBT = oDB.Tables() * Obtenga una referencia al objeto DatabaseTable para tabla 1 oDBT = ocDBT.Item(1) * Envie el RecordSet a Crystal Reports oDBT.SetDataSource(oRS) IF oRPt.HasSavedData oRPT.DiscardSavedData() ENDIF oRpt.PrintOut()