Un principiante en las Artes Gráficas Una experiencia en un sector que nos envuelve… El blog personal de David Pinelo.

5Mar/090

Mostrando el resultado de consultas en los FLFormDB de AbanQ

Uno de los puntos que ya comenté en su día es la duplicidad de información en AbanQ que se produce en su modelo de datos. Pongo un ejemplo: Factura de proveedores.

Cuando creamos una factura de proveedores, según el formulario que muestro en la imagen, escogemos el Código de proveedor (Cod. Proveedor), y automáticamente el formulario muestra el nombre del proveedor y su CIF. Lo esperable es que en la tabla de facturas de proveedores (facturasprov) se guarde sólo el código de proveedor (codproveedor).

Factura de proveedores

Factura de proveedores

Pero no!!! En la tabla de facturas de proveedores, se guarda también el nombre del proveedor y su CIF. ¿Y si por ejemplo, hemos creado un proveedor y pasado un mes descubrimos que nos hemos equivocado en una letra en el nombre del proveedor? Deberíamos corregirlo en la definición del proveedor y en todas y cada una de las facturas del proveedor. Este tema lo traté en los foros oficiales de AbanQ en este hilo.

FLFormDB con el listado de facturas de proveedores

FLFormDB con el listado de facturas de proveedores

En este listado, por ejemplo, lo que se muestra es el contenido de la tabla facturasprov, y como en esa tabla se almacenan (duplicando información) el nombre y el CIF del proveedor.

AbanQ proporciona métodos para consultar y mostrar datos de tablas asociadas (foreign field) en los formularios de edición como el de la primera imagen. Sin embargo, no presenta esa misma posibilidad en los listados del componente FLTableDB.

Así que me decidí a iniciar una modificación del widget FLTableDB para que permitiera la posibilidad de no sólo mostrar los registros de una tabla, sino mostrar los registros de una consulta. Lo haría añadiendo una propiedad más al control FLTableDB presente en la edición de formulario de QtDesigner de AbanQ: además de tableName o foreignField agregaría qryVisualizacion.

AbanQ ya presenta la posibilidad de definir consultas a través de los nodos <query> en las definiciones de tablas .mtd y presentar esas querys en los componentes FLTableDB PERO cuando se presentan esas querys no permite la modificación de esos registros. (Sólo permite la consulta).

Mi idea, es la siguiente: Para los componentes FLTableDB tenemos asignado un cursor con la tabla de la que mostrará los datos (y servirá para insertar, modificar, borrar...). Añadiré otro cursor que hará referencia a una Query y será la que muestren los datos. El control llevará internamente la sincronización del registro activo de la query y la tabla (a través de la primary key que deberá estar presente en ambas) para poder realizar operaciones sobre la tabla.

La idea será crear una Query con los datos que queremos visualizar (definida en el módulo con su correspondiente archivo qry). Crearemos un archivo .mtd con los metadatos de la Query. Es importante que en aparezca en ambos la primary key de la tabla sobre la que realmente queremos trabajas (me he basado en el modelo de co_partidasmayor.qry y co_partidasmayor.mtd). En la .mtd debe aparecer la claúsula <query> con el nombre del archivo .qry, y ese mismo nombre es el que se asignará a la propiedad qryVisualizacion del componente en QtDesigner.

Por el momento tengo una primera versión realizada: Falla a la hora de filtrar y cambiar el orden con el que se presentan los registros. Pongo el fuente por si a alguien le interesa

Comentarios (0) Trackbacks (0)

Sin comentarios por ahora.


Deja un comentario

Debes iniciar sesión para dejar un comentario.

Sin trackbacks por el momento.