miércoles, 3 de diciembre de 2008

Informes parametrizados con Crystal Report + Delphi. (Parametro = JvDBSearchComboBox).

A veces, el valor del parámetro que toma un informe parametrizado desde Delphi, previamente diseñado con Crystal Report, no es libre para el usuario. El usuario se ve obligado a elegir un valor del parámetro que es un campo de una tabla. En este caso, será necesario utilizar el Objeto/Componente "JvDBSearchComboBox" de la paleta de componentes "Jv Data Controls".

Supongamos que

1) Disponemos de un miembro de especificaciones con extensión .rpt, generado desde el propio Crystal Report, que espera un valor de parámetro (la Nacionalidad) y además disponemos de una tabla denominada tpaises con su datasource denominado dspaises. En este caso, no nos interesa que la entrada del valor del parámetro sea simplemente un TEdit, sencillamente porque el usuario podría introducir unas veces España y otras Spain para intentar hacer lo mismo. Necesitamos condicionar la entrada de la nacionalidad a los propios valores de una tabla que las contiene.

2) Añadimos a la interfaz un componente JvDBSearchComboBox, al que hemos llamado (propiedad name) ParJvDBSCB y para el que la propiedad datasource se fijará a dspaises y la propiedad datafield se fijará a pais.

3) Un botón que, desde su evento click, ejecute el siguiente código:

md.DirxNacionalidad.ReportName:=ExtractFilePath(Application.ExeName)+'RPT\DirxNacionalidad.rpt';

md.DirxNacionalidad.ParamFields.Items[0].CurrentValue := ParJvDBSCB.Text;

md.DirxNacionalidad.execute;

EXPLICACIÓN:

Tal como puede verse, la primera instrucción fija en términos relativos al ejecutable del proyecto, la localización del archivo generado por Crystal Report (extensión rpt).

La segunda instrucción asigna al valor actual del parámetro de orden cero (el primero) a la propiedad Text del objeto JvDBSearchComboBox, elegido previamente por el usuario desde una ComBoBox donde se presentar todos los valores posibles tomados de la tabla de paises.

Finalmente, el método execute, ejecuta el informe.

No hay comentarios: