![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
reportes dinamicos.....
estoy probando delphi MVC sin librerias y tengo un problema con un reporte
genero el query de manera dinamica y en el reporte "seteo" los campos
me muestra el detalle, perfecto, pero los totales no es decir SUM(DEBE) o SUM(HABER) o la diferencia entre ellos no las muestra, no se si me estoy haciendo entender
__________________
Dulce Regalo que Satanas manda para mi..... |
|
#2
|
||||
|
||||
|
Yo no tengo ni idea, aunque te pego lo que dice el primo chatgpt:
Ufff... se ha descuadrado la respuesta. Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal Última edición por Casimiro Noteví fecha: 01-06-2026 a las 16:54:34. |
|
#3
|
|||
|
|||
|
No se si te han contestado o ya tienes la solución, entiendo que lo que haces es un control de libro de caja, con gastos (Debe) ingresos (haber). Lo que no veo son varias cosas si usas procedimientos almacenados ni la base de datos sobre la que trabajas, tampoco aparece la transacción y el commit de datos, pero cuando me pasan estas cosas hago una simplificación: crea un prototipo sencillo que haga la tarea que necesitas, y revisa el funcionamiento. Aveces es preferible perder un día o 2 a estar semanas dando vueltas. Redúcelo a un ejemplo simple, viendo solo la asignación de los dataset y los campos es complicado, no se donde están en el UML, ni como tienes diseñada la capa y las conexiones, siquiera vemos la clase. Con códigos largos, simplifica y revisa todo desde lo mas sencillo, es lo que mejor me funciona para resolver estos casos.
|
|
#4
|
|||
|
|||
|
Para obtener un resumen de los valores, ¡debes establecer un orden acorde con el resultado que esperas obtener!
Por ejemplo, supongamos que deseas conocer el valor resultante de cada día de ventas: a) agrupar e ordenar la columna de la fecha de venta; b) indicar el campo o los campos que se utilizarán para realizar la suma. De lo contrario, la función de agregado (SUM) no tendría un criterio para efectuar la suma de los valores, ¿entiendes?
Cómo funciona: UNION ALL interno: Combina todos los registros de débitos y créditos, añadiendo una columna virtual Tipo ('DEB' o 'CRE') para identificar el origen de cada valor. SUM(CASE ... END): Separa los valores de forma condicional según la fecha, creando columnas de subtotal independientes para débitos y créditos en cada día. GROUP BY Fecha y ORDER BY: Agrupa y ordena cronológicamente por fecha, generando el informe contable diario. Suma final: En su informe (por ejemplo, en Delphi/FireDAC), basta con añadir un pie de página (utilizando TClientDataSet o TFDQuery con agregados, o bandas de informe) que sume las columnas TotalDebito y TotalCredito. Última edición por emailx45 fecha: Hace 1 Semana a las 21:04:38. |
|
#5
|
|||
|
|||
|
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! ![]()
Última edición por emailx45 fecha: Hace 1 Semana a las 21:03:01. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| arrays dinamicos | Chompiras | Varios | 8 | 14-07-2015 23:49:51 |
| Paquetes dinamicos | xerkan | Varios | 14 | 22-10-2007 17:05:58 |
| Forms dinámicos | juliobuitrago | Varios | 8 | 16-04-2007 19:47:25 |
| Arreglos Dinamicos | diniremix | Varios | 3 | 23-05-2006 20:48:31 |
| reportes dinamicos en quicjreport | janettin_8 | Impresión | 3 | 15-04-2004 18:34:10 |
|