2008-10-17 19 views
5

Je crée une application MS Access dans laquelle tous les formulaires sont modaux. Toutefois, après la modification des données dans un formulaire, je souhaite actualiser le formulaire parent de ce formulaire avec des données plus récentes. Y a-t-il un moyen de le faire. Pour en savoir plus:Comment actualiser un formulaire d'accès

Considérons qu'il existe deux formes, Forme A et Forme B. Les deux sont de forme modale. À partir du formulaire A, j'initie le formulaire B, et maintenant le formulaire B attire l'attention de l'utilisateur. Mais à la fin du formulaire B, je veux rafraîchir le formulaire A. Y a-t-il un moyen de le faire?

Répondre

6

Non, il est comme je veux courir Form_Load du formulaire A, s'il est possible

- Varun Mahajan

La façon de faire habituelle est de mettre le correspondant code dans une procédure qui peut être appelée par les deux formes. Il est préférable de mettre le code dans un module standard, mais vous pouvez l'avoir sur le formulaire a:

Formulaire B:

Sub RunFormALoad() 
    Forms!FormA.ToDoOnLoad 
End Sub 

Formulaire A:

Public Sub Form_Load() 
    ToDoOnLoad 
End Sub  

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

Je n'y ai pas pensé plus tôt. Merci beaucoup –

6

Vous pouvez repeindre et/ou requery:

En cas de forme B proche:

Forms!FormA.Requery 

Est-ce que vous voulez dire?

+0

Non, c'est comme si je voulais exécuter Form_Load de Formulaire A, si c'est possible –

1

"Requery" est bien ce que ce que vous voulez faire, mais vous pouvez le faire dans l'événement "On Got Focus" du Formulaire A. Si vous avez du code dans votre Form_Load, vous pouvez peut-être le déplacer vers Form_Got_Focus.

+1

Voir le commentaire de Varun Mahajan. Requery n'exécute pas les événements de chargement. – Fionnuala

+0

C'est pourquoi j'ai suggéré de déplacer le code vers Form_Got_Focus (comme vous l'avez fait dans votre deuxième réponse). S'il veut actualiser les données liées au formulaire, la requery est le chemin à parcourir. – BIBD

+0

Si HEW veut refaire l'événement Load, déplacer le code à un autre sous (comme remou a démontré), puis appelé dans la charge, puis dans son cheminement de rafraîchissement (soit lors de la fermeture B ou lors d'une nouvelle entring A avec un Focalisé). Got Focus fonctionnera également si A ouvre également d'autres fenêtres. – BIBD

0

Je vous recommande d'utiliser REQUERY la zone de liste déroulante spécifique dont vous avez modifié les données ET de le faire après l'instruction Cmd.Close. Ainsi, si vous saisissiez des données, ces données sont également demandées.

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

vous pouvez également indiquer la valeur a récemment changé

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

cet exemple suppose que vous avez ouvert une forme de données d'entrée dans une table secondaire. Supposons que vous ayez enregistré School_Index et School_Name dans une table scolaire et que vous l'utilisiez dans une table Étudiant (qui contient uniquement le champ School_Index). pendant que vous éditez un étudiant, vous devez l'associer à une école qui ne sont pas dans votre table école, etc etc

-1

pour rafraîchir le formulaire que vous devez saisir - Me.Refresh en cas de bouton Cliquez sur