###Guía para desarrollar reportes ####¿Qué es Códice FX? Es una plataforma basada en Windows para el diseño, procesamiento y despliegue de informes constituida por un diseñador de reportes (reporteador) y un conjunto de componentes para su ejecución (motor en tiempo de ejecución) y presentación (visor). El reporteador permite construir la especificación de un reporte, el motor en tiempo de ejecución la interpreta y produce una salida (informe), mientras que el visor se encarga de la presentación para el usuario. Las especificaciones de los reportes de Códice están formados por: - **Orígenes de datos.** Estos se construyen a partir de una conexión y consultas SQL que permiten obtener un conjunto de registros, los cuales serán impresos de acuerdo a los formatos de impresión diseñados. - **Parámetros.** Permiten especificar datos que pueden ser usados como criterios de filtro en las consultas SQL. - **Diálogos.** Ofrecen una interfaz de usuario con el principal propósito de solicitar información que se asigna a los parámetros del reporte. - **Formatos de impresión.** Es el diseño que tendrán los datos en el papel al ser impresos. - **Sub-programa.** Consiste en un conjunto de rutinas en lenguaje Visual Basic Script que el usuario puede definir para aumentar la funcionalidad del reporte, ya sea realizando cálculos complejos, acciones sobre los datos o interceptando y respondiendo a eventos durante la ejecución. - **Otros recursos.** Consisten en texto simple o imágenes que la especificación del reporte contiene para que los utilice durante la ejecución. La especificación del reporte se almacena en archivos con extensión XPD cuyo formato es abierto. Por su parte, el motor en tiempo de ejecución produce un documento a partir del archivo XPD que contiene los datos y es finalmente un informe. Los informes pueden almacenarse en archivos con extensión XPR y desplegarse a través de un visor para este formato. Es importante apuntar que los formatos XPD y XPR están basados en XML, lo que facilita su comprensión, adecuación, adopción y posible implementación en otros sistemas operativos. ####¿Qué se puede hacer con Códice FX? Construir reportes que presenten información basada en parámetros que sean suministrados por el usuario o por otra aplicación. Códice FX proporciona mecanismos para generar reportes con parámetros que permitan filtrar el conjunto de resultados o incrustarse en las consultas SQL. En Códice FX se pueden construir cuadros de diálogo (ventanas) que permitan al usuario introducir los valores requeridos a través de controles con amplias características, Códigos de barras, imágenes y gráficas. Códice FX permite construir reportes que incluyan códigos de barras (EAN/UPC/Code 39/Code128) con solo dibujarlos. Los reportes pueden incluir imágenes que estén almacenadas en la base de datos o en cualquier ubicación (externa o interna al reporte). También es posible incorporar gráficas (barras/líneas/pastel/etc.) de los datos con unos cuantos clics. #####Elementos que forman un reporte **Conexiones** Códice FX utiliza la tecnología OLE DB para establecer la conexión y recuperar conjuntos de registros. Para crear una conexión a una base de datos puede hacerlo de dos formas. - Haga clic en el menú *Proyecto* seleccione *Insertar objeto* y seleccione *Conexión a base de datos* - Si desea hacerlo por el explorador de proyectos, haga clic en *Insertar* y selecciones *Conexión a base de datos*. En el cuadro de dialogo conexión, establezca un nombre para la conexión. Seleccione *Cadena de conexión OLE DB*, y haga clic en *Diseñar*, indique una cadena de conexión seleccionando el proveedor OLE DB de acuerdo al Motor de base de datos que se esté utilizando. #####Origen de registros Un origen de registros le permite obtener el contenido de una base de datos mediante una consulta SQL. Si no ha creado una conexión no se podrá insertar un origen de registros. Una conexión puede contener uno o más orígenes de registros y estos a su vez también pueden tener orígenes de registros dependientes. Propiedades de un origen de registros: - Escriba el nombre del origen de registros (no puede existir dos orígenes de registros con el mismo nombre) - Especifique un tipo de origen de donde obtendrá los datos - Diseñe la consulta SQL que le servirá para filtrar los datos - Especifique los filtros y cadenas de ordenación en caso de que sean necesarias En caso de lo requiera podrá poner orígenes de registro dependientes, así como parámetros para los mismos que podrá configurar en las pestañas correspondientes. #####Parámetros Códice FX permite definir parámetros para los reportes, un parámetro es la identificación por nombre de un valor que regularmente proviene del exterior y que se utiliza internamente en una condición de filtro en consultas SQL. Permiten especificar datos que pueden ser usados como criterios de filtro. Puede agregar parámetros de dos maneras: - Desde el menú *Proyecto* selecciones *Insertar objeto* y seleccione *Parámetro* - Desde el explorador de proyectos, seleccionando *Insertar* y haciendo clic en *Parámetro*. En la ventana de parámetros deberá definir un nombre, un tipo de dato y si desea puede agregarle un valor predeterminado. #####Diálogos Los diálogos ofrecen una interfaz de usuario con el principal propósito de solicitar información que se asigna a los parámetros del reporte, esta información servirá para restringir o filtrar los datos de la consulta SQL, pueden ser de diferentes tipos, como rango de fechas, rango de horas, un valor numérico o cadena. Puede agregar un diálogo de dos formas: - Desde el menú *Proyecto* seleccionando la opción *Insertar objeto* y haciendo clic en la opción *Dialogo***.** - Desde el explorador de proyecto dando clic en *Insertar* y seleccionando *Diálogo* Para cambiar el nombre de un diálogo o el título de la ventana podrá hacerlo en la barra superior del diseñador de diálogo. #####Formatos de impresión Un formato de impresión es utilizado para realizar el diseño del reporte. El principal elemento que se dibuja sobre un formato de impresión es la cuadrícula de detalle en la cual se integran los campos de una base de datos. En el formato de impresión se definen el tamaño de papel para la impresión, puede seleccionarse un tamaño personalizado o un tamaño estándar como el tamaño carta u oficio, también se define el tamaño de los márgenes, la unidad de medida (centímetros, milímetros o pulgadas), la orientación de la hoja y si lo desea un formato de contraportada que se ejecutará después del formato principal. Si desea crear etiquetas puede dividir la hoja en el número de filas y columnas que se requieran. Configurar el formato de impresión: - Tamaño de papel: El tamaño del formato de impresión sobre el cual se hará el diseño del reporte. - Orientación: Configure esta opción de acuerdo a la forma que desea imprimir su reporte, ya que con esta propiedad se configura la orientación de la impresora. - Márgenes. Muestra una guía para delimitar la hoja. Códice FX permite grabar tarjetas con banda magnética o Smart-cards, así que si el formato de impresión que está configurando es para una tarjeta, seleccione el botón *Banda magnética, smart-card y otras opciones avanzadas* donde podrá realizar las configuraciones e incluir los datos que desea grabar. #####Imágenes y textos El diseñador de reportes de Códice FX incluye dos elementos importantes, imágenes y textos, estos son recursos internos que una vez agregados al proyecto pueden ser utilizados cuando se desee. Los recursos internos pueden utilizarse para agregarlos al diseño del reporte dentro de un control. Por ejemplo puede crear un control imagen y elegir la opción de recurso interno y seleccionar una imagen de las que haya agregado. Las imágenes y textos se pueden agregar de dos formas: - Desde el menú *Proyecto* seleccionando *Insertar objeto* y haciendo clic en *Texto* o *Imagen* - O bien desde el explorador de proyectos en *Insertar* y seleccionando *Imagen* o *Texto*. #####Subprograma El subprograma permite agregar código en lenguaje Visual Basic Script y Java Script. El código se ejecuta durante la ejecución del reporte. Esto permite agregar funcionalidad al reporte ejecutando métodos, interceptando eventos, agregando objetos o utilizando los propios del motor en tiempo de ejecución. **¿Qué se puede hacer?** - Controlar el ingreso de datos en los diálogos. - Interceptar eventos de un diálogo, eventos de los controles de diálogo y eventos que suceden durante la ejecución del reporte. - Utilizar la biblioteca de Códice FX para acceder a la especificación del reporte mediante el objeto XPD. Con esto es posible obtener orígenes de registro, valores de parámetros, imágenes incluidas en el reporte, etc. - Modificar o crear nuevos objetos dentro del reporte. Por ejemplo, puede crear un nuevo parámetro, o modificar los valores de un control dentro de un diálogo o un formato de impresión. **¿Qué necesito saber para empezar?** - Códice FX permite escribir un subprograma en lenguaje Visual Basic Script o JavaScript, por lo que lo primero que necesita es tener conocimiento básico de estos lenguajes. - La biblioteca de funciones que están disponibles en un subprograma contiene los siguientes objetos: eBasic, XPD, XPREngine y eDigitalDoc. Estos objetos permiten tener acceso a los componentes del reporte y a funciones de propósito general. - El tipo de lenguaje se configura en propiedades del proyecto donde puede seleccionar Visual Basic Script o JavaScript. ####Explorando la interfaz del usuario (Ejemplo: Hola mundo) 1. Crear un nuevo proyecto 2. Seleccionar el control texto estático y dibujarlo sobre el formato de impresión. 3. Escriba el texto “Hola Mundo” en la venta de propiedades del control. 4. Presione Cerrar 5. Ejecutar el proyecto (vista previa, puede hacerlo de la siguiente forma): 6. Seleccione en el menú *Proyecto* y haga clic en *Ejecutar*. 7. Presione la tecla *F5*. 8. Seleccione en el menú *Archivo* y haga clic en *Vista preliminar*. 9. Guardar el documento generado (XPR) 10. Haga clic sobre el botón Guardar la barra de herramientas del visor. 11. Escriba el nombre del archivo y seleccione guardar. El archivo se guarda con extensión XPR. **Nota:** el documento generado (archivo con extensión xpr) puede ser abierto con el visor de reportes de Códice y también con el diseñador de Códice. ###Conexión, obtención y presentación de datos ####Administrando conexiones a Bases de Datos Códice FX permite crear conexiones con múltiples bases de datos como son: MS Access, MS SQL Server, MySQL, Paradox, Firebird, dBase etc. El diseñador de conexiones le permite agregar conexiones al proyecto de diferentes formas: - Con el administrador de conexiones en el cual se crea un grupo de aplicaciones donde se pueden crear una o más conexiones que pueden ser utilizadas en cualquier proyecto que desee sin necesidad que crear de nuevo la conexión. - Con el eAdaptador para MaxiComercio y Déminus el cual se utiliza para crean una conexión con la base de datos de estos productos (sólo versión 2006 y anteriores). Si tiene instalados cualquiera de estos productos sólo debe seleccionar esta opción y se creará una conexión con su base de datos. El adaptador para Academium funciona de la misma manera que la opción anterior solo que se crea una conexión con la base de datos de este Academium de las versiones 2005 y 2006. Para conectarse a cualquier base de datos diseñando una cadena de conexión seleccione Cadena de conexión OLE DB. ####Uso del administrador de Conexiones de Grupo Execom Esta es la mejor forma de identificar la información de conexión que será usada en la elaboración de reportes. - Indicar una conexión al reporte usando el administrador de conexiones 1. Inserte una nueva conexión al proyecto (Menú *Proyecto*->*Insertar*->*Conexión a base de datos*) seleccione la aplicación en la lista desplegable de la cual se usara la conexión predeterminada <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.001.png"/> Nota: el nombre de una aplicación sirve para clasificar un grupo de conexiones. 2. Seleccione o cree una nueva conexión al proyecto presionando el botón *Configurar*, aparecerá la siguiente pantalla <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.003.png"/> Para crear una conexión a una base de datos, debe dar clic en el botón *Nueva conexión,* aparecerá la siguiente pantalla, proporcione los valores que solicita la ventana de propiedades de conexión. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.002.png"/> - **Propiedades del registro de conexión** - Nombre de la conexión: Es el identificar de la conexión. - Aplicación: Es el nombre del grupo en el que se clasificará. - Nombre de usuario y contraseña: Son las credenciales de acceso al servidor de la base de datos. - Conexión predeterminada para esta aplicación: Permite indicar la conexión a utilizar por defecto cuando se solicite acceso a una aplicación. - Acerca de las conexiones registradas Cada conexión se identifica con un nombre que no debería contener espacios en blanco ni caracteres especiales. Códice FX y en general cualquier aplicación puede establecer conexión a un origen de datos por nombre de aplicación esto significa que se usaría la configuración de la conexión marcada como predeterminada si no existiera ninguna predeterminada se tomara la configuración de la primera que se encuentre. Cada aplicación puede tener una conexión predeterminada. Cada conexión registrada puede estar clasificada por el nombre de la aplicación que la utiliza. Grupo Execom define los siguientes nombres de administración para mantener compatibilidad con versiones anteriores de otros productos, las cuales son: - **Nombres reservados de aplicaciones** - *oldDeminus* para acceder a las bases de datos (Access 97) de las aplicaciones Déminus 2006 y MaxiComercio 2006 [(www.deminus.com.mx ](http://www.deminus.com.mx/)y www.maxicomercio.com.mx) - *oldAcademium* para acceder a las bases de datos (Access 97) de la aplicación Academium versiones anteriores a 2006 [(www.academium.com.mx ](http://www.academium.com.mx/)) ####Diseñando un origen de registros (Uso del diseñador de consultas) Un origen de registros permite obtener un conjunto de registros de una base de datos mediante una consulta SQL. Puede crear un origen de registros de varias formas: desde una tabla, un procedimiento almacenado o creando una consulta SQL manualmente. Una conexión puede contener uno o más orígenes de registros y estos asu vez tambien pueden tener origenes de registros dependientes. **Propiedades de un origen de registros:** 1. Escriba el nombre del origen de registros (no puede existir dos orígenes de registros con el mismo nombre). 1. Especifique un tipo de origen de donde obtendrá los datos. 1. Diseñe la consulta SQL que le servirá para filtrar los datos. 1. Especifique los filtros y cadenas de ordenación en caso de que sean necesarias En caso de lo requiera podrá poner orígenes de registro dependientes, así como parámetros para los mismos que podrá configurar en las pestañas correspondientes. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.004.jpeg"/> ####El diseñador de consultas SQL El diseñador de consultas SQL permite mediante un entorno visual construir consultas SQL que permitan obtener los conjuntos de registros necesarios. Esta es una herramienta de dos vías, lo cual significa que puede “dibujar” la consulta y obtener código SQL o a la inversa, escribir SQL y ver su representación gráfica. La ventana del diseñador está formada por varias partes que permiten realizar todas las tareas necesarias. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.005.png"/> 1. *Esquema de la base de datos*. Muestra en forma jerárquica las tablas y vistas disponibles en la conexión actual. Al desplegar un elemento se muestran los campos (columnas) que lo forman, indicándose claves primarias y claves foráneas. 2. *Información del elemento seleccio*nado. Presenta información detallada acerca del elemento seleccionado en el Esquela de la base de datos. Su propósito es meramente informativo. 3. *Botones de acción*. Permiten realizar las siguientes acciones: - Agregar tabla al diagrama. Muestra una lista seleccionable de tablas y vistas disponibles para que sean incluidas en el Área de diseño. - Ver árbol de sintaxis. Despliega una vista jerárquica (árbol) de los elementos que forman la instrucción SQL correspondiente al diseño actual, esta vista es muy útil para analizar la lógica de expresiones de filtro (WHERE) por ejemplo. - Ejecutar consulta (Vista previa de los datos). Ejecuta la consulta que se está diseñando y muestra el conjunto de resultados. 4. *Área de diseño*. Está formada por dos pestañas: - Vista de diseño. Permite diseñar el diagrama de la consulta, es decir marcar los campos a mostrar, trazar uniones entre tablas, etc. - Consulta SQL. Contiene el código SQL correspondiente a la vista de diseño, cualquier cambio en el diagrama se reflejará en el código y viceversa. 5. *Propiedades de columnas*. Esta cuadrícula permite establecer los “alias”, agrupaciones y condiciones de filtro a las columnas seleccionadas para formar parte de la consulta SQL. ###Manejo de parámetros ####Parámetros en los reportes de Códice FX Códice FX permite definir parámetros para los reportes, un parámetro es la identificación por nombre de un valor variable que regularmente proviene del exterior y que se utiliza internamente en una condición de filtro en consultas SQL o para cualquier otra cosa que sea necesario. Generalmente deberá especificar parámetros para: - Establecer los criterios de filtro (Where/Having) de una consulta SQL, por ejemplo indicar un rango de fechas, un valor de límite, etc. - Realizar cálculos o procesos que dependan de un valor variable usando código VBS/Javascript en el interior del reporte. **Tipos de los parámetros** Los valores que contiene un parámetro usualmente son textos, números o fechas/horas, debido a que pueden ser pasados directamente al motor de la base de datos se permite especificar exactamente el tipo OLE DB al que pertenecen. De manera predeterminada Códice FX asigna el tipo VarChar para parámetros de texto, Double para parámetros numéricos y ofrece la opción de tratar como VarChar o como Date, DateTime o DBDate a las fechas/horas. Consulte la documentación de ADO (OLE DB) para conocer mejor los tipos existentes y la documentación del motor de la base de datos para conocer los tipos soportados. Si no va a utilizar los parámetros para ser enviados al motor de la base de datos y solo serán empleados como macros en las consultas SQL o dentro del código de sub-programa del reporte, realmente no es significativo el tipo OLE DB ya que son procesados como cualquier variable del entorno de programación sin tipos (VBS/Javascript). ####Sintaxis embebida en SQL Los parámetros se asemejan a las variables en que pueden contener valores que cambian, pero se diferencian por el hecho de que sirven de interfaz con el exterior del reporte (pueden ser establecidos por la aplicación que invoca al reporte, por ejemplo) y tienen un tipo definido de OLE DB. ***Ejemplo*:** Suponiendo que se requiere un informe que muestre las ventas que sobrepasen un determinado monto en un período de tiempo, sería necesario indicarle al reporte que existen 3 valores cambiantes que deben ser tomados en cuenta para la obtención del conjunto de registros a imprimir. Esto 3 valores cambiantes (parámetros) serían: Monto, Fecha Inicial y Fecha final. Establecer el valor para estos 3 parámetros puede hacerse de dos maneras: - Creando un diálogo en el reporte que permita al usuario capturarlos (interno). - Dejando que la aplicación que invoca al reporte los establezca mediante código de programa (externo). Para el primer caso debería agregar un Diálogo al reporte, colocar un control eNumberField para el Monto y dos controles eDateField para las fechas. En el segundo caso, en algún lugar de la aplicación que invoca al reporte debería haber 3 sentencias similares a: *objeto*.GetParameter(”nombre\_parametro”).Value=*Valor* Utilizar los valores de los parámetros para establecer el filtro de la consulta SQL podría realizarse a través de una macro o el paso del parámetro como tal al motor de la base de datos, en el caso de usarse como macro habría una cláusula *Where* similar a esta: Where Monto>@Monto. ####Manejo de parámetros de fecha Actualmente no existe un formato de fecha/hora que sea compatible con todos los motores de bases de datos con plena seguridad, esto se debe a que cada DBMS implementa el manejo e interpretación de valores de tiempo como mejor lo considera. Aunque existen estándares internacionales, no hay ninguna garantía de que el motor que esté usando se alinea a ellos. Para clarificar esta situación vamos a ilustrar con ejemplos. En Access se puede indicar una fecha hora con el formato yyyy-mm-dd hh:mm:ss, este mismo formato funciona sin problemas en MySQL 5.x, aunque curiosamente en MS SQLServer no, ya que MS SQL Server interpreta esta cadena dependiendo de la configuración de idioma del servidor. Esto trae el problema de que el valor 10 de Enero de 2007 14:00:00 en Access y MySQL 5.x será almacenado adecuadamente, pero en MS SQL Server si el idioma del servidor es Ingles Estados Unidos se interpretará como Octubre 10 de 2007 14:00:00. Para agravar la situación, el utilizar un tipo OLE DB de fecha/hora como DBDate, Date o DateTime no resuelve el problema. La mejor solución es en algunos casos, configurar en Códice FX el parámetro que va a contener valores de fecha/hora indicando que se traten como cadenas y especificando un formato que sea válido para el motor que se esté usando. Como se puede observar en la siguiente imagen: <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.006.png"/> Utilice la siguiente tabla como guía para configurar sus parámetros de fecha/hora. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.006.1.png"/> ###Cuadros de diálogo y parámetros ####¿Qué son los cuadros de diálogo? Los diálogos ofrecen una interfaz de usuario con el principal propósito de solicitar información que se asigna a los parámetros del reporte, esta información servirá para restringir o filtrar los datos de la consulta SQL, pueden ser de diferentes tipos, como rango de fechas, rango de horas, un valor numérico o cadena. Puede agregar un diálogo de dos formas: - Desde el menú *Proyecto* seleccionando la opción *Insertar objeto* y haciendo clic en la opción *Dialogo***.**** - Desde el explorador de proyecto dando clic en *Insertar* y seleccionando *Diálogo* Ejemplo de un cuadro de diálogo: <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.007.png"/> Para cambiar el nombre de un diálogo o el título de la ventana podrá hacerlo en la barra superior del diseñador de diálogo. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.008.png"/> **Propiedades principales de un cuadro de diálogo** En ventana de propiedades de diálogo se muestran las propiedades generales que se pueden configurar para cada uno de los diálogos que incluya en el reporte. - **Nombre:** Es un identificador del diálogo. - **Color de fondo:** Seleccione un color de fondo del diálogo. - **Titulo:** Escriba el título de la venta de diálogo, este se muestra en la barra superior del diálogo. - **Métodos a ejecutar:** Estas propiedades se utilizan para indicar el nombre de un método en el subprograma que se ejecutará cuando ocurra un evento durante la ejecución del diálogo <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.009.png"/>) ###Controles comunes La ventana de diálogos cuenta con una caja de controles que permite seleccionar un control y dibujarlo sobre la ventana de dialogo. Estos controles hacen posible personalizar el diálogo agregando campos de texto estático, campos de texto, campos numéricos, campos memo, campo fecha, campo hora, campos selección, casillas de verificación, selector de registros, botón comando e imagen. Cada control cuenta con varias propiedades, las cuales se pueden modificar para adaptarlas a sus preferencias como son color de texto, tamaño, formato, etc. Haga clic en el menú Formato y luego en propiedades de elemento para mostrar la ventana de propiedades o puede hacer clic sobre el botón <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.010.png"/> de la barra de herramientas. A continuación se describen los controles que puede dibujar en un diálogo. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.011.png"/> - **Texto estático.** Permite escribir un texto en la ventana de dialogo que no podrá ser modificado cuando se ejecuta el proyecto, Si desea agregar un texto estático sobre la ventana de dialogo selecciónelo haciendo clic sobre el icono en la barra de controles de dialogo <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.012.png"/> y dibuje sobre la ventana de dialogo el tamaño que desea ocupar para el cuadro del texto. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.013.png"/> Para modificar el texto que desea mostrar en el control haga clic en titulo sobre la ventana de dialogo. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.014.png"/> - **Campo de texto** El campo de texto permite ser asociado a un parámetro para que al momento de ejecutar el proyecto el usuario pueda escribir un texto y así realizar un filtrado sobre un conjunto de registros. Puede agregar un campo de texto a la ventana de diálogo seleccionando <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.015.png"/> luego dibuje sobre la ventana de diálogo el control campo de texto haciendo clic y arrastrando el puntero hasta la posición deseada. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.016.png"/> Cuando se crea un campo de texto abre la ventana de propiedades donde se definen las propiedades del campo como son nombre, título, el parámetro asociado, el formato de salida del parámetro <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.017.png"/> - **Campo numérico** El control de campo numérico permite agregar números al proyecto al momento de estar en ejecución que son asociados a un parámetro para realizar filtros. El campo numérico tiene dos campos internos uno para texto que servirá para escribir el mensaje que visualizara el usuario y el segundo donde recibirá el parámetro ingresado. Puede agregar un campo numero a la ventana de dialogo seleccionando <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.018.png"/> en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea para el campo numérico. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.019.png"/> Cuando se crea un campo numérico abre la ventana de propiedades donde se definen los datos y características principales del campo como: nombre, titulo, el parámetro asociado, el formato de salida etc., así como las propiedades de diseño del título. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.020.png"/> - **Campo memo** El campo memo es un campo de texto multi-linea que permite asociarlo a un parámetro, al ejecutar el proyecto este puede recibir un texto multi-linea, y hacer el filtrado de la consulta por medio del parámetro asociado. Puede agregar un campo memo a la ventana de dialogo seleccionando <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.022.png"/> en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea para el control. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.022.png"/> Cuando se crea un campo memo abre la ventana de propiedades donde se definen los datos y características principales como nombre, titulo y parámetro asociado, así como la apariencia del diseño del título. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.023.png"/> - **Campo fecha** El campo fecha es un campo que permite seleccionar una fecha y asociarla a un parámetro especifico, para hacer una consulta con una restricción de fecha usando la introducida por el usuario ya sea de una fecha específica o de un rango de fechas. El control fecha contiene dos propiedades que son **fecha inicial** y **fecha final**, las cuales siendo iguales el control permitirá que se seleccione cualquier fecha. Cuando la fecha inicial y la fecha final son diferentes el control solo permitirá que se seleccione una fecha dentro del rango marcado por ambas fechas. El control cuenta con botones de dirección <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.024.png"/> para navegar entre los meses del año ya sea hacia delante o hacia atrás hasta encontrar la fecha desea y seleccionarla. Puede agregar un campo fecha a la ventana de dialogo seleccionando en la barra de <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.025.png"/> controles de dialogo, dibuje sobre la ventana de dialogo el control arrastrando el puntero y manteniéndolo presionado hasta dibujarlo del tamaño deseado. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.026.png"/> <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.027.png"/> Cuando se crea un campo fecha abre la ventana de propiedades donde se define nombre del dialogo, titulo, parámetro asociado, formato, así como la apariencia del título. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.028.png"/> - **Campo hora** El campo hora es un campo que permite seleccionar una hora y asociarla a un parámetro especifico, para hacer una consulta con una restricción por hora usando la introducida por el usuario ya sea una hora especifica o de un rango de horas. El control cuenta con botones de flechas <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.029.png"/> para buscar la hora ya sea hacia arriba o hacia abajo hasta encontrar la hora desea y seleccionarla. Puede agregar un campo hora a la ventana de dialogo seleccionando <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.030.png"/> en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea ocupar para el campo hora. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.031.png"/> Cuando se crea un campo hora abre la ventana de propiedades donde se define nombre del dialogo, titulo, parámetro asociado y el formato de salida, asi como la apariencia del título. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.032.png"/> - **Campo selección** El campo selección permite agregar una lista de opciones para seleccionar entre las opciones de la lista y realizar una acción deseada asociada a un parámetro. Tiene dos campos internos uno permite agregar texto que será el titulo del campo. Puede agregar un campo selección a la ventana de dialogo seleccionando <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.033.png"/> y haciendo clic sobre él en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea ocupar para el campo selección. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.034.png"/> <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.035.png"/> Cuando se crea un campo selección abre la ventana de propiedades de selección que tiene tres pestañas de configuración en la pestaña general es donde se define nombre del dialogo, titulo, parámetro asociado que al hacer clic en el botón <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.036.png"/> desplegara la lista de parámetros agregados al proyecto. En la segunda pestaña de configuración Apariencia definimos el diseño del texto. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.037.png"/> En la tercer pestaña lista de opción es donde definimos la lista de opción que podrán ser elegidas al momento de estar en ejecución el proyecto a cada una de estos opciones se le asocia un valor. El control permite agregar nuevas opciones a la lista, eliminar y modificar el orden. Este control es útil para mostrar al usuario una lista de opciones, al seleccionar una el valor de la opción seleccionada se asigna a un parámetro asociado. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.038.png"/> - **Casilla de verificación** El campo casilla de verificación permite permite activar o desactivar una opción vinculada a un parámetro por ejemplo para activar o desactivar la impresión de uno o todo un conjunto de registros. Puede agregar un campo casilla de verificación a la ventana de dialogo seleccionando <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.039.png"/> en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea ocupar para la casilla de verificación. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.040.png"/> <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.041.png"/> - **Selector de registros** El control selector de registro es útil para mostrar el contenido de un origen de registros y darle la posibilidad al usuario de elegir un registro de la base datos para asignarlo como parámetro. Permite realizar búsquedas a través de un campo principal y también mostrar el contenido completo del conjunto de datos que devuelve un origen de registros. Puede agregar un campo selector de registro a la ventana de dialogo seleccionando ![](Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.042.png) en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea para el control selector de registro. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.043.png"/> Cuando cree un campo selector de registros se abrirá la ventana de propiedades del campo donde puede indicar el nombre del control, el titulo que desea que aparezca en pantalla al momento de la ejecución. En fuentes de registro vinculadas podrá seleccionar el origen de registro que estará asociado a este campo y de donde tomara los registros para listarlos, este campo estará asociado a un parámetro. El *campo de búsqueda principal* es aquel por el cual se realizara la búsqueda en el conjunto de registros, el *campo se búsqueda secundario* es el resultado de la búsqueda listada para mayor comprensión del usuario. El *valor de retorno* representa el valor que el control asignara al parámetro. ![](Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.044.png) - **Botón de comando** El botón de comando solo es posible agregarle funcionalidad desde código en el subprograma. Para agregar un botón de comando a la ventana de dialogo seleccione ![](Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.045.png) en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea ocupar para el botón de comando. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.046.png"/> Para cambiar el diseño del título o estilo de texto haga clic en muestra de fuente en la barra de estilo en la parte inferior derecha de la pantalla, para modificar el estilo del texto. Para cambiar el nombre del control y el titulo cámbielos en la barra sobre el dialogo. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.047.png"/> - **Imagen** El control de imagen permite agregar imágenes en la ventana de diálogo. Las imágenes puedes ser del tipo jpg, bmp, gif, wmf y emf. Para agregar una imagen a la ventana de dialogo seleccione <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.048.png"/> en la barra de controles de dialogo, dibuje sobre la ventana de dialogo el tamaño que desea. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.049.png"/> En la ventana de propiedades escriba el nombre del control para identificar la imagen. También puede elegir entre las opciones: - **Ajustar imagen a control:** Redimensiona la imagen adaptándola al tamaño del control dibujado en el diálogo. - **Ajustar control a imagen:** Redimensiona el control adaptándolo al tamaño de la imagen. - **Pestaña Recurso Interno:** Un recurso interno es un archivo agregado al proyecto desde una ubicación en el equipo. En esta pestaña se muestra una lista de la imágenes que ya ha agregado al proyecto, seleccione una para insertarla al control o presione el botón *Importar imagen*** para** buscar una imagen en el equipo. Una vez agregada la imagen al reporte, Códice hace una copia que se guardará dentro del archivo XPD (definición del reporte), por lo que cualquier cambio al archivo original no se reflejará en el resultado del informe, esto es particularmente útil pues a la hora de distribuir el proyecto (archivo XPD) no necesita preocuparse de llevar los archivos de imágenes. ###Orígenes de registros para los cuadros de diálogo Para que un cuadro de diálogo cumpla su función de filtrar, agrupar, o resumir la información que mostrará el reporte, debe tener un origen de registros con una consulta SQL. ###El diseñador de formatos de impresión Un formato de impresión es utilizado para realizar el diseño del reporte. El principal elemento que se dibuja sobre un formato de impresión es la cuadrícula de detalle en la cual se integran los campos de una base de datos. En el formato de impresión se definen el tamaño de papel para la impresión, puede seleccionarse un tamaño personalizado o un tamaño estándar como el tamaño carta u oficio, también se define el tamaño de los márgenes, la unidad de medida (centímetros, milímetros o pulgadas), la orientación de la hoja y si lo desea un formato de contraportada que se ejecutará después del formato principal. Si desea crear etiquetas puede dividir la hoja en el número de filas y columnas que se requieran. ####Filas y Columnas Las filas son las que están de manera horizontal y las columnas son las que están de manera vertical. Un *registro* (también llamado *fila* o *tupla*) representa un ítem único de datos implícitamente estructurados en una tabla. Cada fila de una tabla representa un conjunto de datos relacionados, y todas las filas de la misma tabla tienen la misma estructura. Una *columna* es un conjunto de valores de datos de un simple tipo particular, uno por cada fila de la tabla. Las columnas proporcionan la estructura según la cual se componen las filas. ####Portada y Contraportada <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.050.jpeg"/> La *Portada* es el área de trabajo que aparece predeterminada al crear un nuevo reporte en Códice FX y es lo que se imprimirá al ejecutar el reporte. De forma predeterminada viene configurada en tamaño carta. - **Tamaño de papel:** Elija el tamaño que desea para la hoja. Para cambiar el tamaño manualmente elija Personalizado, los cuadros de alto y ancho se activarán y ahora puede modificar sus valores para adecuarlos a su preferencia. - **Medida:** Elija el tipo de unidad de medida para representar la hoja, estos pueden ser centímetros, milímetros o pulgadas. - **Ancho y Alto:** Modifique estos valores para personalizar el tamaño de la hoja. Elija primero tamaño de hoja Personalizado para poder hacer cambios. - **Orientación:** Indique la orientación de la hoja (horizontal o vertical), de forma predeterminada al imprimirse el diseño del formato se ajustará la configuración de la impresora. - **Márgenes:** El margen dibuja una guía en el formato de impresión para delimitar la hoja. - **Etiquetas:** Para imprimir etiquetas modifique el valor de filas y columnas en el cuadro “Etiquetas” de acuerdo al número de etiquetas que desea crear. También puede modificar el tamaño de la etiqueta cambiando los valores de alto y ancho. Si configura el formato de impresión para imprimir etiquetas el tamaño de la hoja que se mostrará para el diseño será el tamaño de una solo etiqueta. Cuando ejecute el reporte se verán todas las etiquetas en una sola hoja. La *Contraportada* le permite agregar en la creación del reporte un formato que se imprimirá a continuación del formato que lo contiene. Por ejemplo si desea imprimir credenciales, la cara de la credencial será un formato de impresión con los datos de la persona y éste tendrá asignado un formato de contraportada con otros detalles como por ejemplo un código de barras. Así al ejecutar el reporte se imprimirá una hoja con el frente de la credencial y la siguiente hoja será el formato de contraportada. ###Algoritmo general de ejecución El motor en tiempo de ejecución de Códice FX tiene diferentes métodos de realizar las tareas comunes de procesamiento de consultas SQL. En los siguientes apartados se muestra las diferentes formas de hacer un proceso específico con Orígenes de registro como por ejemplo la utilización de parámetros, esto permite al usuario elegir el método que más le convenga. ####Paso de parámetros y uso de macros Los parámetros son usados para realizar un filtro en la consulta realizada a la base de datos, un parámetro puede obtener su valor cuando el usuario se lo asigna (puede ser por medio de un diálogo) o asignarte un valor predeterminado. Así, se hace la consulta de acuerdo al valor de dicho parámetro. Es posible utilizar los parámetros de dos maneras diferentes. La primera es agregando el símbolo de interrogación en la consulta SQL y la segunda es agregando el nombre de un parámetro precedido del signo @. **Ejemplo:** ~~~ SELECT \* FROM Clientes WHERE TipoCliente=? ~~~ La consulta SQL anterior recibe un parámetro, por lo tanto es necesario mandar un valor para realizar la consulta correctamente. La manera de funcionar en esta forma es la siguiente: El motor en tiempo de ejecución manda la consulta y el parámetro a la base de datos para obtener el conjunto de registros. De esta forma el motor de la base de datos hace el trabajo de entender la consulta y sustituir el valor del parámetro. ` `El **uso de macros** se muestra a continuación: ` `SELECT \* FROM Clientes WHERE TipoCliente=@Parametro1 Cuando se utilizan macros en las consultas el proceso que realiza el motor en tiempo de ejecución es diferente: Primero se obtiene el valor de parámetro, luego se sustituye pone ese valor en la consulta SLQ, es decir se modifica la consulta y en lugar del nombre del parámetro se coloca su valor. Por último, se envía al motor de la base de datos la consulta completa. ###Agrupaciones y Gráficos ####Funcionamiento de las agrupaciones Una de las operaciones más útiles sobre una base de datos es realizar filtros para obtener los datos deseados sin campos extras que no se desean ver. Las cláusulas WHERE y HAVING realizan estas operaciones en una consulta SQL, pero a demás de estas Códice FX incluye un diseñador de filtros para hacer más fácil esta tarea. - **Diferencias entre Filtros y Cláusulas WHERE/HAVING** Las cláusulas Where y Having son instrucciones SQL las cuales se agregan en una consulta para realizar un filtro en un conjunto de registros de la base de datos. Los datos obtenidos mediante un origen de registros que tenga incluido es su consulta estas cláusulas serán solo los que se hayan indicado. Por ejemplo, se tiene una consulta como la siguiente: SELECT \* FROM Clientes WHERE Tipo=1001 Esta consulta regresa un conjunto de registros donde los datos serán solo aquellos clientes que tengan un tipo de cliente igual a 1001, si un cliente pertenece a otro tipo entonces no se mostrarán los datos de ese cliente. - **Filtros** Las expresiones de filtro del diseñador de orígenes de registros permiten realizar filtros en una consulta de manera fácil. A diferencia de Where o Having, los **Filtros** realizan su tarea des pues de obtener el conjunto de datos. Por ejemplo si tenemos un origen de registros que obtiene los datos de una tabla y se desea hace un filtro, se agregaría una expresión de filtro como sigue: - **Origen de datos:** <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.051.png"/> - **Expresión de filtrado:** <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.052.png"/> Las expresiones de filtrados se puede hacer por medio del editor de filtros. - **Expresiones de ordenación VS Order By** Los métodos de ordenación se utilizan para obtener un conjunto registros de manera ordenada de acuerdo a las especificaciones que se indiquen en un origen de registro. Códice FX tiene dos maneras de realizar las ordenaciones, por medio de “Order By” o escribiendo expresiones de ordenación. - **Order By** Esta instrucción se utiliza directamente en las consultas SQL lo que permite obtener un conjunto de registros ya ordenados desde la base de datos, es decir, cuando el origen de registros realice la consulta los datos obtenidos estarán en el orden como se indicó. Se puede incluir la expresión Order By de dos maneras. La primera es utilizando el diseñador de consultas y la segunda es añadiéndola directamente sobre la consulta SQL. - **Expresiones de ordenación** A diferencia del método Order By las Expresiones de Ordenación se añaden como una propiedad de un origen de registros, por lo tanto cuando el origen de registros obtenga los datos de la base de datos estos estarán tal como fueron capturados, es decir no estarán ordenados, el método de ordenación se aplica cuando el origen de registros ya tiene el conjunto de datos. Tomando en cuenta lo anterior la manera más eficaz de realizar una ordenación de los datos es a través de Order By ya que obtiene los datos ya ordenados de la base de datos, a diferencia de las expresiones de ordenación que después de obtener los datos aplica el método de ordenación. ####El control de gráficos El control gráfica le permite dibujar una gráfica y asignarle un origen de registros de donde obtendrá los datos. Solo debe configurar las propiedades como son el tipo de gráfica las leyendas, etc. y el resultado se verá al ejecutar el reporte. ` `**Pestaña general** **Gráfica:** - **Tipo de gráfica:** Permite elegir el tipo de gráfica que desea crear ya sea de Barras, Líneas, Pastel etc. - **Borde:** Permite elegir el tipo de borde de la gráfica ya sea línea simple, doble etc. ` `**Fondo:** - **Fondo:** Permite definir el color del fondo de la gráfica. - **Color de borde:** Permite definir el color de borde de la gráfica **Serie de datos en filas:** Al activar la casilla **muestra los datos en filas** **Mostrar leyendas:** Al activar la casilla muestra el texto agregado como leyendas en la gráfica. **Mostrar marcadores:** Al activar la casilla muestra marcadores en la gráfica generada. **Sombra:** Al activar la casilla muestra una sombra en la gráfica <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.053.png"/> **Pestaña datos** **Conexiones:** - **Conexión:** Muestra la conexión hacia la base de datos. - **Origen de registro:** Indica el origen de registro que se graficará. **Mostrar escalas:** Permite activar o desactivar la impresión de escalas en los ejes de la grafica **Escala:** Permite definir la escala, si se realizara de manera automática o con limites definidos por el usuario. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.054.png"/> **Pestaña título:** Permite definir los títulos de la grafica, los ejes etc. Asi como diseñar el formato de texto. <img src="img/Aspose.Words.a509e4e1-7515-4c2e-80c1-cbb120b18496.055.png"/>