2009-06-16 13 views
17

Si obtengo datos de la base de datos desde la hora de inicio hasta la hora de finalización, durante ese tiempo (de procesamiento/consulta), quiero mostrar una barra de progreso (algo así como, "Procesamiento, por favor espera"). ¿Cómo puedo hacer esto?Mostrar barra de progreso en el momento del procesamiento

+1

No estoy seguro de entender la pregunta: ¿se trata de un escenario en tiempo real en el que se está ejecutando una serie de consultas en la base de datos que se detendrá cuando el extremo" fecha "se alcanza? ¿O es una consulta única que tarda mucho tiempo en ejecutarse y desea proporcionar una barra de progreso para la consulta? Quizás también podría incluir las declaraciones de acceso a datos y las definiciones de tabla. – cheduardo

Respuesta

2

Pasos de que consigue los datos de db:

  1. aplicación enviar consulta db
  2. db analiza la consulta y prepara resultan
  3. db enviar resultado de nuevo a la aplicación

En la mayoría de los casos, no puede decir cuánto tiempo tomará, así que en lugar de barra de progreso, piense en la combinación de:

  • horas puntero del ratón vidrio
  • "por favor espere" en la barra de estado
  • pequeña animación (molino de viento, girando las ruedas de engranaje, etc.)
+0

Vine aquí para publicar esencialmente lo mismo. Si está esperando la consulta, no puede decir cuánto tiempo va a tomar. La mejor opción es una pequeña barra de animación en un formulario que muestra el sobretiro de su pantalla actual. – Daemonic

0

Si bien es cierto que no puede decir cuánto tiempo la consulta se va a tomar , es posible darle a su usuario y una idea del tiempo transcurrido/restante. Utiliza el control de barra de progreso desde tu VB IDE. A continuación, establece su propiedad 'max' en el registro de su consulta. A medida que itera por los registros, aumente la propiedad 'valor' de las barras de progreso. Aquí hay un ejemplo; ('R' es un conjunto de registros ADODB)

 ProgressBar1.Max = Rs.RecordCount - 1 

     For P = 0 To .RecordCount - 1 
      ProgressBar1.Value = P 

      'some process here 
      Rs.MoveNext 

     Next P 
Cuestiones relacionadas