Diferencia entre revisiones de «DEV AUXILIARES/SELECCION CRITERIOS»
Sin resumen de edición |
|||
Línea 76: | Línea 76: | ||
La tabla SECTORES tiene los siguientes campos (solo se muestran algunos): | La tabla SECTORES tiene los siguientes campos (solo se muestran algunos): | ||
ADM | {| class="wikitable" | ||
Administración | |- | ||
[ADM][Administración] | ! FCODIGO !! FDESCRIPCION !! FCLAVE_CRITERIOS | ||
|- | |||
|ADM||Administración||[ADM][Administración] | |||
|- | |||
|COM||Comercial||[COM][Comercial] | |||
|- | |||
|OPS||Operaciones||[OPS][Operaciones] | |||
|- | |||
|PA||Planta||[PA][Planta] | |||
|- | |||
|} | |||
{| class="wikitable" | |||
|- | |||
! Columna !! Campo físico !! Campo lógico !! Atributo !! Descripción !! Etiquetas !! Observaciones | |||
|- | |||
|1||CuentaDesde||CuentaDesde||[[CONTABILIDAD/CUENTAS|CUENTA]]||Cuentas contables, saldos por rango de cuentas||REQ||Cuenta inicial. | |||
|- | |||
|2||CuentaHasta||CuentaHasta||[[CONTABILIDAD/CUENTAS|CUENTA]]||Cuentas contables, saldos por rango de cuentas||REQ||Cuenta final. | |||
|- | |||
|3||FechaDesde||FechaDesde||[[DATETIME|DATETIME]]||Fecha y hora.||REQ||Fecha para el saldo inicial. | |||
|- | |||
|4||FechaHasta||FechaHasta||[[DATETIME|DATETIME]]||Fecha y hora.||REQ||Fecha para el saldo final. | |||
|- | |||
|} | |||
=Etiquetas= | =Etiquetas= |
Revisión del 15:42 3 abr 2025
Descripción
Los auxiliares de tipo SELECCION_CRITERIOS permiten definir criterios adicionales a las Consultas.
Este tipo de auxiliar aplica a:
Modo de operación
Más fácil explicar la funcionalidad de este auxiliar a través de un ejemplo usando la consulta CUENTA_SALDOS_Consulta (ver Cuentas contables, saldos por rango de cuentas (CUENTA_SALDOS_Consulta)) que permite consultar los saldos de cuentas contables:

Criterios de la consulta
Los criterios definidos por la consulta son:
Columna | Campo físico | Campo lógico | Atributo | Descripción | Etiquetas | Observaciones |
---|---|---|---|---|---|---|
1 | CuentaDesde | CuentaDesde | CUENTA | Cuentas contables, saldos por rango de cuentas | REQ | Cuenta inicial. |
2 | CuentaHasta | CuentaHasta | CUENTA | Cuentas contables, saldos por rango de cuentas | REQ | Cuenta final. |
3 | FechaDesde | FechaDesde | DATETIME | Fecha y hora. | REQ | Fecha para el saldo inicial. |
4 | FechaHasta | FechaHasta | DATETIME | Fecha y hora. | REQ | Fecha para el saldo final. |
Si necesitáramos filtrar por sectores eligiendo uno o más de ellos no podríamos hacerlo ya que la definición de argumentos de consultas (ver Consultas, argumentos (prxconsultasA)) no permite definir listas variables.
El auxiliar descripto en este artículo resuelve esa situación permitiendo definir una sentencia SQL que traiga una lista de registros, por ejemplo, lista de sectores de la empresa. Y posteriormente marcarlos para indicar cuáles hemos seleccionado. Esta funcionalidad se completa modificando el SQL de la consulta para que permita usar este nuevo argumento.
Ingreso de criterios adicionales
Al definir un auxiliar de este tipo veremos una opción en el menú de la consulta llamada "Definir criterios" como se ve justo abajo:

Al seleccionar esa opción se abrirá una pantalla como la de abajo en la que podemos marcar qué sectores queremos consultar:

La pantalla de selección de múltiples criterios solo admite una columna por lo que si queremos mostrar más de un campo habitualmente se separan con corchetes como se nota en la imagen.
Al cerrar la pantalla, las selecciones se guardan en una tabla descripta en Tabla para guardar criterios de una consulta (pCONSULTA_CRITERIOS) y quedan asociadas a la consulta. Cada consulta tiene un GUID que se inicializa al abrirla, y es usado por esta tabla.
El SQL de la consulta debe usar código similar al de abajo para incluir en el resultado lo que corresponda a los sectores elegidos:
AND ( NOT EXISTS (SELECT * FROM pCONSULTA_CRITERIOS WHERE FGUID = @FGUID) OR EXISTS (SELECT * FROM pCONSULTA_CRITERIOS, SECTOR WHERE pCONSULTA_CRITERIOS.FGUID = @FGUID AND pCONSULTA_CRITERIOS.FCLAVE = SECTOR.FCLAVE_CRITERIOS AND CTAMOVTABLA.FSECTOR = SECTOR.FCODIGO) ) )
El SQL primero verifica si se está usando la tabla pCONSULTA_CRITERIOS:
- Si no se está usando trae todos los registros.
- Si se está usando trae solo los registros asociados, en este caso, a los sectores elegidos como criterios.
Campo adicional en la tabla de sectores
Para simplificar esta sentencia se ha agregado a la tabla de CONTABILIDAD/SECTORES un campo calculado denominado FCLAVE_CRITERIOS que une el código y la descripción de cada sector (usando corchetes) para que tengan el mismo formato que la pantalla de selección de criterios.
Por ejemplo, si ejecutamos:
SELECT * FROM pCONSULTA_CRITERIOS WHERE FGUID = '{1A2F93C7-0490-4A92-B436-5CE2CBD1D946}'
El sistema retornará:
- [ADM][Administración]
- [COM][Comercial]
- [SEC9905][Sector 9905 EDITA]
Estos valores coinciden con el campo FCLAVE_CRITERIOS de algunos de los registros de sectores.
La tabla SECTORES tiene los siguientes campos (solo se muestran algunos):
FCODIGO | FDESCRIPCION | FCLAVE_CRITERIOS |
---|---|---|
ADM | Administración | [ADM][Administración] |
COM | Comercial | [COM][Comercial] |
OPS | Operaciones | [OPS][Operaciones] |
PA | Planta | [PA][Planta] |
Columna | Campo físico | Campo lógico | Atributo | Descripción | Etiquetas | Observaciones |
---|---|---|---|---|---|---|
1 | CuentaDesde | CuentaDesde | CUENTA | Cuentas contables, saldos por rango de cuentas | REQ | Cuenta inicial. |
2 | CuentaHasta | CuentaHasta | CUENTA | Cuentas contables, saldos por rango de cuentas | REQ | Cuenta final. |
3 | FechaDesde | FechaDesde | DATETIME | Fecha y hora. | REQ | Fecha para el saldo inicial. |
4 | FechaHasta | FechaHasta | DATETIME | Fecha y hora. | REQ | Fecha para el saldo final. |
Etiquetas
Este auxiliar no define ninguna etiqueta, directamente registramos el comando SQL.
Ejemplo
Este auxiliar xxxxxxxxxxx
<COMANDO> SELECT FCLAVE = '[' + SECTOR.FCODIGO + ']' + '[' + SECTOR.FDESCRIPCION + ']' , FCHECKED = CASE WHEN EXISTS (SELECT * FROM pCONSULTA_CRITERIOS WHERE pCONSULTA_CRITERIOS.FGUID = FBN(GUID) AND pCONSULTA_CRITERIOS.FCLAVE = '[' + SECTOR.FCODIGO + ']' + '[' + SECTOR.FDESCRIPCION + ']') THEN CAST(1 AS BIT) ELSE CAST(0 AS BIT) END FROM SECTOR ORDER BY 1 </COMANDO>