Visual dBASE 7.x y
Crystal Reports 7 vía ActiveX
por Michael Kusch (traducido por Jason Walker al inglés y Francisco Javier Pérez Rey a Español)

ALGÚN USUARIO de VdB 5.x actualizado a VdB 7.x perderá Crystal report. El diseñador de reportes|informes suministrado con Vdb 7.0, amablemente dicho, no es del gusto de todos. Sin embargo, ahí está la buena noticia: incorporar Crystal Reports en VdB 7.x con la ayuda de su control ActiveX es un asunto sencillo.

En este artículo, describiré como Crystal Reports 7 y Visual dBASE pueden estar asociados a través del diseñador del anterior componente ActiveX. Crystal Reports 7 puede procesar los nuevos formatos DBF de nivel 7, puesto que accede mediante el BDE. No obstante, para imprimir campos Memo es necesario una llave primaria en la tabla.

Cuando instala Crystal Reports, su control ActiveX (llamado Crystal report control) esta disponible. Para poder utilizarlo, abra un formulario en el Diseñador de Formularios y arrastre y suelte el control en dicho formulario desde la Paleta de Componentes (en la pestaña ‘ActiveX’). Si el control no está en la lista de la Paleta de Componentes, use el método explicado en el dBulletin para hacerlo disponible.

Una vez colocado en el formulario, se agregaran las siguientes líneas al código.
 
 
This.activex1 = new ACTIVEX(this)
endwith
   

El inspector no lista las funciones ni las propiedades del control Crystal report mediante form.activex1 en cambio si las muestra mediante form.activex1.nativeobject.

Dado que comenzar a imprimir se realiza normalmente a través de un evento, es donde el control ActiveX debe ser llamado.
 
 
Function Pushbutton1_onclick
  Class::Printing_with_Crystal()
Return

Function Printing_with_Crystal
  x = form.activex1.nativeObject
  x.ReportFileName="Myreport.rpt"
  x.CopiesToPrinter=1
  x.destination=0
  x.windowcontrols=true
  x.windowShowPrinterSetupBtn=true
  x.windowTitel="Testreport"
  x.windowShowGroupTree=true
  x.WindowSearchBtn=true
  x.action=1
Return

   

Las principales funciones y propiedades del control ActiveX de Crystal Report son las siguientes:

ReportFileName
Especifica el nombre del informe|reporte

CopiesToPrinter
Cuantas copias se envían a la impresora (sin embargo no se visualiza en la vista previa).

Destination
Destino del informe:
  0 = Ventana (Ventana de vista previa)
  1 = Impresora
  2 = Archivo
  3 = E-Mail
  6 = Carpeta de intercambio

WindowControls
Especifica si se muestran los botones de control de impresión en la ventana de vista previa On/Off.

WindowShowPrinterSetupBtn
Muestra u oculta los botones para la salida por impresora.

WindowTitle
Establece el título de la ventana de vista previa.

WindowShowGroupTree
Especifica ver u ocultar el árbol de grupo On/Off.

WindowSearchBtn
Especifica la posibilidad de realizar búsquedas en la ventana de vista previa On/Off.

Action
Lanzar el control ActiveX con sus valores predeterminados.

La visión general de los métodos y propiedades disponibles está incluida en la ayuda de Guía para Desarrolladores de Crystal Reports. Los ejemplos están escritos en VB. Esto significa que algunos métodos pueden producir resultados no deseados. Por ejemplo, no me fue posible utilizar el método Datafiles(n) que debe modificar la ruta indicada en el informe|reporte.

Los archivos necesarios para la instalación están listados en el archivo de ayuda del Runtime.  El control ActiveX debe ser instalado con REGSRV32.exe y CRYSTL32.ocx en cada computadora. Esto puede hacerse con InstallShield. La metodología necesaria esta descrita en la sección 1.3 del artículo editado en alemán por Michael Rotteck’s “InstallShield Express for Visual dBASE 7” de la cuarta entrega de dBulletin.

Finalmente, con Crystal, también es posible compilar tus informes como ejecutables. Esto se puede hacer casi sin programar.


Sobre el autor:
Michael Kusch utiliza dBASE desde 1993. Él desarrolla aplicaciones comerciales con Visual dBASE.

Michael Kusch
EDP service 81245 Munich
Tel.: 089-89712763
fax: 089-89712290
100277.2335@CompuServe.com


dBulletin quiere dar las gracias a Richard Perryman por enviar la traducción a nuestro magazine. También queremos dar las gracias a Fabian Cevallos y David L. Stone por la revisión de este artículo.

Lector de prueba en Español: Juan Manuel Espinosa