Dans Access 2007, j'ai un formulaire mis en place pour permettre la prévisualisation et l'exportation des options pour les rapports du projet. DoCmd.OutputTo semble se comporter étrangement lorsqu'il s'agit de rapports dont la propriété Modal est définie sur true.DoCmd.OutputTo sur le rapport ne décharge pas
Modal est actuellement défini sur True dans l'événement Open pour tous les rapports avec lesquels je travaille.
Si je
DoCmd.OpenReport szReportName, acViewPreview
DoCmd.Close acReport, szReportName
Ensuite, la concentration et le contrôle est retourné à la forme d'exécuter normalement.
Si exporter directement au lieu et utiliser
DoCmd.OutputTo acOutputReport, szReportName
Ensuite, le rapport est exporté correctement, mais le contrôle ne retourne jamais à la forme d'exécution. C'est complètement désactivé. Le même code fonctionne très bien, si j'utilise Modal = False lors de l'ouverture du rapport à la place. J'ai expérimenté un peu avec les hooks d'événement du rapport pour essayer de comprendre quelle est la différence et OnUnload
n'est jamais touché après l'appel de OutputTo
.
Je sais que je pourrais travailler autour de ce que de faire le modal rapport quand je besoin d'être modal, mais il est certainement plus facile de le faire à l'intérieur du code du rapport au lieu du module d'ouverture et je vraiment Je ne pense pas que je devrais avoir ce problème. Je n'ai aucun problème d'exporter le rapport du mode de prévisualisation au lieu de directement à partir de VBA, mais apparemment le client ... ne
des questions Alors, réelles:
- Y at-il une bonne raison de ne pas déclencher CopierVers l'événement Unload? Si c'est un comportement normal, alors bon, mais j'aimerais au moins en comprendre la raison.
- Existe-t-il un moyen d'exporter un rapport modal et de reprendre le contrôle des autres fenêtres? Ou au moins, une façon non-hacky de réactiver et de se concentrer sur le formulaire d'appel?
Je reconnais que la définition de la propriété Modal (ou any) dans le code de rapport est moins que souhaitable. Pour être honnête, je ne l'ai pas mis là, j'essaie simplement de maintenir le comportement précédent. Je crois que Modal a été utilisé à la place de acDialog, car nous ne voulions pas que le rapport soit en mode PopUp. Quoi qu'il en soit, j'ai résisté à acDialog car il se comporte différemment de la propriété Modal - il me permet toujours de passer le focus au formulaire d'appel. J'avais oublié que ça devrait être pareil, alors il me semble que je devrais chercher quelque chose d'anormal dans le rapport qui fait que acDialog ne se comporte pas de manière modale. – Jelly
Popup et Modal sont deux propriétés complètement différentes, et l'ouverture d'un formulaire ou d'un rapport avec acDialog n'entraîne PAS que le formulaire/rapport soit en mode Popup. Fondamentalement, autant que je sache, acDialog provoque l'ignorance des propriétés Modal et Popup. –
Je viens de tester un rapport ouvert à partir d'un bouton de commande avec acDialog, et peu importe les propriétés Modal/Popup définies, je ne pouvais pas reconfigurer le formulaire appelant jusqu'à ce que l'aperçu du rapport soit fermé. –