Delphi - Barra de progreso durante una consulta

 
Vista:

Barra de progreso durante una consulta

Publicado por Moises Castro (9 intervenciones) el 02/01/2002 08:25:30
hola, estoy ejecutando una consulta con

ADODataSet1.Active := True;

pero esta consulta tarda mucho, porque se recuperan muchos registros, en fin, me gustaria mostrar una barra que indicara el progreso de la accion, pero como puedo obtener valores iniciales y finales para mis limites de la barra???

alguna idea? grtacias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Barra de progreso durante una consulta

Publicado por joselito (177 intervenciones) el 02/01/2002 13:42:44
Hola, Moises.
A ver. Lo unico que se me ocurre (y de hecho es lo más cómodo y factible) es poner como valor inicial el 0, siempre que existan valores, cosa que tendrás que controlar, y como valor final, el RecordCount que se refiere al número de registros que se te han devuelto, dentro del RecordSet. De esa forma, saldran las cuentas perfectamente, dado que supongo que trabajarás con SQL. Si no es así, ponte ahora mismo... (es una broma).
Un salu2.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Barra de progreso durante una consulta

Publicado por mamcx (533 intervenciones) el 03/01/2002 00:03:45
Verdaderamente, no hay manera de obtener estos datos sin ejecutar minimo consultas.

A diferencia de los lenguajes XBase (como FoxPro) que tienen el concepto de registro, SQL no usa esto. Quiere decir, que cuando tu haces SELECT * FROM Tabla el Sql no informa cuantos registros va a traer ni en cual va (esto es por razones de rendimiento: Imagina obtener 1.000.000 de registros a travez de una red...si has trabajado lenguajes XBase en red y varios usuarios sabes lo lento que se vuelve esto, mas que con Sql Server o Oracle).

Podrias ejecutar antes una consulta de conteo, como SELECT Count(*) FROM MiTabla para averiguar cuantos hay, y codificar los eventos "Fetch2 (Obtencion). Se que se puede con BDE y ADO, pero no lo he hecho antes y no te podria explicar los pasos especificos.

Sin embargo, esto no es muy optimo que digamos, asi que en estos casos seria mejor desplegar un mensaje de espera animado, con un texto similar a "Espere un momento por favor...", o mejor aun, limitar la consulta o optimizarla mas.

Para que la necesitas? Si es para editar registros, no tiene sentido cargar los cientos de registros si el usuario a duras penas modifica unos cuantos.... Puedes utilizar el concepto de "Proxie", esto es, haces una consulta con los datos de identificacion (lo que permitiria ubicar el registro a un usuario) como Codigo y Nombre,+ el Id de la tabla, y cuando el usuario seleccione el registro, hacer otra consulta por ese registro unicamente.

Si es para un reporte (lo que implica que normalmente si se pueden solicitar todos los datos) podrias habilitar la opcion de filtrar la informacion (entre fechas, rangos, tipos, etc..) para que el usuario especifique que t
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar