Pregunta

Me estoy consultando una base de datos Firebird con una consulta complicada relativamente que toma un tiempo para ejecutar y el pensamiento de que sería útil que el usuario podría obtener algún tipo de retroalimentación sobre el progreso de la consulta. Tengo la intención de mostrar un mensaje adecuado 'por favor espere' en una barra de estado cuando se inicia la consulta y borrar la barra de estado cuando la consulta devuelve sus datos.

Estoy utilizando un TSQLDataSet, TDataSetProvider y TClientDataSet; cuyo caso se disparará en las que el componente que decir que la consulta ha terminado y que los datos están listos para ser visualizado?

TIA, Noam

¿Fue útil?

Solución 3

En retrospectiva, me siento que he publicado esta pregunta como la respuesta fue muy fácil y no tiene nada que ver con los acontecimientos. Aquí está mi solución sencilla.

statusbar1.simpletext:= 'Opening query';
qComplicated.open;
statusbar1.simpletext:= '';

Cuando se devuelve la consulta con sus datos, el control de programa se desplaza a la declaración después de la consulta abierta, que borra la barra de estado.

Me disculpo con aquellos que respondieron.

Otros consejos

Consulte los eventos BeforeExecute y AfterExecute del TClientDataset. Ellos parecen encajar lo que necesita.

Si necesita la interfaz de usuario de responder mientras está procesando la consulta que tu buscas en ProcessMessagess o ejecutar la consulta en un hilo separado y el uso de transporte OnTerminate a los datos recuperados al formulario.

Dado que esto está relacionado con la interfaz de usuario (mostrando un mensaje), probablemente utilizar el evento AfterOpen de TClientDataSet.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top