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-04-2004
ciscu ciscu is offline
Miembro
 
Registrado: jun 2003
Ubicación: Granollers
Posts: 114
Poder: 22
ciscu Va por buen camino
Smile El homónimo del FlushBuffers para Query

Hola a todos!!!

Una pregunta rápida: si para guardar los registros de un TTable paradox del bufer al disco duro utilizo:
Código:
Table1.FlushBuffers
¿cómo se puede hacer lo mismo con una Tquery?
He hecho las pruebas siguientes y nada de nada:

Query1.ApplyUpdates ó
Query1.CommitUpdates ó
Query1.FlushBuffers.

¿Me podéis ayudar por favor?

Gracias anticipadas!!!
Responder Con Cita
  #2  
Antiguo 28-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Pos que yo sepa es
Cita:
Empezado por ciscu
Query1.FlushBuffers
Responder Con Cita
  #3  
Antiguo 28-04-2004
ciscu ciscu is offline
Miembro
 
Registrado: jun 2003
Ubicación: Granollers
Posts: 114
Poder: 22
ciscu Va por buen camino
Thumbs up Y la ubicacion del Query1.Flushbuffers?

Hola Cadetill, gracias por atenderme!!!

Yo he probado de poner Query1.FlushBuffers despues del Query1.ExecSql, y no me guarda los registros.

Se tiene que poner en otra ubicacion? En un evento tal vez?

Gracias.
Responder Con Cita
  #4  
Antiguo 28-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Que significa que no te guarda los registros?
Responder Con Cita
  #5  
Antiguo 28-04-2004
ciscu ciscu is offline
Miembro
 
Registrado: jun 2003
Ubicación: Granollers
Posts: 114
Poder: 22
ciscu Va por buen camino
Thumbs up El problema con FlushBuffers

Me explico. Primero ejecuto mi programa desde Delphi, ejecuto la query (update tabla set campo where etc etc.) con query.execsql y query.flushbuffers, y luego para ver si me lo ha guardado en el disco duro voy a Delphi y pulso CTRL+F2 (para parar la compilacion) y salgo de Delphi. Cuando lo vuelvo a arrancar y ejecutar el programa los registros aplicados por la query no han cambiado (cosa curiosa, para el table si que lo ha hecho si hago Table.Flushbuffers)

Me podeis explicar que pasa?
Responder Con Cita
  #6  
Antiguo 28-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
En el caso de una sentencia update en un TQuery, no hay necesidad de llamar a FlushBuffers... pues en realidad no hay buffers (en el TQuery) que vaciar... te das cuenta??

Como estas trabajando con BDE/Paradox, probablemente haya que vaciar los buffers del BDE.. no lo se, pero no los del TQuery.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 28-04-2004
ciscu ciscu is offline
Miembro
 
Registrado: jun 2003
Ubicación: Granollers
Posts: 114
Poder: 22
ciscu Va por buen camino
Y alguna pista para vaciar los bufers del BDE? Codigo ejemplo, sería de agradecer

Gracias por responderme!!!
Responder Con Cita
  #8  
Antiguo 28-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Me ha costado encontrarlo... pero creo que esto funcionará:

Código Delphi [-]
uses BDE;  // añadir a la clausula uses!

...

Procedure TForm1.AplicarQuery;

Begin
  QueryAct.ExecSQL;
  DbiDatabaseFlush(qryAct.Database.Handle);
End;

No lo garantizo... vos probalo y luego nos contas como te ha ido.

Claro... tenes que estar seguro que el update (si tiene algun where) incluya por lo menos un registro.

Hasta luego.

Responder Con Cita
  #9  
Antiguo 29-04-2004
ciscu ciscu is offline
Miembro
 
Registrado: jun 2003
Ubicación: Granollers
Posts: 114
Poder: 22
ciscu Va por buen camino
Thumbs up

Hola buenos días!!!

Gracias por vuestra ayuda, pero no hay manera de que funcione. Cuando estoy en modo de ejecución de mi programa y pasa por la linea DbiDatabaseFlush(qryAct.Database.Handle); me da un mensaje de error parecido a "EAccessViolation ... Access violation at address...".

¿Sabéis a qué puede ser debido?

Cualquier ayuda será bien recibida, y más aún, que estamos a punto de conseguirlo!!!
Responder Con Cita
  #10  
Antiguo 29-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Como he dicho en mi anterior mensaje... no estaba garantizado el asunto. Seguramente la instrucción flushdatabase no puede llamarse en esta situación. De todas formas me he quedado pensando que no debiera ser necesario llamarla... quizas tu problema esté por otro lado, alguna transaccion si commit, o algo similar..

En fin, creo que es mejor no meterse mas a este nivel con el BDE, no sea que termine de estropearse...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 01:28:33.


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