2008-10-17 13 views
5

Estoy creando una aplicación de MS Access en la que todos los formularios son modales. Sin embargo, después de cambiar los datos en un formulario, quiero actualizar el formulario principal de este formulario con datos más recientes. Hay alguna forma de hacerlo. Para más detalles:Cómo actualizar un formulario de acceso

Considere que hay dos formas, la Forma A y la Forma B. Ambas son formas modales. Desde el Formulario A, inicio el Formulario B, y ahora el Formulario B tiene la atención del usuario. Pero al finalizar el formulario B, quiero actualizar el Formulario A. ¿Hay alguna manera de hacerlo?

Respuesta

6

No, es como quiero correr Form_Load de la Forma A, si es posible

- Varun Mahajan

La manera habitual de hacer esto es poner la correspondiente código en un procedimiento que puede ser llamado por ambas formas. Lo mejor es poner el código en un módulo estándar, pero que podría tener en el Formulario A:

Formulario B:

Sub RunFormALoad() 
    Forms!FormA.ToDoOnLoad 
End Sub 

Forma A:

Public Sub Form_Load() 
    ToDoOnLoad 
End Sub  

Sub ToDoOnLoad() 
    txtText = "Hi" 
End Sub 
+0

No pensé en esto antes. Muchas gracias –

6

Se puede pintar y/o nueva consulta:

En el evento de cierre de la forma B:

Forms!FormA.Requery 

Es esto lo que quiere decir?

+0

No, es como si quisiera ejecutar Form_Load de la Forma A, si es posible –

1

"Nueva consulta" es precisamente lo usted lo que quiere ejecutar, pero podría hacerlo en el evento "Enfoque Obtenido" de la Forma A. Si tiene código en su Form_Load, quizás pueda moverlo a Form_Got_Focus.

+1

Ver el comentario de Varun Mahajan. Requery no ejecuta los eventos de carga. – Fionnuala

+0

Por eso sugerí mover el código allí a Form_Got_Focus (como lo hiciste en tu segunda respuesta). Si quiere actualizar los datos vinculados al formulario, consultar es el camino a seguir. – BIBD

+0

Si desea volver a realizar el evento Load, mueva el código a otro sub (como demostró Remou) y luego lo llamó en la carga y luego en su ruta de actualización (ya sea al cerrar B o al volver a ingresar A con un Se enfocó). Got Focus también funcionará si A abre otras ventanas también. – BIBD

0

Recomiendo que use REQUERY el cuadro combinado específico cuyos datos ha cambiado Y que lo hace después de la instrucción Cmd.Close. De esa manera, si estaba ingresando datos, esos datos también se vuelven a consultar.

DoCmd.Close 
Forms![Form_Name]![Combo_Box_Name].Requery 

también puede que quiera apuntar al valor cambiado recientemente

Dim id As Integer 
id = Me.[Index_Field] 
DoCmd.Close 
Forms![Form_Name]![Combo_Box_Name].Requery 
Forms![Form_Name]![Combo_Box_Name] = id 

este ejemplo supone que ha abierto un formulario para introducir datos en una tabla secundaria.

Digamos que guarda School_Index y School_Name en una tabla de la Escuela y se refieren a ella en una tabla de Estudiantes (que contiene solo el campo School_Index). mientras se está editando un estudiante, es necesario asociarlo con una escuela que no está en la tabla de la escuela, etc, etc

-1

para refrescar el formulario que necesita para escribir - Me.Refresh en el evento de botón de haga clic en

Cuestiones relacionadas