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 26-08-2010
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
ClientDataSets y Firebird

Buenas a todos.

Tengo el siguiente problema. Antes les comento que uso D6 y FB1.5.

Es simple, tengo un programa que se utiliza para realizar pedidos de artículos. Utilizo una tabla cabecera y otra detalle. Para esto tengo dos clientdataset en donde hago los inserts y post a medida que se van agregando los registros del pedido.
Al finalizar el pedido, hago ApplyUpdates(-1) de cada uno de los CDS. Cierro los CDS con Close y luego los puedo consultar desde otro formulario.

El problema:
Utilizando FlameRobin (o cualquier otro dbmanager) para ver lo que pasa en las tablas, no veo los cambios despues del applyupdates en la base hasta que no cierro la aplicación.
Esto lo descubri ya que en un momento, por otro motivo, se colgo la aplicación y hubo que forzar el cierre y se perdieron pedidos.
Esta misma aplicacion la tenia funcionando con Paradox, con exactamente la misma lógica, luego migré a FB y me pasa esto.
Que estoy haciendo mal?

Muchas gracias desde ya.
Un abrazo.
Responder Con Cita
  #2  
Antiguo 26-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Haces commit después de hacer post?
Responder Con Cita
  #3  
Antiguo 26-08-2010
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Hay algo que se me está escapaando...

Los inserts los hago sobre el ClientDataSet, cada uno con su Post.
Una vez que se agregan todos los articulos al pedido, confirmo todo haciendo ApplyUpdates. ¿No es el ApplyUpdates el que se encarga de commitear los datos a la base "físicamente" ???
Responder Con Cita
  #4  
Antiguo 26-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se supone que sí.
¿Cómo estás tratando las transacciones?
Responder Con Cita
  #5  
Antiguo 26-08-2010
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Veo que tengo grave un error de conceptos.
Tengo entendido que los ClientDataSet se encargan del manejo de las transacciones.
Yo simplemente hago todas las operaciones sobre los CDS, pense que el applyUpdates se encargaba de mandar los cambios.
Responder Con Cita
  #6  
Antiguo 26-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Aquí te dejo el enlace a un pdf que habla sobre TClientDataSet, está extraido del blog delphiallimite, lo estoy "adecentando" en cuanto a presentación, pero puedes descargarlo tal y como está ahora mismo.
Por si te sirve de ayuda con tu problema. Mis conocimientos sobre los tclientdataset son muy básicos.
Responder Con Cita
  #7  
Antiguo 26-08-2010
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Ese es justamente uno de los documentos que leí antes de utilizar ClientDataSets, estaba en DelphiAlLimite, si mal no recuerdo.
Sigo la misma arquitectura y tengo este problema. Es muy raro. Algo debo estar haciendo mal o es un bug con los componentes.
Hay menciona que una versión de las IBX tienen problemas, como hago para fijarme que versión de IBX tengo?
Responder Con Cita
  #8  
Antiguo 26-08-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola

Cita:
Empezado por Walterdf Ver Mensaje
.............
Una vez que se agregan todos los articulos al pedido, confirmo todo haciendo ApplyUpdates. ¿No es el ApplyUpdates el que se encarga de commitear los datos a la base "físicamente" ???
Si, una ves que haces el ApplyUpdates guarda fisicamente en la BD.

Cita:
Empezado por Walterdf Ver Mensaje
Hay menciona que una versión de las IBX tienen problemas, como hago para fijarme que versión de IBX tengo?
No hice pruebas con las IBX, como dice en el documento puede que sea la versión de IBX que tengas el problema. Con delphi 7 viene la versión 7, para ver que versión tienes puedes ingresar a Component->Install Packages y buscas "Interbase Data Access" al ver su bpl puedes ver la versión que tienes.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #9  
Antiguo 26-08-2010
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Gracias a todos por las respuestas
Tengo la version 6 de las IBX.
No detecto el problema.
Voy a tener que dejar de lado los clientdataset y realizar las operaciones directo sobre la base, un problemon... Los CDS eran una buena herramienta ya que la aplicación la diseñé en 3 capas. De hecho, cambié de Paradox a Firebird con cambios mínimos, solo en la capa de datos. Ahora esto me complica la existencia.
Si alguien tiene alguna pista mas...

Mil gracias.
Responder Con Cita
  #10  
Antiguo 26-08-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No tenemos datos para llegar a ninguna conclusión.
Sólo por preguntar: ¿la base de datos tiene activa la opción -mode en readwrite?, es que con windows es necesario porque en caso contrario mantiene en caché todos los cambios prácticamente hasta que se cierra el programa (y la base de datos).
Responder Con Cita
  #11  
Antiguo 27-08-2010
Galahad Galahad is offline
Miembro
 
Registrado: abr 2007
Posts: 218
Poder: 18
Galahad Va por buen camino
Perdonad que interrumpa este hilo,,, estoy muy interesado en este tema , en particular en esta parte del mensaje..
Cita:
Los CDS eran una buena herramienta ya que la aplicación la diseñé en 3 capas. De hecho, cambié de Paradox a Firebird con cambios mínimos, solo en la capa de datos.
¿ Podrías explicarme como has efectuado ese cámbio simplemente utilizando los clientdataset ?
Responder Con Cita
  #12  
Antiguo 26-08-2010
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
pues yo tenía la misma idea, la misma duda y el mismo problema.

para solucionarlo, despues de applyupdates, tengo que hacer un commit en la base de datos utilizando un TIBTransaction

Código Delphi [-]
  if (cdsModelos.ChangeCount > 0) then begin
   If cdsModelos.ApplyUpdates(0) = 0 then begin
    FireBirdTransaction.Commit;
   end;
  end;
__________________


Última edición por ContraVeneno fecha: 26-08-2010 a las 16:56:47.
Responder Con Cita
  #13  
Antiguo 26-08-2010
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Casimiro Notevi:
En el componente IBDataBase no tiene esa propiedad.

ContraVeneno:
Es exactamente lo que acabo de probar. Esa es la única forma de que los cambios tengan efecto en la base despues del ApplyUpdates.
Creo que si hay que hacer eso si o si, el clientdataset carece de sentido.
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
Capturar errores - ClientDataSets rochi Providers 3 22-11-2008 00:05:17
ClientDataSets con parámetros, no funciona la consulta rochi Providers 3 10-10-2008 20:47:24
ClientDataSets- Personalizar errores rochi Conexión con bases de datos 0 03-05-2008 06:47:52
Clientdatasets anidados con ADO Johnny Q Conexión con bases de datos 4 03-11-2005 02:53:25
Update en Varios ClientDataSets. (Sincronización) Listirrinin Varios 0 19-10-2004 10:49:02


La franja horaria es GMT +2. Ahora son las 16:34:09.


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