miércoles, 3 de diciembre de 2008

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

A veces, la gestión de un informe parametrizado desde Delphi, previamente diseñado con Crystal Report, requiere que la entrada del valor del parámetro se realice a través de un componente TComboBox.

Por ejemplo, supongamos que tenemos un informe parametrizado que acepta un parámetro de cadena con una de las siguiente entradas (Spain, Russia, United Kingdom, United States), y que se corresponde con cuatro nacionalidades posibles.

Para resolver esta cuestión:

1) Disponemos de un miembro de especificaciones con extensión .rpt, generado desde el propio Crystal Report, y al que le hemos llamado DirxNacionalidad.rpt

2) Añadirmos un Objeto/Componente TComboBox al que llamaremos ParNacCombo y para el que la propiedad Items tiene los cuatro valores arriba enumerados, y que se tomarán como posibles valores del parámetro. Fijaremos la propiedad ItemIndex en 0 para indicar que la caja tendrá seleccionado el primer elemento (índice cero).

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 := ParNacCombo.Items[ParNacCombo.ItemIndex];

md.DirxNacionalidad.execute;

EXPLICACIÓN:

En el ejemplo anterior al objeto/Componente TComboBox le he llamado pParNacCombo, el miembro rpt se llama DirxNacionalidad y se encuentra en el directorio RPT desde donde se ejecuta la aplicació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) al elemento seleccionado por el usuario de la caja combinada. Téngase presente que los elementos de la caja están indexados y que el valor entero asignado a la propiedad ItemIndex coincide siempre con el elemento seleccionado por el usuario.

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

No hay comentarios: