Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   firebird en varias campañas (https://www.clubdelphi.com/foros/showthread.php?t=94025)

GINMARMENOR 24-06-2019 14:50:14

firebird en varias campañas
 
Hola tengo Delphi 10 y trabajo con Firebird 2.5, tengo estructurado la base de datos en directorios así la campaña 2.018 en el directorio Datos18, la campaña 2.019 en el directorio Datos19, el problema es que si yo modifico la estructura añadiendo o quitando campos de la campaña 2.019, ya no podría trabajar con la campaña 2.018 por que me daría error al no existir los campos nuevos que he añadido o quitado en la 2.018.

No sé si existe alguna otra manera de estructurarlo, o eso tiene que ser así.

Gracias.

mRoman 24-06-2019 17:02:50

Entendemos que tienes un problema....pero la verdad como que es muy local tu problema...empezando que nos explicaras que es "CAMPAÑA" a que te refieres con esto?.

Ahora, porque se tendría que cambiar las estructuras de las bases?
que factores (de que depende), determinan esos cambios en la estructura?
No sería mas fácil 1 sola base y que los registros pertenecientes a 2018 o 2019, lo identificaras por medio de un campo?

Mas información para poderte ayudar entre todos.

Saludos.

GINMARMENOR 24-06-2019 21:16:51

Una Campaña es como una año natural, la única diferencia es que en vez de ir de Enero a Diciembre (Año Natural) va de de un mes del año en curso al mismo mes anterior del año siguiente, puede ser Agosto-17 a Julio-18 o Septiembre-18 a Agosto del año 19, pero para no liar y simplificar tomamos un año natural, así los datos están ubicados por directorios año 2018 Directorio (Datos18), año 2019 (Datos19), y así sucesivamente.

La idea de añadir un campo a la base de datos con el año está bien, pero al final se acumularían una ingente cantidad de datos que ralentizaría mucho la lectura de estos datos.

Como ejemplo tenemos en los programas de Contabilidad, los datos de cada año están separados por directorios cada año uno, y el programa te da a elegir a qué año quieres ir, abriendo uno u otro directorio y cuando vienen las actualizaciones con nuevos campos se puede abrir sin problemas los datos de cualquier año anterior.

Es por eso mi pregunta la de poder modificar la base de datos con nuevos campos, pero que no diera error al abrir otros años anteriores, no sé dónde podrá estar el secreto.

WHILENOTEOF 24-06-2019 21:59:56

Yo, al igual que pretendes hacer tú, tengo una base de datos diferente por campaña, y mantengo siempre la misma estructura de tablas y campos en todas las bases de datos del histórico, sino va a ser casi imposible que mantengas con el mismo ejecutable la compatibilidad, y no te salten errores por falta de campos o renombrado de los mismos.

Casimiro Notevi 24-06-2019 22:10:55

Claro, hay que actualizar todas las bases de datos.
No hay secreto alguno.

GINMARMENOR 24-06-2019 22:17:10

No entiendo muy bien WHILENOTEOF, quieres decir que mantienes la misma estructura de campos y tablas en todas las campañas, y si por circunstancia tienes que añadir un campo a una tabla en la última campaña para adaptarla a nuevas circunstancias no lo harías entonces, o crearías una tabla nueva supongo en la base de datos y la relacionarías.

WHILENOTEOF 24-06-2019 22:49:22

Cita:

Empezado por GINMARMENOR (Mensaje 532529)
No entiendo muy bien WHILENOTEOF, quieres decir que mantienes la misma estructura de campos y tablas en todas las campañas, y si por circunstancia tienes que añadir un campo a una tabla en la última campaña para adaptarla a nuevas circunstancias no lo harías entonces, o crearías una tabla nueva supongo en la base de datos y la relacionarías.

No, sí que lo haría, es decir añades el campo a la misma tabla en todas las base de datos. Cada vez que haces un cambio en los metadatos, lo actualizas en todas las bases de datos. Yo utilizo el database comparer que te genera un script con las diferencias entre dos bases de datos, lo ejecutas y ya las tienes iguales (en tablas, campos, triggers, procedures, etc).

GINMARMENOR 24-06-2019 23:24:28

Eso sería ideal, cómo podría hacerlo o dónde podría verlo, Metadatos?

WHILENOTEOF 24-06-2019 23:38:26

Cita:

Empezado por GINMARMENOR (Mensaje 532532)
Eso sería ideal, cómo podría hacerlo o dónde podría verlo, Metadatos?

Bueno metadatos hace referencia a la estructura de la base de datos (tablas, campos, trigers, etc). Busca Database Comparer VCL en Google y darás con una página que tienen unos componentes (Clever ) para hacer el database comparer y también un ejecutable (para uso no comercial …) que te hace los mismo (sin necesidad de implementarlo con los componentes). Registras una base de datos master y una que quieres comparar con ésta, al ejecutar la comparación se genera un script con las diferencias en la estructura (metadatos), si lo ejecutas haces que las dos bases de datos ya tengan la misma estructura.

Esto lo podrías tener también acumulando los scripts de actualización de la base de datos que hayas ejecutado en la última, y lo aplicas a todas.

GINMARMENOR 24-06-2019 23:43:28

Lo haré a ver si lo consigo

Muchas Gracias.


La franja horaria es GMT +2. Ahora son las 19:19:06.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi