MS Access 2007: Où Trouver une Forme / de Requête / Rapport est Utilisé
Histoire: j'ai hérité d'une assez grande application écrite en utilisant MS Access avec beaucoup de formulaires, des requêtes et des rapports. Parce qu'il semble que certains de ces éléments qui ont été copiés comme un moyen de sauvegarder, j'ai aucune idée si ils sont effectivement utilisés n'importe où.
Question: je suis de commencer le processus de nettoyage de l'application et ont besoin d'un moyen de savoir si et où des formulaires, des rapports ou des requêtes sont utilisés pour que je sache si je peux supprimer ou de refactoriser. Est-il un bon moyen d'avoir Accès recherche les événements des boutons pour les noms de formulaires /états?
D'accès ("trouver la fonction semble trouver que les enregistrements, sauf si je suis en manque un paramètre)
Modifier - Solutions:
1.) Comme il a été mentionné dans les réponses et les commentaires ci-dessous, ce serait une leçon précieuse pour reconstruire l'application par la création d'un frais d'Accès de fichier, puis allez forme par forme, à commencer par l'écran de connexion, et de voir ce qui est manquant. Ce serait offrir une grande perspicacité dans l'ensemble de l'application.
2.) J'ai trouvé ce post que décrit à l'aide de la "Documentation de Base de données" pour vider toutes les informations relatives aux objets, VBA, etc utilisé dans une forme donnée. Le fichier texte obtenu est facilement consultable pour l'utilisation d'une seule requête, rapport, ou la forme. Il ne serait pas me fournir le même niveau de connaissance que le re-construire l'ensemble de l'application, mais c'est un bon arrêt de l'écart de mesure pour les connaissances ciblées /du possible le nettoyage.
OriginalL'auteur Taylor Price | 2011-10-14
Vous devez vous connecter pour publier un commentaire.
Dire que vous avez un formulaire nommé frmOne qui a un bouton de commande avec le code-behind:
Et rptFoo utilise qryFoo comme source d'enregistrement.
Permettant le Nom de la Piste de correction automatique, puis l'affichage de l'Objet de Dépendances pour frmOne vous avertira pas que rptFoo est requis par frmOne. Il peut cependant vous dire qryFoo est requis par rptFoo. Une autre question est l'objet des dépendances de ne pas vous avertir que frmOne a été désapprouvée --- la version actuelle est frmTwo.
De même, à l'aide de
Application.SaveAsText
pour créer des fichiers texte pour les objets de base de données, puis grepping les fichiers de texte ne serait pas vous dire frmOne a été désapprouvée.Vous pourriez essayer une approche différente pour identifier des objets de base de données sont nécessaires. Créer un nouveau fichier de base de données. Importer le formulaire de démarrage à partir de l'ancienne base de données. L'ouverture de la nouvelle base de données, et la forme d'identifier les éléments manquants dont il a besoin. L'importation de ceux-ci. Faire mousser, rincer, répéter.
Si l'application n'est pas piloté à partir d'un formulaire de démarrage, demander aux utilisateurs les formulaires et les rapports qu'ils utilisent, puis importer ces.
Cette approche sera fastidieux, et peut prendre quelques heures. Cependant, je doute que les autres approches pourraient être considérablement plus rapide. Sur le côté positif, vous êtes presque garanti que vous ne serez pas à l'importation d'objets inutiles dans la nouvelle base de données. Et si vous manquez de tout ce qui est nécessaire, vous pouvez les importer à partir de la copie enregistrée de l'ancienne base de données.
Cela dépend probablement sur la façon dont l'application est organisée. Si les utilisateurs ouvrent rptFoo seulement à partir de la Fenêtre Base de données (Access <= 2003) ou le Panneau de Navigation (Accès >= 2007), il n'existe aucun moyen de déterminer ce qui est imposé par l'inspection de propriétés de base de données ou du code. Si toutes les opérations de l'utilisateur sont chassés de quelque chose comme un tableau de menu formulaire, puis vous pouvez inspecter le code/macros/standard table de comprendre le db sur les objets requis. Cependant, je pense que votre deuxième point est le plus important. Avant le refactoring quoi que ce soit, il faut vérifier avec les utilisateurs. Éviter de refactoring des pièces qui ne sont pas nécessaires ...
plus. Évitez le nettoyage du code pour faire une opération de mieux pour découvrir seulement que cette opération doit être modifié pour les besoins courants. Il n'y a tout simplement pas de substitut pour la compréhension de l'héritage de l'application avant d'apporter des modifications à elle. Demander aux utilisateurs.
L'application est piloté à partir d'un menu principal. Votre solution est probablement ce que je vais faire. J'essayais d'éviter d'avoir à passer par toutes les formes pour une variété de raisons, mais comme la puce l'a souligné, il fera une importante expérience d'apprentissage. Votre point de vue sur la vérification avec les utilisateurs est sur place. Je fais de mon mieux pour vous assurer qu'ils ont obtenu ce dont ils ont besoin dans les nouvelles fonctionnalités, je suis en développement. J'espère qu'ils vont prendre / prendre le temps d'aller sur quelques-uns des autres les éléments les plus anciens et de me montrer ce qu'il répond à leurs besoins.
Vous avez raison, moi forçant à passer par toutes les formes serait incroyablement précieux exercice pour comprendre ce qui se passe dans l'application.
OriginalL'auteur HansUp
Cela peut être un cas d'utilisation de la Piste de correction automatique de Nom, avec cette allumé, vous pouvez suivre les dépendances d'objet.
Il n'est pas impossible de vérifier le code et les événements de formulaire de références avec VBA.
J'ai aussi signifié
For each frm In Currentproject.AllForms ... For Each Ctl In Forms(frm.Name).Controls ...
et ainsi de suite. Tout à fait un peu court de VBA devrait le faire.OriginalL'auteur Fionnuala
J'ai hérité d'une application avec 20+ mdb front-end avec certains d'entre eux à l'aide de requêtes dans d'autres fichiers. En plus de la solution de Remou mentionné, j'ai aussi utiliser une variante de cette script pour exporter l'ensemble des formulaires, des requêtes et des rapports vers des fichiers texte puis grep à travers eux de vérifier si l'objet est utilisé.
Il n'est pas parfait, mais ça me permet aussi de vérifier les dépendances entre les bmd - je ne sais pas si vous pouvez le faire avec les outils intégrés. J'ai peut-être été la souffrance de NIH quand j'ai codé.
Vous pouvez également regarder mz-tools qui dispose de quelques outils pour trouver de code inutilisé.
OriginalL'auteur chip
Il y a ce petit add-in, gratuit et utile vtools, qui, parmi d'autres possibilités, spécifiquement pour la recherche de valeurs ou de références dans tous les accéder à des objets (tables, requêtes, code, formes, ...).
OriginalL'auteur Philippe Grondier
Facile.
Aller dans l'éditeur de code de VBA (trouver Afficher le Code quelque part)
CTRL + F pour tirer vers le haut les options de recherche et cliquez sur Rechercher Projet
donc, si vous allez par le biais du formulaire et les noms de rapport vous serez en mesure de trouver à chaque fois qu'ils ont été référencés par programmation. Cela ne fonctionnera pas à trouver si les requêtes sont utilisés, pour que vous avez besoin de la Documentation de Base de données.
OriginalL'auteur serakfalcon