Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-01-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 29-01-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 29-01-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.339
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
Responder Con Cita
  #4  
Antiguo 01-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 01-02-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 01-02-2010
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 02:45:46.


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
Copyright 1996-2007 Club Delphi