2009-03-25 8 views
2

Cela semble être une affaire simple, et je suis sûr que je l'ai fait auparavant, mais cela fait longtemps que je n'ai pas fait de programmation UI dans Access. Ce que je dois faire est de mettre un bouton sur un formulaire pour basculer entre la feuille de données et la vue formulaire pour un sous-formulaire.Comment puis-je modifier l'affichage d'un sous-formulaire MS Access à l'exécution dans le code VBA?

J'ai trouvé une propriété defaultview, mais rien qui ressemble à ça ne changerait l'affichage du formulaire après qu'il soit déjà ouvert.

Essentiellement, je besoin de la propriété que je peux remplir le code suivant ..

sfEmployeeBatchEntry.Form.??? = acFormDS 
+0

Comment faire aller à une vue continue formulaire –

+0

Je vous suggère de demander une autre question sur le site au lieu de poser des questions dans un commentaire. – JohnFx

Répondre

7

Je l'ai trouvé moi-même. Il me manquait car il utilisait la syntaxe RunCommand bête et maladroite au lieu d'une simple propriété ou méthode sur les classes de contrôle ou de formulaire.

Ce n'est pas joli, mais pour la postérité, voici la réponse.

'You have to set focus to the subform control or the change view call will' 
'fail (UGH!)' 
MyForm.mySubFormControl.SetFocus 

'Change to datasheet view...' 
DoCmd.RunCommand acCmdSubformDatasheet 

'Change to Form View...' 
DoCmd.RunCommand acCmdSubformFormView 
+0

Comment passer en mode Formulaire continu –

+0

Lors de mes tests, le formulaire continu est uniquement affiché avec DoCmd.RunCommand acCmdSubformFormView' si la propriété Affichage par défaut est définie sur "Formulaire continu" lorsque le formulaire est en mode Création. Si la vue par défaut est définie sur autre chose, elle basculera uniquement entre la feuille de données et la vue Formulaire unique. Je n'ai pas fait d'autres tests/recherches pour savoir si DefaultView peut être modifié pendant l'exécution –

0

J'ai essayé un certain nombre de solutions différentes trouvées sur différents sites. Certains semblaient inutilement compliqués. J'ai nettoyé une partie du fouillis et j'ai trouvé que cela correspondait le mieux à mes besoins.

Dim intView As Integer 
intView = Me.Form.CurrentView 

If intView = 1 Then 

    DoCmd.RunCommand (acCmdSubformDatasheetView) 
    Else 


    DoCmd.RunCommand (acCmdSubformFormView) 
    End If 

Exit Sub