Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-12-2010
campiki campiki is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
campiki Va por buen camino
Tabla en tiempo de ejecución

De antemano gracias por al menos leer mi problema.

Uso Delphi 7, con Firebird (creo versión 1.5).

En tiempo de ejecución creo una tabla llamada L20101228A, una vez creada no puedo acceder a ella.

En el Datamodule tengo.

1- Tibdatabase
2- IbTransaction
3- TibTable
4- Tdatasource.

Las únicas formas que he conseguido acceder a ella son:

1- Haciendo close del tibdatabase y volviendo abrir, con el problema que me vuelve a pedir el password y no es una opción lógica ni agil.
2- Saliendo del programa y volviendo a entrar (gran solución informática por excelencia.

Agradecería algo de luz.

He probado.

IBTransaction2.Commit;
IBTransaction2.StartTransaction;

Pero da error de metada la table L20101228A no exist.

Gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 28-12-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.281
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
Está claro que la lógica dice que no deberías tener que reabrir la conexión de la Base de Datos. Lo lógico sería:

BeginTransaction
CrearTabla
CommitTransaction

Desde ese momento deberías verla. Si no es así o si al cerrar la conexión sí existe puede ser que no tengas bien configurada la transacción.
__________________
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
  #3  
Antiguo 28-12-2010
campiki campiki is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
campiki Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
BeginTransaction
CrearTabla
CommitTransaction
Estos comandos u opciones no existen para Ibtransaction ni ibdatabase.

Ibtransaction lo tengo configurado de la siguiente manera.

Active True
AutostopAction saNone
Default Action TaCommit
Default database IBDatabase2
idletimer 0
Name IBTransaction2
Params (vacío)
Tag 0

La base de datos está abierta pues en ella tengo otras tablas que necesito para trabajar.

Si uso...
IBTransaction2.StartTransaction;
me dice que ya está abierta.

También he probado hacer lo siguiente...

if dm.IBTransaction2.InTransaction then
begin
dm.IBTransaction2.Commit;
dm.IBTransaction2.StartTransaction;
end;

Pero no sé donde falla.

Gracias de nuevo.
Responder Con Cita
  #4  
Antiguo 28-12-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.281
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
Cita:
Empezado por campiki Ver Mensaje
Estos comandos u opciones no existen para Ibtransaction ni ibdatabase
Lo se. Era una forma genérica de colocar las operaciones que debes hacer. Ese es el orden correcto. Debes asegurarte de que no se estén haciendo de forma implícita.
Si las haces manualmente debes hacerlas en ese orden.

Debes (1) Iniciar la transacción, (2) Crear la tabla y (3) finalmente aceptar la transacción y acabarla con CommitTransaction (o la orden que sea).

Pueden variar los nombres, pero el orden de las operaciones debe ser ese.
__________________
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
  #5  
Antiguo 28-12-2010
campiki campiki is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
campiki Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje

Debes (1) Iniciar la transacción, (2) Crear la tabla y (3) finalmente aceptar la transacción y acabarla con CommitTransaction (o la orden que sea).

Pueden variar los nombres, pero el orden de las operaciones debe ser ese.
Probaré y pegaré el código pero diría que la prueba ya está hecha y que no funciona.

Gracias.
Responder Con Cita
  #6  
Antiguo 28-12-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.281
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
Cita:
Empezado por campiki Ver Mensaje
Probaré y pegaré el código pero diría que la prueba ya está hecha y que no funciona.
Que no, que no es código que puedas pegar. Son "operaciones" que debes hacer. Si lo pegas directamente falla. Te lo pongo de otra manera:

(1) Iniciar_la_transacción
(2) Crear_la_tabla
(3) Realizar_Commit_de_la_transaccion

Debe ser que hoy no e explico bien...
__________________
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
  #7  
Antiguo 28-12-2010
campiki campiki is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
campiki Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Que no, que no es código que puedas pegar. Son "operaciones" que debes hacer. Si lo pegas directamente falla. Te lo pongo de otra manera:

(1) Iniciar_la_transacción
(2) Crear_la_tabla
(3) Realizar_Commit_de_la_transaccion

Debe ser que hoy no e explico bien...
Lo que digo es que pegaré el código que yo haga para ver que puede ser lo que falla..

Venga gracias.
Responder Con Cita
  #8  
Antiguo 29-12-2010
campiki campiki is offline
Miembro
 
Registrado: jun 2008
Posts: 25
Poder: 0
campiki Va por buen camino
Bueno... creo que lo solucioné... Antes de explicar cómo quiero agradecer la ayuda recibida.

La base de datos que uso tiene tablas fijas y otras que las tengo que crear en tiempo de ejecución.

1- En el datamodule, activo el database

ibdatabase2.Params.Values['Password'] := '*****';
ibdatabase2.Connected := true;
ibtransaction2.StartTransaction;

2- En el Form.

Después de crear la tabla, ejecuto un..
dm.IBTransaction2.Commit;
Esto hace que todas las tablas del Database queden sin acceso.

3- Restablezco el acceso en el momento necesario.

if dm.IBTransaction2.InTransaction then
begin
dm.IBTransaction2.Commit;
dm.IBTransaction2.StartTransaction;
end;

Si no lo condiciono al hacer el estart, me da error diciendo que la base de datos ya está activa.

A partir de aquí ya todo funciona correctamente.

Gracias por las ideas recibidas.

Campiki
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
Modificar tabla An tiempo de Ejecucion noshy SQL 1 12-09-2006 23:53:26
Tabla en tiempo de ejecucion noshy SQL 1 24-07-2006 00:39:31
crear una tabla en tiempo de ejecucion. chileno MySQL 1 06-07-2005 03:13:55
Crear Tabla en Tiempo de ejecucion alcides Varios 4 01-07-2005 20:23:52
Creación de tabla en tiempo de ejecución sledgehammer Conexión con bases de datos 3 16-09-2003 15:08:01


La franja horaria es GMT +2. Ahora son las 22:51:57.


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