Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2003
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
ProgressBar y Select

Hola a todos, lo que quiero hacer es que se muestre el progreso de una consulta select en un progressbar.

Es decir. Antes de lanzar la consulta que el progress bar esta vacio pero que se complete a medida que se complete la consulta. No se si hay algo con lo que pueda averiguar el tamaño de la consulta en forma anticipada o bien algo que pueda hacer algo parecido...

He visto hecho esto en otros sistemas ya implementados pero no se como lo han hecho, ¿alguna sugerencia?

Gracias, desde ya....
Responder Con Cita
  #2  
Antiguo 26-11-2003
Avatar de haron
haron haron is offline
Miembro
 
Registrado: may 2003
Ubicación: Las Palmas de Gran Canaria
Posts: 310
Poder: 21
haron Va por buen camino
puedes separar la consulta en partes, por ejemplo:

insert into tabla(...)
values(...)

se transforma en:

insert into tabla(...)
values(...)
where campo between (aram1 and aram2)

y vas ejecutando cada parte de manera que juntas completan el todo. 'campo' puede ser un campo fecha, etc...

puedes hacer tambien un procedimiento almacenado y lanzar una señal cada cierto tiempo desde el procedimiento a tu aplicacion. nunca lo he hecho, pero se que en la paleta de interbase (por poner un ejemplo) hay un componente que captura señales enviadas por la base de datos para que el programa actualice registros, etc...
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda”
(Confucio)
Responder Con Cita
  #3  
Antiguo 26-11-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

La verdad, no conozco una sola base de datos que tenga un mecanismo para preguntarle como va una consulta SQL... asi que sinceramente no creo que podas hacer algo como lo que queres...

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 26-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Extraído del Help de las RxLibs:
TDBProgress component

TDBProgress is a wrapper for a Borland Database Engine (BDE) generic progress callback and (in 32-bit version only) trace callback functions. Generic progress callback is issued by BDE to inform applications about the progress made during large batch operations, such as DbiBatchMove. The Generic Progress Report callback allows the client to obtain progress reports during an operation, and to cancel the operation, if desired. This callback is generated when working with Paradox driver and with some other BDE drivers. The query execution generates some text messages and BatchMove execution generates text and percent notifications. You can specify the MessageControl property and Gauge property to display BDE messages and percentage.

For some operations, a percentage completed is passed back to the callback function, for most others a string containing progress information is passed back; for simple database operations no progress information is returned at all. It has been our experience that percentages are mainly passed back in operations where the BDE must physically sort a local database file, such as in indexing DBase files. It is of course possible to interpret the messages passed back and calculate your own percentage completed.

32-bit trace callback is a system-level callback that can be used to retrieve trace information.

TraceFlags specifies the database operations to track with the OnTrace event at run time while Trace property is True.
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 26-11-2003
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cita:
delphi.com.ar comentó:
for simple database operations no progress information is returned at all
Desde mi punto de vista (y puedo estar equivocado) esto significa que un select no genera información de CallBack.

Claro que un select puede ser una operación muy compleja y tardada, pero desde el punto de vista del BDE es una operación simple, pues solamente una instrucción se envia a la base de datos, y se espera por su respuesta (un cursor).

Quizas genere alguna información de callback cuando comience a recibir registros, excatamente al hacer fetch de cada registro, que si es una operación explicita del BDE.

Pero, una consulta puede tardar 1 hora en procesarse, y devolver los registros que genere en solo unos segundos... asi que ese avance no será confiable. Además, no creo que el BDE tenga forma de calcular un porcentaje de avance ni en este momento, porque no conoce de antemano cuantos registros generará la consulta.

En fin... habia que probar el componente, si es que usas el BDE para conectarte y que a pesar de tener años con las rusas, no me era conocido.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 26-11-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Pues me han mareado... no me había fijado que hablaba de una consulta de selección.

¿Qué es lo que quieres hacer realmente?... ¿Dónde cargas la consulta? ¿En un DBGrid?... ¿Ordenas los datos?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 26-11-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Además de lo dicho por jachguate tengo entendido que con el BDE ni si quiera es posible cancelar una consulta.

Lo que menciona haron podría funcionar pero la consulta total será irremediablemente más larga y quizá no sea conveniente tan sólo para mostrar una barra de progreso.

A veces no queda más remedio que simplemente presentar un mensaje:

"Espere por favor..."

// Saludos
Responder Con Cita
  #8  
Antiguo 10-11-2005
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Progressbar con bde

hola tengo un programa en el que solo se realizan filtros en una tabla dbf por medio de un query, la tabla en cuestion tiene ya muchos registros por lo que cada vez que hacia una consulta tardaba mucho en mostrarme los resultados, como no tenia ni idea de delphi (y ahora tampoco es que sea un master) cogi una barra de progreso que empieza en 0 y termina en 100 y en los eventos del query before close, after close, before open y after open incrementaba en 25 el progreso de la barra con lo que consegui una simulacion de carga de la consulta, no se si estoy diciendo una burrada por la forma de hacerlo, pero era por darle una solucion sencilla al problema de la barra de progresos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:46:06.


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
Copyright 1996-2007 Club Delphi