PDA

Ver la Versión Completa : Index is out of date


david duarte
20-07-2006, 01:05:19
Hola!!!!
ya se que hay varios temas con este titulo, pero no encontre, la solucion, bueno, realmente ya mas o menos me doy una idea de porque sale este error.

Pero no encuentro la solucion al mio, mi problema es que al mostrar un reporte (varias veces y no necesariamente el mio) me sale este error.

Explico

al momento de generar el reporte, genero unas columnas (qrdbtext), el problema es que no siempre son las mismas, al final, (supuestamente) se liberan, pero cuando vuelvo a mostrar el siguiente reporte, me sale este error, entonces, probablemente sea por ese lado.

Este error me pasa cuando despues de varias veces mostrar "x" reportes.

y hay veces que se enciman los qrdbtext, es decir, creo que no se liberan, por lo tanto, cuando vuelvo a crear los del reporte actual, y estos son de menor tamaño que los anteriores, se alcanza a distinguir un cacho de texto del anterior.

Si no me explico, pongo codigo

aqui es donde creo los qrdbtext

texto := TQRDBText.Create(DetailBand1);
texto.Top := arriba;
texto.Left := izq;
texto.DataSet := Query1;
texto.Mask := ',.00';


tambien utilizo una funcion para calcular el tamaño del texto o del qrdbtext.

supuestamente cuando salgo del qreport se destruye o se libera la memoria que utilizé cuando asigne los qrdbtext,

entonces si cada que abro un reporte se crean los qrdbtext porque me marca ese error??

bueno y aprovechando de su generosidad, alguien sabe si puedo liberar la memoria que utilizo al momento de mostrar el reporte, esto es, que cuando el reporte se muestre completo, se libere la memoria que se ocupo.

esto podria ser con un try... finally.

Muchas gracias de nuevo
Saludos!!!

marcoszorrilla
20-07-2006, 07:20:23
El error que te da veo que no tiene que ver con el informe en sí, sino con algún índice de Paradox que no está actualizado.

Todas las tablas deben de tener una clave primaria para que los índices sean mantenidos adecuadamente, en la sección trucos del club tienes un artículo muy interesante de como configurar Paradox en red, si es que este tu caso.

Por otra parte para liberar la memoria yo utilizo esto:

En el OnClose del formulario que contiene el informe:
Application.ProcessMessages;
FreeAndNil(Mi_Informe);
Action:=CaFree;

//y luego cierro por código el formulario en el que se abrio el informe:

Mi_Formulario.Close;

Un Saludo.

david duarte
21-07-2006, 18:40:48
Perdoooooooooooooooooooonnnnnnnnnnnnnnn

ese no era el titulo del hilo, se me paso
El titulo es index is out of bounds

Sorry, perdon!

Gracias Marcozorrilla

Ya tengo configurado el paradox en red. y mis tablas tambien tienen un campo llave que sirve como indice.

Bueno, si alguien sabe porque sale ese error, se lo agradecería
Mientras voy a seguir probando a ver que sale.

Saludos!!!!

Edito.....

Si algun moderador quiere cambiarle el titulo al index is out of bound, se lo agradecere.

Lepe
21-07-2006, 19:02:02
Pero el informe, ¿lo liberas realmente de memoria?

Me explico, si lo tienes en Project -> Options-> AutoCreate el informe se crea pero se destruye ¡¡ al final de la aplicación !!

Como bien dices, el Owner (dueño) de esos qrdbtext será el DetailBand, pero si ésta no se libera nunca, pues no se liberarán los qrdbtext.

En conclusión, quitalo de Autocreate y para mostrar el informe usas:

FrmRporte := TFrmRporte.Create(nil);
FrmRporte.quickreport1.PreviewModal
FreeAndNil(FrmRporte);
// destruyes la ventana que tiene el Reporte
// la ventana destruirá el QuickReport
// el QuickReport destruirá las bandas
// la banda Detail destruirá los qrdbtext.
// yo me destruyo a mi mismo :D


Saludos

Edito: mensaje corregido, donde decía Available, debía decir AutoCreate.

david duarte
26-07-2006, 00:11:21
Hola Lepe

Gracias

Te comento que en este momento, tengo todas mis formas en autocreate no se si eso tenga que ver.

Supongo que en este caso, tendria que destruir el reporte y liberar memoria cuando lo cierren y volverlo a crear cuando lo manden llamar =)

Voy a checar y te digo que errores me marco.

Saludos

Muchas gracias otra vez

Lepe
26-07-2006, 09:02:39
Creo que me has entendido, aunque lo dije al revés.

Si está en Autocreate, se crea y solo se destruye al final de la aplicación.
Si está en Available, lo tienes que crear y destruir (es lo que debes hacer con ese informe).

Saludos

david duarte
18-08-2006, 17:51:42
Hola!!!

Al parecer me va todo bien, a ver que sucede, todavia no he probado el sistema con los usuarios, les digo como fue.
Saludos!!!
y gracias de nuevo por su atencion.