Mostrando el resultado de consultas en los FLFormDB de AbanQ (y II)
Conseguido! Creo que ya tengo una versión más o menos estable del ejecutable de AbanQ para Windows con las siguientes modificaciones:
- He eliminado la paleta que incluía InfoSial y a que a mí personalmente, no me gustaba estéticamente
- He corregido algunos problemas con el centrado de los formularios en pantalla. Los únicos que no se centran son las ventanas de Áreas. Estoy trabajando en un tratamiento especial para estos.
- He agregado la propiedad qryVisualizacion a los componentes FLTableDB que se incluyen en QtDesigner. Esto permite, como ya he explicado, mostrar en este tipo de componentes el resultado de una query SQL en lugar de una tabla. Esto es útil, si queremos ver el valor de columnas (o campos) de otras tablas relacionadas y que no se incluyen de manera duplicada en la tabla que editamos (política general de los módulos de AbanQ).
La instalacion Quick para Windows la tenéis aquí.
La instalación normal para Windows está aquí.
Los ficheros fuentes modificados están aquí.
Voy a explicar brevemente cómo utilizar la última característica que he añadido. Vamos a hablar de la tabla artículos. En la definición de articulos.mtd tenemos el codfamilia, y esto es lo máximo que podremos ver en el componente FLTableDB cuando pinchamos en Almacén->Artículos. ¿Y si quisiéramos ver a qué familia pertenece ese artículo? Pues o nos sabemos a qué corresponde el código de la familia (útil para expertos en ERP) o bien entramos a editar el artículo para ver la familia (lo que hace la mayoría).
Esta solución permite un paso intermedio y nos va a permitir visualizar en masterarticulos.ui no la tabla articulos, sino una query con el nombre de la familia.
- Creamos en el módulo almacén el archivo articulosqry.qry con el siguiente contenido
<!DOCTYPE QRY> <QRY> <name>articulosqry</name> <!-- MUY importante: No puede haber espacios entre los nombres de las tablas. Es una limitación de AbanQ--> <tables>articulos,familias</tables> <select> familias.descripcion as familia, articulos.* </select> <from> articulos INNER JOIN familias ON articulos.codfamilia = familias.codfamilia </from> <where> </where> </QRY>
- Creamos el archivo articulosqry.mtd. Este fichero será igual a articulos.mtd, pero añadiendo dos cosas
<query>articulosqry</query>
.....
<!-- Agregamos también el metadato del campo "familia" con el nombre de la familia-->
<field>
<name>familia</name>
<!-- Nombre de la familia, leído de la query, del campo descripcion. OJO
al AS en la consulta de arriba-->
<alias>QT_TRANSLATE_NOOP("MetaData","Familia")</alias>
<null>false</null>
<pk>false</pk>
<type>string</type>
<length>100</length>
</field>
Ojo: Es muy, que la primary key de la tabla artículos.mtd sea la misma primary key de la metatabla articulosqry.mtd. Es decir, la primary key debe aparecer en articulosqry.mtd. Esto es así porque utilizo la primary key como elemento de sincronización entre cursor de trabajo en el formulario y cursor de visualización.
- Finalmente, editamos el formulario masterarticulos.ui y en el widget FLTableDB ponemos la propiedad qryVisualizacion igual a "articulosqry".
Cuando veáis el master de artículos, veréis que el listado es el fruto de la query y es visible el nombre de la familia.
OJO: Esta modificación está pensada para las acciones de visualización y navegación entre los registro de una tabla en el componente FLTableDB. Todo lo que esté fuera de eso, puede funcionar mal.
Ya me contáis qué os parece, pero las posibilidades que ofrece creo que son interesantes, ya que no es necesario el duplicar constantemente información a través de las tablas.
Desde InfoSial se ha comentado en algunas ocasiones, que el desarrollo no es abierto. No hay un CVS público en el que ver avances ni código, y liberan el código empaquetado por versiones cada cierto tiempo. Es por ello que publico estas modificaciones en mi blog, y las comento tanto el foro de AbanQ de Google Groups como en el foro oficial de AbanQ. En todo caso estas modificaciones nada tienen que ver con AbanQ ni InfoSial, así que mucho cuidado con los bugs que encontréis, ya que pueden ser de estas modificaciones. (efectos colaterales que no haya detectado).
Por otro lado, si a InfoSial les parecen bien estas modificaciones, podrían incluirlas en próximas revisiones.
A disfrutar!
Sin trackbacks por el momento.
