Le meilleur moyen d'inciter les paramètres de rapport dans microsoft access
Permet de dire que vous la conception d'un rapport des ventes dans microsoft access. Vous avez 2 paramètres: Startdate et EndDate.
Je peux penser de 3 façons pour demander à l'utilisateur final de ces paramètres lors de l'exécution du rapport.
-
Créer un formulaire avec 2 zones de Texte et un bouton. Le Bouton exécute le rapport, et le rapport se réfère à la forme par nom pour obtenir la date de début et date de fin.
-
Créer un formulaire avec 2 zones de texte et un bouton. Le bouton exécute le rapport, mais fixe le filtre approprié via le docmd.openreport de commande.
-
Le rapport de Base sur une Requête et de définir les paramètres de la requête. L'accès sera automatiquement invite pour ces paramètres un par un.
Qui est la meilleure façon de le faire?
Vous devez vous connecter pour publier un commentaire.
Qui est mieux dépend d'un certain nombre de facteurs. Tout d'abord, si vous souhaitez exécuter le rapport sans paramètres, vous ne voulez pas de les définir dans la source du rapport. C'est aussi le problème avec votre première suggestion, qui lierait le rapport de la forme (à partir de Access/Jet point de vue, il y a peu de différence entre un PARAMÈTRE déclaré dans le code SQL de la source et un contrôle de formulaire de référence; en effet, si vous faites tout droit, à tout moment vous utilisez un contrôle de formulaire de référence, vous allez définir comme paramètre!).
Des trois, la plus flexible est votre deuxième suggestion, ce qui signifie que le rapport peut être exécuté sans avoir besoin d'ouvrir le formulaire et sans avoir à fournir les paramètres lors de l'exécution.
Vous avez oublié une possibilité qui est un peu entre les deux, et c'est d'utiliser la Forme de l'événement OnOpen pour définir la source au moment de l'exécution. Pour ce faire, vous auriez du ouvrir le formulaire où vous êtes la collecte de vos dates à l'aide de la acDialog argument, masquer le formulaire après le remplissage, et puis écrire la source à la volée. Quelque chose comme ceci:
[Edit: IsLoaded() est une fonction fournie par MME C'est tellement de base à tous mes Accès de codage, j'oublie ce n'est pas une fonction intégrée. Le code:]
Maintenant, il ya certains avantages à cette approche:
vous pouvez pré-remplir les dates telle que l'utilisateur aurait à cliquez sur OK.
vous pouvez ré-utiliser le formulaire dans de multiples endroits pour recueillir les valeurs de date pour de multiples formes, depuis la forme ne se soucie pas de ce rapport, il est utilisé dans.
Cependant, il n'y a pas de conditionnel façon de choisir d'ouvrir le formulaire ou non.
À cause de cela, j'ai souvent l'utilisation d'un module de classe pour stocker des critères de filtrage pour les rapports, et de vérifier ensuite si la classe de l'instance du module a des valeurs de filtre défini au moment de l'événement OnOpen incendies. Si les critères sont établis, puis-je écrire le code SQL de la source à la volée, s'ils ne sont pas ensemble, je viens d'utiliser la valeur par défaut de source (et de n'importe quel filtre passé dans le OpenReport argument). Dans cette configuration, vous devez exécuter le rapport qu'après avoir recueilli les critères et configurer le module de classe de l'instance. L'avantage de cette approche est que le rapport peut être exécuté dans les deux contextes, et aucune des parties besoin de savoir quelque chose au sujet de chaque d'autres -, le rapport doit simplement comprendre la classe du module d'interface.
J'ai utilisé la Docmd.Openreport clause where, votre option 2. Mais j'ai passé à l'aide de filtres de rapport dans les rapports événement Ouvrir votre option 1, car il prend en charge la création de fichiers PDF pour la clause where n'est pas. Voir Microsoft Access Impression Du Rapport D'Critères De Sélection Des à mon site web.
Autant que les dates d'aller dans des chaînes SQL-je utiliser le Format de déclaration au Dates de retour en NOUS #mm/jj/aaaa# format
Aussi votre choix de trois peuvent être traitées par mise dans l'exemple suivant, dans les critères dans les rapports de la source d'enregistrement de la requête SQL. Les formes!Form_Name!Control_Name. C'est généralement plus simple pour les gens qui ne veulent pas entrer dans le VBA.