![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Ampliar una tabla
Buenos días de nuevo.
A ver si alguien me echa un cable, pues tengo una tabla funcionando en un programa y necesito ampliarla con un campo nuevo. Hasta aquí todo correcto alter, add etc y a correr. El problema se me presenta cuando mando el ejecutable nuevo actualizado con los campos en el modulo de datos, pero la tabla del receptor no tiene estos campos. Como puedo hacer para comprobar si los campos existen en la tabla? En caso afirmativo no ejecuta la consulta de creacion de campos y en caso negativo si la ejecuta. He pensado en hacer este proceso en el oncreate del form principal, no se si es lo correcto. Gracias Josep |
#2
|
||||
|
||||
Hola
Puedes utilizar las tablas de sistema, que te informarán de las tablas que tiene la base de datos. De esta forma sabrás si tienes todas las tablas y campos que debería. http://www.firebirdfaq.org/faq174/ Para obtener una lista de todas las tablas : select rdb$relation_name from rdb$relations where rdb$view_blr is null and (rdb$system_flag is null or rdb$system_flag = 0); Para obtener una lista de todas las tablas, junto a sus campos : select f.rdb$relation_name, f.rdb$field_name from rdb$relation_fields f join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name and r.rdb$view_blr is null and (r.rdb$system_flag is null or r.rdb$system_flag = 0) order by 1, f.rdb$field_position; Hacer esta comprobación en el OnCreate, antes de empezar a cargar más datos, te debería funcionar perfectamente. Salutacions. |
#3
|
||||
|
||||
Si esta situación se va a dar más veces, yo te recomiendo que guardes en la Base de Datos (en alguna tabla tuya de configuración) la versión de la Base de Datos (campo tuyo).
De forma que puedes automatizar eso para diferentes versiones. A medida que vas añadiendo campos a las tablas y creas una nueva versión de tu programa, también modificas la versión de la Base de Datos. Cuando mandas un ejecutable nuevo al cliente, compruebas la versión que tiene él, la que vas a instalar tú y lanzas los cambios correspondientes.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
||||
|
||||
Buenos dias a todos.
He creado una consulta con los parametros que me indica guillotmarc para buscar las tablas que tengo en mi base de datos y recibo un mensaje de "Database not assigned" caundo hago consulta.close, consulta.open. Alguna idea? Gracias Josep |
#5
|
||||
|
||||
Hola Josep.
El mensaje ya te debería haber dado una pista, parece ser que tu consulta no la has enlazado a la base de datos. Tienes que añadir un objecto Database o Connection (depende de los componentes que uses) apuntando a tu base de datos. Salut. |
#6
|
||||
|
||||
Tengo un componente IBQuery enlazado con la base de datos y un Data Source con este IBQuery.
No se si es el componente idoneo, si ejecuto la consulta en IBConsole me devuelve una tabla con los datos correctos. Josep |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ampliar memoria BDE | jacapu | Conexión con bases de datos | 2 | 14-01-2010 18:24:31 |
Ampliar aplicacíon C/S a Internet | nfrfabian | Internet | 4 | 27-05-2007 16:34:51 |
Impedir ampliar y minimizar el form de un programa | Leomedellin | Varios | 4 | 04-04-2005 19:02:54 |
Ampliar un campo en un dbgrid | hogol | Varios | 1 | 21-11-2003 16:02:40 |
ampliar visíon del ancho del TQRPreview | HombreSigma | Impresión | 2 | 18-09-2003 19:34:23 |
![]() |
|