![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
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. |
|
#2
|
|||
|
|||
|
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
Última edición por aposi fecha: Hace 1 Semana a las 17:26:23. |
|
#3
|
|||
|
|||
|
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 |
|
#4
|
|||
|
|||
|
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.
|
|
#5
|
|||
|
|||
|
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.
Última edición por emailx45 fecha: Hace 3 Días a las 01:21:13. |
|
#6
|
|||
|
|||
|
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.
|
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Grabacion de Registros en una tabla. | GINMARMENOR | Conexión con bases de datos | 8 | 17-05-2026 20:54:05 |
| consulta dos campañas | GINMARMENOR | SQL | 4 | 03-09-2024 21:10:39 |
| firebird en varias campañas | GINMARMENOR | Firebird e Interbase | 9 | 24-06-2019 23:43:28 |
| Actualizar campos de una Tabla cuando se actualize otra tabla | RedVenom | Varios | 28 | 11-05-2011 18:19:38 |
| Aplicacion campañas de cereales | analia1979 | Varios | 5 | 19-07-2007 09:46:29 |
|