miércoles, 8 de abril de 2009

Crystal Reports y FiveWin (y Xailer y xHarbour en general)

Hay varias maneras de "entrarle" a Crystal Reports desde FiveWin y en general desde xHarbour.

Para FiveWin:

Tom Groeger, un programador Alemán, hizo una clase llamada TCRPE (Crystal Reports Print Engine) que funcionaba con FiveWin de 16 bits y por lo menos hasta la version 8.0 de Crystal funcionaba bastante bien, en el paso a 32 bits, yo me tomé la libertad de modificar dicha clase para adaptarla a 32 bits, los cambios son mínimos y la puedes descargar haciendo click aquí.

En versiones posteriores de Crystal, es decir de la 8.0 en adelante, el motor de impresión viene con un ActiveX que facilita manipular Crystal desde FiveWin, la manipulación se puede hacer fácilmente por OLE o por ActiveX con el nombre del servidor:

oCrys := tOleAuto():New("CrystalRunTime.Application")


WITH OBJECT oRpt :=oCrys:
OpenReport("file.rpt") //Report File

:
Database:Tables(1):Location:= "ruta archivo+'file.dbf' //DBF File

IF :HasSavedData
:DiscardSavedData()
ENDIF

END

DEFINE WINDOW oWnd ....

oCrRpt:= TActiveX
():New(oWnd,"CrystalReports11.ActiveXReportViewer.1")
oCrRpt:SetProp("ReportSource",oRpt)
oCrRpt:SetProp("DisplayGroupTree",.F.)

oCrRpt:DO("ViewReport")
oWnd:oClient:=oCrRpt

ACTIVATE WINDOW oWnd VALID (oCrRpt:END(),oCrys:END(),oRpt:END(),.T.)

El código anterior ha sido facilitado por Biel Maimó (www.bielsys.blogspot.com).

Para Xailer, el equipo Xailer ha creado una clase TCrystalPreview heredada de TFORM que te permite "incrustar" facilmente reportes hechos en Crystal dentro de un Formulario Xailer:



Un ejemplo de la clase puede ser obtenido haciendo click aquí.

1 comentario:

  1. Excelente!!! Esto está muy interesante, habrá alguna forma de mandarlo directamente a la impresora sin pasar por la previsaulización? Gracias...

    ResponderEliminar