La Web del Programador: Comunidad de Programadores
 
    Pregunta:  16316 - BARRA DE PROCESO PARA UNA CONSULTA DE ACTUALIZACION
Autor:  Jose M Blanco Villanueva
En un proceso de inserccion de datos, que realizo desde unas tablas vinculadas a Oracle a otras fisicas de access, me gustaria poder poner una barra de proceso, como la que aparece en la parte inferior de la ventana de access al realizar esta consulta, para que el usuario tenga cierta idea del tiempo que falta.

Me gustaria poder poner, si se puede, un contador progresio de los registros que esta procesando, es decir, "Grabando <regsitro> de <tantos>".

Un millon de gracias por vuestro tiempo.

  Respuesta:  PAU RUCABADO PALOMAR
Que yo sepa en las consultas ya sea de actualización o cualquier otra no se puede utilizar barras de progreso la única opción es simularlo mediante codigo.

Primero creas la consulta. Te vas a la vista SQL y copias la consulta.
Creas un formulario emergente y modal, con una barra de progreso " control ActiveX que se llama ProgressBar" y una etiqueta.

En el evento al abrir ejecutas la consulta.
En el codigo necesitarás definir la consulta SQL

Dim dbs as database
dim rst as recordset
dim strSQL as string

set dbs =currentdb
set strSQL = "select [nombre tabla].[nombre campo]... form [nombre tabla] where...; "

dim rst=dbs.openrecordset(strSQL)

En este momento recorres toda la tabla y cuentas el número de registros, vuelves al principio y vas ejecutando cada uno, cuando acabes cada uno le cambias el valor al objeto ActiveX
Me.ActiveXCtl??.Object.Value = (nuevo valor)
y le cambias el nombre .Caption a la etiqueta

Este proceso se ejecutará más lento que la consulta de actualización pero te permite utilizar la barra de progreso.

Si tienes alguna duda puedes contactar conmigo en la dirección de correo.

Un saludo.