Sunteți pe pagina 1din 6

Integrar Crystal Reports con Visual FoxPro

Cmo puedo mostrar un reporte de Crystal Reports en mi aplicacin?


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 cdigo: SYS(2333 , 1 ) *!* Abilita soporte para doble interfaz del ActiveX 5. Desde la barra de controles de la forma inserte un botn de comando en la forma. Doble clic el botn para entrar en el evento 'Click' y escriba el siguiente cdigo: ------------------------------------------------------------*!* 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, tambin 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 aplicacin 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 funcin mas usada dentro del reporte, aqui est el cdigo 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 mtodo PrintOut le mostrar un dilogo Print al usuario. Si no quiere mostrar ste dilogo, enviele False como el primer parmetro.

Otros dos mtodos de inters son PrinterSetup( ) y SelectPrinter( ). PrinterSetup( ) le permite cambiar de impresora programticamente. SelectPrinter( ) muestra el dilogo de Print Setup.

Acceso a Datos
Es casi seguro que la ubicacin de los datos cambiar del momento de diseo a cuando se ejecute. Con el uso del objeto Database, la coleccin de tablas en la base de datos y el objeto DatabaseTable, usted puede cambiar la ubicacin del reporte. Los pasos exactos a seguir para accesar los datos depende del tipo de datos y el mtodo de acceso, ya sea directo, via ODBC, OLE DB. En general, usted necesita crear el objeto Database, luego usar la coleccin 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 cdigo demuestra cada uno de estos mtodos. 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 ubicacin y nombre de la tabla puede cambiar al momento de ejecucin. 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 coleccin DatabaseTables ocDBT = oDB.Tables() * Obtenga una referencia al objeto DatabaseTable para tabla 1 oDBT = ocDBT.Item(1) * Asigne la ubicacin 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 coleccin DatabaseTables ocDBT = oDB.Tables() * Obtenga una referencia al objeto DatabaseTable para la tabla 1 oDBT = ocDBT.Item(1) * Asigne la ubicacin * 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 cdigo demuestra como conectar a un fichero XML en tiempo de ejecucin. 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 coleccin 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 mtodos anteriores. Por la razn de que ADO es un objeto mantenido en memoria, no hay un fichero fsico 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 coleccin 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()

S-ar putea să vă placă și