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 07-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Unhappy registros grabados pero no los muestras

Hola compañeros, lo que me ha ocurrido es muy extraño, primero informaros de que trabajo con delphi 2010, la base de datos es Firebird 2.0-2.1 (no recuerdo exactamente) y uso ibexpert para trabajar con la base de datos y los componentes de delphi 10 pestaña Interbase.

Lo que me ha ocurrido hoy es lo siguiente, modifique con ibexpert la tabla Lotes añadiendo unicamente un campo NOTAS tipo BLOB Size 80 subtype Text hago el save y el commit, paso a delphi, desactivo la base de datos agrego el campo al ibtable, me aseguro de activar los datos. Hasta aquí todo bien, agrego los componentes y no toco el código. Ejecuto, meto 4 nuevos lotes y parece todo ir bien, cierro hago cambios en otro modulo del programa, compilo y ejecuto , compruebo los nuevos cambios y todo bien, pero cuando vuelvo al modulo de datos, esta ene el mismo que antes de meter los 4 lotes nuevos, no me los muestra, pero al intentar crearlos de nuevo, el try Except me confirma que el registro con ese lote ya existe, voy a iberexpert y ahí están los cuatro registros,
Teneis idea de por que ocurre estos pues he perdido tres horas intentando arreglarlo y no hay manera.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #2  
Antiguo 07-05-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
¿ Transacciones ?.

Cuando abres una transacción, es como si hicieras una foto de la Base de Datos, y mientras esté abierta la transacción solo verás eso. Por más que se introduzcan datos desde otras transacciones, nunca los verás dentro de una transacción que haya sido abierta anteriormente.

Así pues, en el módulo donde no ves los nuevos registros, asegúrate de que inicias la transacción en el momento de consultar los datos, puesto que si estás usando una transacción abierta anteriormente, nunca verás la nueva información.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 07-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Probare, Guillotmarc, aunque he de reconocer que me pierdo en delphi, por eso aunque peque de ignorante podrías explicarme que es la Transaccion, de esto no es lo que se encarga el ibtrans...
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 07-05-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.

Toda consulta o acción en Firebird debe realizarse dentro de una transacción.

Sí, de eso se encargan componentes como el IBTransaction. Tienes que llamar al StartTransaction cuando quieras que empiece la transacción, y a Commit cuando la quieras finalizar.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 07-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Gracias de nuevo Guillotmarc, no conocia el StartTransaction, pero lo que si que hago es un CommitReanig (o parecido).
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 07-05-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
Para este caso utiliza el Commit en lugar del CommitRetaining (que deja la transacción abierta), y abre manualmente las transacciones cuando quieras ver los datos.

Ahora mismo estás dejando que los componentes abran las transacciones por si solos, con lo que no tienes control de cuando se hace. Y con el CommitRetaining las transacciones quedan abiertas.

Si quieres ver los nuevos datos, la consulta se tiene que hacer en una transacción abierta "después" de que se hayan entrado los datos en el otro ordenador/módulo y finalizado su transacción correspondiente.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #7  
Antiguo 08-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
HE probado lo que me dices y Quitando el auto estar del Ibtrans. cuando voy a grabar previamente abro la tansancion y grabo con el Commit en vez de con el CommitRetaining pero me da un error de transancion ya abierta y si desactivo el actibe del ibtrans. se me desactivan todas las bases de datos.

ÇQue es lo que hago mal. Como Siempres gracias por tus respuestas.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #8  
Antiguo 09-05-2010
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Os comento logre solucionar mi problema, sigo con el tema de transicion activa y lo que hice para evitarlo fue comprobar si el TIBtransiction estaba activo o no,
pero la solución, era que los registros que ya sabia que estaban en la tabla, pero el problema era que no estaban al final de la misma, y por eso no se veían en orden, no puedo usar un generador ya que esta contador cada vez que empieza el año cambia y empieza desde el numero del año +1 Su formato de este año sería (100001), lo que hice fue cambiar el Tibtable por TIbDataset y especificar el selectSql
Código Delphi [-]
Select * From Lotes Order By LOTE
y asunto arreglado.


De todas maneras muchas gracias Guillotmarc, gracias a tu explicación, me queda un poco más claro el uso del componente, auque tengo dudas del AllowAutoStart y del Idlertimer (supongo que es un timer en mili segundos, para aplicar el Defaultaction) y si es así se puede poner a 0 y que no ejecute ninguna acción.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
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
Ver registros recien grabados en FireBird y Delphi sercornejov Firebird e Interbase 2 15-12-2009 13:22:36
Conectar una db con otra pero estando en un pc diferente pero en red solram MySQL 0 04-07-2007 22:41:32
Verificación de los datos grabados en CD o DVD rretamar API de Windows 24 16-01-2007 06:32:47
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37
La insercion de registros funciona pero..... ilichhernandez Conexión con bases de datos 1 22-10-2005 11:24:33


La franja horaria es GMT +2. Ahora son las 15:06: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