Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   El homónimo del FlushBuffers para Query (https://www.clubdelphi.com/foros/showthread.php?t=9657)

ciscu 28-04-2004 19:09:41

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!!!

__cadetill 28-04-2004 19:50:45

Pos que yo sepa es
Cita:

Empezado por ciscu
Query1.FlushBuffers

:confused:

ciscu 28-04-2004 19:55:19

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.

__cadetill 28-04-2004 20:02:47

Que significa que no te guarda los registros?

ciscu 28-04-2004 20:08:54

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?

jachguate 28-04-2004 20:23:36

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.

;)

ciscu 28-04-2004 20:26:22

Y alguna pista para vaciar los bufers del BDE? Codigo ejemplo, sería de agradecer

Gracias por responderme!!!

jachguate 28-04-2004 21:19:04

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.

;)

ciscu 29-04-2004 10:02:43

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!!!

jachguate 29-04-2004 18:29:21

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... :p

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 11:28:55.

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