Access - Salir de un bucle For cuando se cierre el formulario

 
Vista:

Salir de un bucle For cuando se cierre el formulario

Publicado por Luis Miguel (12 intervenciones) el 02/09/2020 17:30:01
Tengo un formulario que salta con DoCmd.GoToRecord que se repeti un numero determinado de veces a través de un ciclo FOR. el problema es que le doy a la x para salir del formulario antes de que acabe la ejecucion del bucle sale un error que supongo que es porque el bucle se realiza incluso cuando esta cerrado y no encuentra el registro para saltar
Alguien sabe como hago para reiniciar desde el principio el codigo cuando me salgo en medio de la ejecución del FOR o evitar el mensaje de error
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

Salir de un bucle For cuando se cierre el formulario

Publicado por Anonimo (3316 intervenciones) el 02/09/2020 18:08:21
Para salir 'legalmente' de un bucle se utiliza la opción EXIT.

Los formularios se cerraran o se podrán considerar como cerrados, cuando finalicen el código que se este ejecutando en ellos, lo de 'apearse en marcha' es la opción menos aconsejable.

¿No hay opción a calcular cuantas iteraciones pueden necesitarse y así modular la duración del bucle?.
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

Salir de un bucle For cuando se cierre el formulario

Publicado por Luis Miguel (12 intervenciones) el 02/09/2020 20:30:12
Es una pantalla de un formulario para visualizar datos hago el salto para poder ver los datos como si fuesen un salto de pagina y el codigo se repite indefinida mente cada cierto tiempo, con el bucle lo que hago es recorrer el formulario desde el primer registro hasta el ultimo, lo realizo en un formulario ya que también necesito registrar datos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Option Compare Database
 
Private Sub Retraso(ret As Single)
Dim nextTime As Single
nextTime = Timer + ret
Do While Timer < nextTime: DoEvents: Loop
End Sub
 
Private Sub Form_Open(Cancel As Integer)
End Sub
 
Me.TimerInterval = 10000
 
End Sub
 
 
Private Sub Form_Timer()
 
 
 intx = DCount("*", "Consulta40")
   NumActualizaciones = (intx / 25) + 1
 
   contador = 1
   For Ncontador = 1 To NumActualizaciones
 
 
      DoCmd.GoToRecord acDataForm, "f410_pedidospendientes", acGoTo, contador
 
      Retraso 10
 
      contador = contador + 25
 
Next Ncontador
 
DoCmd.RunCommand acCmdRefresh
 
DoCmd.GoToRecord acDataForm, "f410_pedidospendientes", acGoTo, 1
End Sub
Este es el codigo el formulario tambien se actualiza (todavía no lo he organizado ya que estoy haciendo pruebas rapidas)

Es parecido a la pantalla de vuelos de un aeropuerto
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Salir de un bucle For cuando se cierre el formulario

Publicado por Francisco (212 intervenciones) el 03/09/2020 17:49:36
Hola

Agrega la sentencia DoEvents dentro del FOR


Saludos
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

Salir de un bucle For cuando se cierre el formulario

Publicado por Luis Miguel (12 intervenciones) el 03/09/2020 20:07:55
Me podrías decir que haría el DoEvents o que ejecutaría ?

Muchas Gracias
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Salir de un bucle For cuando se cierre el formulario

Publicado por Francisco (212 intervenciones) el 04/09/2020 18:29:43
Hola

DoEvents pasa el control al sistema operativo. El control se devuelve después de que el sistema operativo haya terminado de procesar los eventos en su cola y se hayan enviado todas las claves en la cola SendKeys.

DoEvents es más útil para cosas simples como permitir que un usuario cancele un proceso después de que ha comenzado, por ejemplo, la búsqueda de un archivo. En el caso de procesos de larga duración, el rendimiento del procesador se logra mejor mediante el uso de un temporizador o delegando la tarea a un componente ActiveX EXE. En el último caso, la tarea puede continuar de forma completamente independiente de su aplicación, y el sistema operativo se encarga de la multitarea y el tiempo.

Cada vez que ceda temporalmente el procesador dentro de un procedimiento de evento, asegúrese de que el procedimiento no se ejecute nuevamente desde una parte diferente de su código antes de que regrese la primera llamada; esto podría causar resultados impredecibles. Además, no utilice DoEvents si otras aplicaciones podrían interactuar con su procedimiento de manera imprevista durante el tiempo que ha cedido el control.

Saludos
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

Salir de un bucle For cuando se cierre el formulario

Publicado por Luis Miguel (12 intervenciones) el 04/09/2020 18:34:42
Gracias ya lo resolví
fue de mucha ayuda
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