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)
-   -   Query segundo plano (https://www.clubdelphi.com/foros/showthread.php?t=86659)

ramflores 12-09-2014 17:10:42

Query segundo plano
 
hola Foro.

De que manera puedo realizar, un query con un time, por ejemplo:

Ejecutar un Query de ADO, y mientras tarda de cargar la informacion presentar en un status bar los segundos transcurrido

Ejemplo mensaje:

Espere un momento, cargando información ..... 00:00:01
Espere un momento, cargando información ..... 00:00:02
Espere un momento, cargando información ..... 00:00:03
Espere un momento, cargando información ..... 00:00:04

hasta que termine

Consulta realizada en ..... 00:00:07

Gracias de antemano

Neftali [Germán.Estévez] 12-09-2014 17:50:08

Puedes revisar la propiedad ExecuteOptions del TADOQuery, aunque a mi nunca me ha servido para lo que he necesitado.

La otra opción es utilizar Threads para ejecutar la consulta; de esa forma no bloqueas la aplicación y puedes ejecutar otras tareas mientras la consulta se ejecuta (entre ellas, la de mostrar un timer si es lo que necesitas).

El "problema" de esta última es que añades complicación a la programación, ya que debes crear un thread para la consulta y añadirle parámetros de conexión para utilizar una nueva (no puedes usar la de la aplicación).

En esta entrada de mi blog titulada "utilizar ADO con Threads" puedes leer sobre el proceso de creación, ver cómo se ejecuta y utilizar el código del thread que hay. Si bajas los ejemplos, podrás probar y revisar el código.

roman 12-09-2014 19:28:24

Cita:

Empezado por Neftali (Mensaje 481312)
El "problema" de esta última es que añades complicación a la programación, ya que debes crear un thread para la consulta y añadirle parámetros de conexión para utilizar una nueva (no puedes usar la de la aplicación).

¿Por qué no puede usarse la misma conexión?

// Saludos

Casimiro Notevi 12-09-2014 19:43:27

Cita:

Empezado por ramflores (Mensaje 481306)
Consulta realizada en ..... 00:00:07

Hola, no sé qué hace ese query, ni tengo más información que lo que has comentado, pero mi táctica sería distinta: ¡¡¡Hacer más rápido el query!!! :)

Verifica por qué es lento, intenta afinarlo hasta dejarlo que tarde como mucho... un segundo, por ejemplo.

Neftali [Germán.Estévez] 13-09-2014 11:41:30

Cita:

Empezado por roman (Mensaje 481325)
¿Por qué no puede usarse la misma conexión?

Las librerías ADO no son "Thread-safe"; Están basados en tecnología COM.
Por esta razón se debe crear e inicializar la conexión dentro de cada thread, de otra forma no funcionará.


La franja horaria es GMT +2. Ahora son las 00:56:59.

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