Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2011, 10:22
karachs
 
Fecha de Ingreso: junio-2008
Mensajes: 20
Antigüedad: 15 años, 10 meses
Puntos: 0
Formulario "Procesando" hasta que se abre un informe

Trabajo con una BD Access 2003 y pretendo usar el ejemplo-formulario "Procesando" de Emilio Sancha, pero no consigo el resultado final que deseo.
Con un botón de un formulario paso parámetros y abro un informe. Este informe es complejo y tiene muchos controles, y la única manera de poder confeccionarlo me ha sido en el evento "al dar formato", pues cada control es independiente de los demás, es decir que no puedo (o no he sabido) usar un origen común para todos los datos que muestra. El caso es que el informe tarda unos 33 segundos en abrirse, y pretendo que durante ese tiempo se mostrara el formulario "Procesando" citado.
El caso es que esto sí lo consigo, pero no me funciona la barra de progreso que el form "Procesando" contiene, y que está vinculada al Timer (en realidad no es una Progressbar, sino sucesivos rectángulos que cambian de color, tal como lo hizo D.Emilio Sancha). Es decir, que me sale el formulario con la palabra "Procesando" hasta que se abre el informe, pero no la animación de la "barra". ¿Cómo podría conseguir ésto?
En el formulario que llamo al informe tengo:
'''''
Dim dblTtime As Double
' abro el formulario frmProcesando
DoCmd.OpenForm "frmProcesando"
' muestro o no la animación
If Not Me.chkAnimacion Then
Form_frmProcesando.TimerInterval = 0
Else
Form_frmProcesando.TimerInterval = 100
End If
dblTtime = Timer
Do
DoEvents
DoCmd.OpenReport "IndiceactividadPaliativos2", acViewPreview
Loop While Timer < dblTtime + 1
' cierro el formulario frmProcesando
DoCmd.Close acForm, "frmProcesando"
'''''

Y el formulario "Procesando" contiene:
Private Sub Form_Timer()

Static i As Long
Dim ctrl As Control

' en cada ejecución muestro u oculto unos rectangulos u otros
i = i + 1
If i > 35 Then i = -2

For Each ctrl In Me.Controls
If Mid(ctrl.Name, 7) >= i And Mid(ctrl.Name, 7) < i + 2 Then
ctrl.Visible = True
Else
If Not (ctrl.Name = "Marco" Or ctrl.Name = "Etiqueta44" Or ctrl.Name = "Etiqueta45" Or ctrl.Name = "Borde") Then ctrl.Visible = False
End If
Next ctrl
End Sub

Muchas gracias.