Ver Mensaje Individual
  #5  
Antiguo Hace 1 Semana
emailx45 emailx45 is offline
Miembro
 
Registrado: abr 2025
Posts: 22
Reputación: 0
emailx45 Va por buen camino
Thumbs up

Otra cosa: si estás utilizando dos tablas para obtener datos y, a partir de ellas, generar una tercera tabla con el resultado, podrías emplear una "VIEW" (una estructura que genera resultados automatizados y que puede activarse o desactivarse según sea necesario) en SQL, o bien un "STORED PROCEDURE" (procedimiento almacenado) para obtener resultados bajo demanda:

1) La "VIEW" o el "STORED PROCEDURE" pueden contener la consulta SQL ya preparada dentro de tu base de datos.
2) Tanto la "VIEW" como el "STORED PROCEDURE" pueden utilizarse en una sentencia `SELECT` de forma habitual, incluso admitiendo parámetros.
3) De este modo, evitarías incluir todo el código dentro de tu aplicación Delphi y prescindirías de configuraciones manuales. Todo podría gestionarse directamente en el componente SQL —como `FDQuery`, `IBQuery`, `UniQuery`, etc.— utilizando el *Object Inspector* del IDE (a través de sus propiedades visuales). Además, podrías emplear el editor de campos (*Field Editor*) para definir detalles como el formato, entre otros.
4) Utilizar una "VIEW" o un "STORED PROCEDURE" para crear tu nueva consulta resulta mucho más práctico y limpio, ya que facilita el mantenimiento sin necesidad de modificar el código de la aplicación.
5) ¡Tenlo en cuenta!
6) Para tu caso, considero que una "VIEW" es la mejor opción: reside en la base de datos, se actualiza automáticamente a medida que los datos en tus tablas cambian (ya sea por inserciones o eliminaciones), admite parámetros, es sencilla de integrar en un componente y se basa en el uso natural de `SELECT` en SQL. ¡Es la solución ideal!


Código SQL [-]
CREATE VIEW VW_ExtratoContabil AS
SELECT 
    Data,
    SUM(CASE WHEN Tipo = 'DEB' THEN Valor ELSE 0 END) AS TotalDebito,
    SUM(CASE WHEN Tipo = 'CRE' THEN Valor ELSE 0 END) AS TotalCredito
FROM (
    SELECT Data, 'DEB' AS Tipo, Valor FROM TableDEB
    UNION ALL
    SELECT Data, 'CRE' AS Tipo, Valor FROM TableCRE
) AS Movimentacoes
GROUP BY Data;

Código SQL [-]
SELECT * FROM VW_ExtratoContabil ORDER BY Data;

Última edición por emailx45 fecha: Hace 1 Semana a las 21:03:01.
Responder Con Cita