MS Access 2007: найдите, где используется форма / запрос / отчет - PullRequest
3 голосов
/ 14 октября 2011

История: Я унаследовал довольно большое приложение, написанное с использованием MS Access, с множеством форм, запросов и отчетов.Похоже, что некоторые из этих элементов были скопированы с целью их резервного копирования, я понятия не имею, используются ли они где-либо на самом деле.

Вопрос: Я запускаюпроцесс очистки приложения, и мне нужен способ найти, где и где используются формы, отчеты или запросы, чтобы я знал, смогу ли я удалить или реорганизовать их.Есть ли хороший способ, чтобы Access осуществлял поиск по событиям кнопок по именам форм / отчетов?

(функция поиска Access, кажется, находит только записи, если я не пропущу настройку)


Редактировать - Решения:

1.) Как уже упоминалось в ответах и ​​комментариях ниже, было бы полезным уроком перестроить приложение, создав новый файл Access, а затемпереходя от формы к форме, начиная с экрана входа и видя, чего не хватает.Это обеспечило бы глубокое понимание всего приложения.

2.) Я нашел этот пост , в котором обсуждается использование «Документ-базы данных» для выгрузки всей информации, относящейся к объектам, VBA.и т. д. используется в данной форме.Полученный текстовый файл легко найти для использования одного конкретного запроса, отчета или формы.Это не обеспечит мне тот же уровень знаний, что и перестройка всего приложения, но это хорошая мера ограничения для целевых знаний / возможной очистки.

Ответы [ 5 ]

2 голосов
/ 15 октября 2011

Скажем, у вас есть форма с именем frmOne, в которой есть командная кнопка с выделенным кодом в виде:

DoCmd.OpenReport "rptFoo"

И rptFoo использует qryFoo в качестве источника записи.

Включение автозамены имени дорожки, а затем просмотр зависимостей объектов для frmOne не уведомит вас о том, что rrFoo требуется для frmOne. Однако он может сказать вам, что для qptFoo требуется rptFoo. Другая проблема заключается в том, что объектные зависимости не будут уведомлять вас о том, что frmOne устарела - текущей версией является frmTwo.

Точно так же, используя Application.SaveAsText для создания текстовых файлов для объектов базы данных, затем очистка текстовых файлов не скажет вам, что frmOne устарела.

Вы можете попробовать другой подход, чтобы определить, какие из объектов базы данных требуются. Создайте новый файл базы данных. Импортируйте форму запуска из старой базы данных. Откройте новую базу данных и форму, чтобы определить недостающие элементы, в которых она нуждается. Импортируйте те. Вспенить, промыть, повторить.

Если приложение не запускается из формы запуска, спросите пользователей, какие формы и отчеты они используют, а затем импортируйте их.

Такой подход будет утомительным и может занять несколько часов. Однако я сомневаюсь, что другие подходы будут значительно быстрее. С другой стороны, вы гарантированно не будете импортировать ненужные объекты в новую базу данных. А если вы пропустили что-нибудь необходимое, вы можете импортировать это из сохраненной копии старой базы данных.

0 голосов
/ 27 декабря 2013

Это просто.

Зайдите в редактор кода VBA (где-нибудь найдите View Code), нажмите CTRL + F, чтобы открыть параметры поиска, и нажмите Search Project

, поэтому, если вы пройдете через формуи сообщать имена, которые вы сможете найти каждый раз, когда на них ссылаются программно.Это не поможет определить, используются ли запросы, для этого вам понадобится Документатор баз данных.

0 голосов
/ 17 октября 2011

Имеется эта небольшая надстройка, бесплатная и полезная vtools , которая, помимо других возможностей, специально позволяет вам искать значения или ссылки во всех объектах доступа (таблицах, запросах, коде, формах, ...).

0 голосов
/ 15 октября 2011

Я унаследовал приложение с 20+ mdb интерфейсами, некоторые из которых использовали запросы в других файлах.В дополнение к решению, о котором упоминал Рему, я также использую вариант этого сценария для экспорта всех форм, запросов и отчетов в текстовые файлы, а затем выполняю поиск по ним, чтобы проверить, используется ли объект.

Это не идеально, но также позволяет мне проверять зависимости между mdbs - я не уверен, что вы можете сделать это с помощью встроенных инструментов.Возможно, я страдал от NIH, когда я его кодировал.

Вы также можете взглянуть на mz-tools , в котором есть некоторые инструменты для поиска неиспользуемого кода.

0 голосов
/ 14 октября 2011

Это может быть случай использования автозамены имени трека, если этот параметр включен, вы можете отслеживать зависимости объекта.

Ни в коем случае нельзя проверять код и события для ссылок на формы с помощью VBA.

...