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)
-   -   como cierro una base de datos (https://www.clubdelphi.com/foros/showthread.php?t=41959)

ddd_ddd 29-03-2007 21:44:46

como actualizar un quickreport?
 
tengo una tabla que se llama "temporal", esta tabla solo me sirve para guardar datos que son resultados de una query1 y una query2. pero cuando trato de imprimir con un quickreport los datos que guardé en la tabla temporal, me imprime resultados anteriores.

este es mi codigo en un boton que te llama imprimir:
Código Delphi [-]
QUERY2.FindFirst;
QUERY1.FindFirst;
FOR I:=1 TO 4 DO
  BEGIN
    query3.ParamByName('Nombre').AsString:=dbedit23.Text;
    query3.ParamByName('Numero').AsString:=dbedit22.Text;
    query3.ParamByName('Renglon').Asfloat:=I;
    try
      query3.ExecSQL;
     except
       showmessage('error en la query3');
    end;
    query2.Next;
    query3.Next;
  END;
  QUERY6.ACTIVE:=FALSE;
todo funciona bien, si abro la tabla en ese momento tengo los 4 resultados que yo queria como los queria.
el problema es cuando llega al quickrep1.preview.
es un quickreport en otro formulario que llamo desde éste con:
Código Delphi [-]
form26.QuickRep1.refresh;
form26.QuickRep1.preview;
el el formulario 26 tengo una query1 que lo unico que hace es:
Código SQL [-]
select * from temporal
y este es el problema, la primera vez que lo ejecuto el programa, al presionar el boton de imprimir, no me muestra ni imprime ningun dato, pero los datos si se guardan correctamente en la tabla temporal, vamos a suponer que los datos de la primera ejecucion fueron arturo, berenice, martin y diego.
cierro el programa y lo vuelvo a ejecutar, y cuando presiono el boton imprimir, ahora deberia mostrarme los resultados nuevos que son: azul, rojo, amarillo y verde. pero en lugar de estos resultados me imprime los que debio haber impreso en la ejecucion anterior, imprime: arturo, berenice, martin y diego.
osea siempre me imprime los resultados que generé la ultima vez antes de cerrar el programa, y solo esos.
que estoy haciendo mal?

marcoszorrilla 29-03-2007 22:12:41

Es de suponer que la consulta
Código SQL [-]
Select From Temporal

la ejecutas antes de abrir QuickReport sino es normal que no te funcione.

Sino es así puede ocurrir que las consultas que ejecutas previamente y que pueblan esa tabla temporal no hayan descargado su memoria intermedia.

Prueba antes de Select from Temporal, a forzar a las consultas a vaciar su memoría, dependerá la instrucción a ejecutar del tipo de tablas utilizado, desde FlushBuffers hasta cerrar y abrir la tabla de nuevo.

Un Saludo.

ddd_ddd 29-03-2007 22:28:54

estoy usando delphi 7 y las tablas las hice en paradox, como vacio la memoria intermedia? porque la tabla si está actualizada antes de que mandar imprimir la tabla temporal. puse un dbgrid para verificar que estubiera actualizada y si lo está.
yo creo que si cierro la base de datos y la vuelvo a abrir antes de imprimir, se soluciona el problema, pero alguien podria decirme como se hace eso??? lo estoy intentando pero ps no se como ajjaja
gracias

ddd_ddd 29-03-2007 22:53:43

como cierro una base de datos
 
es una pregunta sencilla, tengo que imprimir el contenido de una tabla, pero me imprime la tabla con los datos que tenia la ultima vez que ejecuté el programa, entonces quiero cerrar la base de datos completa, y volverla a abrir antes de imprimir para solucionar mi problema. pero como lo hago, estoy usando delphi 7 y las tablas en paradox
gracias

marcoszorrilla 29-03-2007 23:39:38

Código Delphi [-]
MiQuery1.FlushBuffers;

{Para la tabla:}
MiTabla.Active:=False;
MiTabla.Active:=True;

y en cualquiera de los dos casos despues abres QuickReport.

Un Saludo.

ddd_ddd 29-03-2007 23:57:06

intenté las dos formas, y me sigue pasando lo mismo, yo creo que la unica forma es cerrando y abriendo toda la base de datos, no solo una tabla, alguien sabe como hacerlo?
por favor :confused:

marcoszorrilla 29-03-2007 23:58:43

En Paradox la base de datos y la tabla es lo mismo. Y la tabla se cierra como te he dicho anteriormente y También.

Código Delphi [-]
MiTabla.Close;
MiTable.Open;

Un Saludo.

droguerman 30-03-2007 02:13:22

Cita:

Empezado por ddd_ddd
intenté las dos formas, y me sigue pasando lo mismo, yo creo que la unica forma es cerrando y abriendo toda la base de datos, no solo una tabla, alguien sabe como hacerlo?
por favor :confused:

antes de hacer preview o print usa el método prepare;
Código Delphi [-]
quickreport.prepare;
quickreport.preview;

Lepe 30-03-2007 14:40:37

El problema de no "ver esos registros nuevos" viene por lo comentado por Marcos Zorrilla, En el afterPost de todas tus tablas tienes que poner Dataset.Flushbuffers. (Dataset es el parámetro del evento Afterpost, así, todas las tablas puedes ligarlas al mismo evento).

Saludos


La franja horaria es GMT +2. Ahora son las 12:51:11.

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