![]() |
Grabacion campos de dos campañas en una Tabla
Buenos dias,
Necesito copiar en una Tabla, las ventas del año 25 y del año 26, y compararlas, las ventas del año 25 están el directorio Datos25 y las del 26 en Datos26. Por Simplificar tengo una Tabla que es la TablaPedidos, compuesta por dos Campos: Id y Ventas y otra tabla que he creado que es TablaCompCamp con tres campos; Id,Ventas25,Ventas26 Y Básicamente lo que hago es colocarme en un Directorio:
Funciona perfectamente, el único problema que lógicamente copia las ventas en la tabla COMPCAMP en tablas separadas lógiamente una del 025 y la otra en la tabla 026. He intentado crear una tabla fuera de la Base de datos para que no afectara el cambio de directorio y sólo afectara a Pedidos pero da error. Ya lo único que me quedaría sería copiar los datos en StringGrid los dos años, y de ahí copiarlos a la Tabla, pero quería ver si había otra solución más sencilla sin tantos pasos. Gracias de Antemano. |
Para probar claude le he realizado tu consulta y una buena solucion seria esta:
Teniendo en cuenta el volumen de datos, no hace falta guardar una comparacion en base de datos, ja que siempre tendrias que realizar una primera funcion para validar que los datos en la tabla son correctos en este instante, y de esta manera al trabajar en tiempo real siempre son datos de este momento
|
Estimado colega, mirando su problema le propongo la siguiente solución...
1) Crear procedimento para acceder a los datos desde las distintas bases de datos
2) Test para probar consultas
3) Consulta comparando ventas de ambos años de cada ID Puede crear una vista con estas consultas...O incluirlas todas en un TIBQuery
Espero le sirva...Saludos cordiales |
El principal problema es que hoy comparas 2025 y 2026, pero mañana lo querras hacer con 2027 y 2026. Para evitar tener que hacerlo constantemente usaria un patron Strategy. Puedes hacer algo como CompararAños(AAno1,Aano2:integer;ATabla:string):TJsonArray. La idea es crear un json con los dato de la tabla, luego creas una estrategia para recuperarlos RecuperarDatos(AAjson), puedes usar FireDac MemTable, y mover el Json a memoria manipular los datos y usarlos como quieras. Al usar patrones GoF puedes reutilizar el código, escalarlo, sin necesidad de tocar todas las capas o refactorizados complicados. Yo suelo usar strategy o facade , incluso ambos para estas cosas, luego con command hago un API interno en logica para volcarlos en la capa de vista, la UI. Para evitar lo que te pasa debes desacoplar tareas, no debes manipular datos desde la UI, puedes crear un DAO en la capa de datos que haga todo, asi evitas que el código “se rompa” si añades nuevas funciones. Si no recuerdo mal hay un cnal de youtube de un compañero con los patrones GoF. Te vas a evitar muchos problemas con los patrones.
|
Aquí tienes un ejemplo muy sencillo para comprender su uso:
- ¡Todo es rápido y no hay necesidad de guardar datos en otra tabla! Si utiliza Firebird, podría crear un "Procedimiento almacenado" parametrizado para poder cambiar los nombres de las tablas y los campos y adaptarlos a diferentes años...
Ejemplo de uso en Delphi, utilizando TFDQuery o cualquier consulta similar.
|
Esto es un patrón GoF Factory para pagos de un sistema POS, estoy si IDE en el bloc de notas del ipad.Disculpar si hay errores. Aquí puedo añadir nuevas clases o quitarlas. Por ejemplo si tienes TComparar2025_26 puedes añadir TComparar2026_27, de esta forma la UI, la vista o el form no accede a datos directamente, separas responsabilidades y es fácil de mantener y escalar. Yo suelo usar patrones para separar responsabilidades. Puedes crear diccionario<TTipoconsulta, funcion: boolean> y luego con un ejecutor ejecutar consultas : Ejecutar(TTipoconsulta.compararanos) por ejemplo. El objeto es que al separar responsabilidades puedas escalar y mantener el desarrollo sin refsctorizados pesados. Te dejo un ejemplo de Factory.
|
| La franja horaria es GMT +2. Ahora son las 17:11:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi