#

# Informes SQL personalizados

Inicio

- Introducción

- Ejecución de informes mediante el árbol de navegación

- Estructura de la base de datos de MMEX

- SQL Scripting (Introducción)

#
Introducción

Los informes SQL personalizados permiten al usuario crear informes que se ajusten a sus necesidades. Esto se consigue escribiendo un script SQL que se comunica directamente con la base de datos, y que se añade al árbol de navegación de MMEX.

La interfaz del gestor de informes SQL personalizados posee las siguientes características:

Campo de texto Título del informe | Se utiliza para darle un título y acceder al script en el árbol de navegación.
Casilla de verificación Encabezado | Se puede añadir un encabezado sin un script asociado. Un elemento del menú tiene un script asociado. Cuando está marcado: Permite usar un título como encabezado en el árbol de navegación.
Casilla de verificación Submenú | Cuando está marcado: El título aparecerá en el árbol de navegación como un submenú bajo el elemento anterior, el cual no tiene que ser necesariamente un encabezado.
Campo de texto Código del script SQL | En este campo se escribe el propio script.
Botón Cargar | Cargar un script ya existente desde un fichero.
Botón Guardar | Guardar los cambios realizados sobre un script.
Botón Ejecutar | Permite ejecutar el script sin cerrar la ventana. Advertencia: Los errores pueden dar como resultado la pérdida del script si no se guarda antes.
Botón Limpiar | Limpia el campo de código del script SQL.
Botón Cerrar | Cierra la ventana sin guardar. Es una manera de cancelar.

Una vez que se crea el script y se guarda en MMEX, se puede acceder fácilmente al informe a través del árbol de navegación.

La creación de un nuevo informe SQL personalizado se realiza mediante:

- La opción del menú: Herramientas –> Informes SQL personalizados

- El icono de la barra de herramientas

Esto abrirá la ventana de gestión de informes SQL personalizados, y permite al usuario escribir directamente un script y guardarlo como fichero.
Existen scripts SQL personalizados de utilidad disponibles en el foro de MMEX en Internet, al que se puede acceder de las siguientes maneras:

- Utilizando la opción del menú: Ayuda –> Informar de problemas o dar retroalimentación

- Buscar el foro denominado: Custom SQL Report Scripts

Recomendaciones:

- Para scripts nuevos, utilice un título práctico para su informe.

- Guarde el script antes de ejecutarlo en el Gestor de informes SQL personalizados.
  Nota: Los errores en el script pueden hacer que se pierda si no se guarda primero.

- Utilice el menú emergente del árbol de navegación para editar el fichero si es necesario.

Nota:

- Todos los títulos de los scripts se guardan en un fíchero de índice llamado: CustomSQLReportIndex.txt

- Los informes SQL personalizados se pueden eliminar borrando el fichero de índice.

- Los informes se pueden reorganizar modificando directamente el fichero de índice.

Volver arriba | Inicio

#
Ejecución de informes mediante el árbol de navegación

Los informes creados por el gestor de informes personalizados se graban permanentemente en el árbol de navegación. Al informe se le da un nombre al guardarse. Mediante el título del informe, el usuario puede:

- Ejecutar el informe

- Editar el informe

- Borrar el informe

Se puede guardar un título de informe sin un script SQL asociado. Se utiliza como título para agrupar varios scripts. En ese caso el árbol de navegación se comporta de forma similar a los informes estándar. Los informes sólo se pueden anidar en un nivel de profundidad.

Volver arriba | Inicio

#
Estructura de la base de datos de MMEX

Para poder crear ficheros de script, necesitamos entender la estructura subyacente de la base de datos. Esta estructura se muestra a continuación:

Estructura básica de MMEX

Información de tabla

Esta imagen muestra los nombres de tabla con sus campos asociados, y los enlaces que conectan las tablas mediante sus claves primarias.

Nombres de tabla | Descripción de la tabla
InfoTable_V1 | Contiene ajustes específicos de la base de datos.
CurrencyFormats_V1 | Contiene los valores de las divisas de la base de datos.
AccountList_V1 | Contiene todos los nombres de cuenta, y los datos específicos de cada cuenta.
Payee_V1 | Contiene todos los beneficiarios, y la última categoría usada por cada uno.
Category_V1 | Es una lista de todas las categorías del sistema.
SubCategory_V1 | Es una lista de todas las subcategorías del sistema.
CheckingAccount_V1 | Es la tabla principal donde se mantienen todas las transacciones.
SplitTransactions_V1 | Contiene los datos asociados a las transacciones divididas.

Tablas no mostradas en el diagrama |
Stock_V1 | Utilizada para acciones y enlazada con la tabla: AccountList_V1 mediante el campo HeldAt
Assets_V1 | Contiene todos los detalles de los activos
BudgetYear_V1 | El año específico de un presupuesto
BudgetTable_V1 | Detalles de presupuestos
BudgetSplitTransactions_V1 | Transacciones divididas para presupuestos
BillDeposit_V1 | Contiene todos los detalles de las transacciones periódicas. Similar a la tabla: CheckingAccountV1

Volver arriba | Inicio

SQL Scripting (Introducción)

Intentar enseñar programación SQL sobrepasa el alcance de este fichero de ayuda, pero a continuación se encuentra una guía rápida para comprender los scripts, y posiblemente crear los suyos propios si los necesita.

Al crear scripts, el principal comando que usaríamos es la sentencia SELECT.

El formato básico es:

SELECT <nombre> | <nombre> representa el nombre de los campos de la tabla, o * para todos los nombres.
FROM <tabla> | <tabla> representa la tabla o tablas sobre las que se dirige el comando.
WHERE <condición> | [opcional] aquí comprobamos alguna condición.
ORDER BY <parámetro> | [opcional] ordena la salida por este parámetro.

Ejemplos:

SELECT * FROM AccountList_V1;
* Mostraría todos los campos de la tabla: AccountList_V1

SELECT AccountName, Status FROM AccountList_V1 where AccountType = “Term”;
* Mostraría los nombres y el estado de las cuentas a plazo de la tabla: AccountList_V1

Aquí se describe un script más complejo:

Aunque este script es poco útil, sirve para describir algunos principios básicos.
select pT.PayeeName payee, cT.CategName, scT.SubCategName from payee_v1 pT, category_v1 cT, subcategory_v1 scT where pT.categID = cT.categID and pT.subCategID = scT.subCategID order by payee

En el ejemplo vemos que el nombre de la tabla es: payee_V1 y el nombre del campo es PayeeName

En la cláusula FROM vemos el nombre de la tabla: payee_V1 pT
* Aquí el pT del final actúa como un alias para el nombre de tabla.

Ahora en el SELECT vemos: pT.PayeeName payee
* El pT. se utiliza para establecer la tabla a la que pertenece el campo PayeeName
* El payee del final es un alias para la combinación tabla.nombredecampo
Podemos separar tablas y nombres de campos con comas, como vemos en este ejemplo.

En la cláusula WHERE vemos: pT.categID = cT.categID
* Aquí hacemos una comprobación para asegurarnos que los dos campos son el mismo en ambas tablas.

Ahora en la cláusula ORDER BY podemos utlizar el nombre simplificado de payee que definimos en la cláusula SELECT.

Espero que esta pequeña introducción aclare un poco el funcionamiento de los scripts que se ven en la sección Custom SQL Report Scripts del foro de MMEX.

Volver arriba | Inicio