Hola compañeros, estoy en el proceso de terminar el programa de la empresa (la cual sigue a la venta) y se me plantea una duda, y os pregunto si podéis ayudarme a encarrilarla.
El tema es el siguiente, el programa hará cierres de año, (por el usuario) donde debería crear la estructura de la base de datos, sin datos y luego pasar los datos de años interiores, quedando la base de datos general con los datos básicos (clientes, productos, etc, inclusive lotes y demás) y la nueva con los datos de los años anteriores, más los básicos, pero ademas dar la opción, de los lotes con más de 3 años y que su estocaje sea 0 eliminarlos en la original también.
Se que podría hacer una copia de la base de datos y luego eliminar en la original los datos antiguos (esta es mi otra opción), pero seria interesante obtener desde una unit la base de datos, tablas, generadores, indices, etc, como mantenimiento e inclusive para la instalación del programa en otra empresa (instalación nueva).
Otra opción que he barajado es hacer una copia de la base de datos y borrar tabla por tabla todos los datos, con lo que tendría una bd limpia sin datos y por lo tanto de poco tamaño, se puede vaciar todas la tablas por sql?
Pues eso compañeros si podéis ayudarme e indicarme si es posible obtener la estructura de la base de datos, como hacerlo y luego usarlo desde una unit, o que método me aconsejáis si no.
Como siempre gracias por vuestra ayuda.
Hecho delphi 2010 y Firebird

Estructura de la base de datos
Comenzado por
Desart
, jul 21 2012 01:23
7 respuestas en este tema
#1
Escrito 21 julio 2012 - 01:23
#2
Escrito 21 julio 2012 - 02:24
Hola.
El sistema más sencillo es tener aparte una base de datos vacía (la llamamos por ejemplo VACIA.FDB), con la que nunca se trabaja, y cada nuevo año haces una simple copia de ese archivo a la base de datos del nuevo ejercicio (ejemplo : PRODUCCION_2012.FDB).
Otra solución bastante estándar es tener un archivo de script con las sentencias SQL para crear las tablas, triggers, procedimientos almacenados, ... de tu base de datos. De forma que cada nuevo ejercicio solo tienes que crear una nueva base de datos Firebird y ejecutar ese script para asignarle la estructura necesaria.
Saludos.
El sistema más sencillo es tener aparte una base de datos vacía (la llamamos por ejemplo VACIA.FDB), con la que nunca se trabaja, y cada nuevo año haces una simple copia de ese archivo a la base de datos del nuevo ejercicio (ejemplo : PRODUCCION_2012.FDB).
Otra solución bastante estándar es tener un archivo de script con las sentencias SQL para crear las tablas, triggers, procedimientos almacenados, ... de tu base de datos. De forma que cada nuevo ejercicio solo tienes que crear una nueva base de datos Firebird y ejecutar ese script para asignarle la estructura necesaria.
Saludos.
#3
Escrito 21 julio 2012 - 04:15
Gracias Marc, mi idea va en principio por el Script, pero no se como obtenerlo de la base datos ya creada, completamente y meterlo dentro de una unit.
#4
Escrito 21 julio 2012 - 06:37
Gracias Marc, mi idea va en principio por el Script, pero no se como obtenerlo de la base datos ya creada, completamente y meterlo dentro de una unit.
¿ Utilizas IB-Expert ?, si no lo haces, vale la pena que lo pruebes, es el mejor gestor de Firebird que nunca he probado.
http://www.ibexpert.com/
Puedes descargar la versión Personal Edition, que es totalmente libre y gratuita, aunque lleva unas pocas limitaciones (no se pueden depurar procedimientos almacenados y algún detalle más sin mucha importancia).
Una vez conectado a tu Base de Datos en IB-Expert, solo tienes que ir al Menú Tools y coger la opción Extract Metadata.
Allí podrás construir muy fácilmente un script para construir una copia de tu base de datos, seleccionando los elementos a crear (tablas, triggers, sp, ...) e incluso si quieres que algunas tablas de configuración (tipos de iva, formas de pago, ...) se inicialicen con los datos que hay en la base de datos actual.
NOTA: Por cierto, IB-Expert también tiene una utilidad de línea de comandos (el IBEScript.exe) para ejecutar muy fácilmente desde tu aplicación un script (simplemente tienes que distribuir ese ejecutable con tu aplicación y lanzarlo con un ShellExecute).
Saludos.
#5
Escrito 22 julio 2012 - 12:51
Marc espero que seas un tipo bien obeso, por que vales tu peso en oro
, bromas aparte, te comento que si uso ibexper la versión personal, pero la verdad no conozco más que la parte de creación, no había pasado por lo de extrae, metadatos, ni sabia lo del IBEScript.exe, tendré que buscar un buen manual, para ver su correcto uso de ambos programas, me has ayudado muchísimo. Por cierto para montar las consultas sql yo uso otro programa totalmente gratuito, que es el CREADORSQL de la empresa TOC "Parquesoft", es difícil de encontrar, pero lo uso hace muchos años y la verdad es muy sencillo de uso, por si os interesa lo subo a este post.
Nuevamente muchas gracias Marc.



Nuevamente muchas gracias Marc.
Archivos adjuntos
#6
Escrito 22 julio 2012 - 03:46
Gracias por el aporte, amigo.

#7
Escrito 23 julio 2012 - 04:45
Una opción más interesante (creo) es "clonar" la estructura de la base de datos con gbak, así tendrías en dos sentencias SQL una copia exacta de tu base de datos actual (incluidos campos recien añadidos y esas cosas) totalmente vacia:
[ini]
set isc_user=SYSDBA
set isc_password=masterkey
gbak -m actual.gdb nueva.gbk
gbak -c nueva.gbk nueva.gdb
[/ini]
PD: Yo uso FlameRobin, cuando conectas a una BD, con botón derecho, tienes "Advanced, Extract metada DDL" que te muestra en un block de notas las SQL para crear la base de datos de cero... la verdad es que solo lo he usado (en lugar del truco de arriba) cuando he necesitado procesar ese texto y cambiar cosas. Es muy util para redefinir nombres de tablas, columnas y esas cosas con buscar/reemplazar.
[ini]
set isc_user=SYSDBA
set isc_password=masterkey
gbak -m actual.gdb nueva.gbk
gbak -c nueva.gbk nueva.gdb
[/ini]
PD: Yo uso FlameRobin, cuando conectas a una BD, con botón derecho, tienes "Advanced, Extract metada DDL" que te muestra en un block de notas las SQL para crear la base de datos de cero... la verdad es que solo lo he usado (en lugar del truco de arriba) cuando he necesitado procesar ese texto y cambiar cosas. Es muy util para redefinir nombres de tablas, columnas y esas cosas con buscar/reemplazar.
#8
Escrito 23 julio 2012 - 08:50
Muchas gracias Sergio, ahora estoy valorando y estudiando las diversas opciones, así que doy el tema por resuelto, si me acuerdo cuando me decida, pondré por cual sistema opte