Как я вынуждаю VBA/Access потребовать, чтобы переменные были определены?

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 25.1.1, 24.0.0. Примеры включают com.android.support:animated-vector-drawable:25.1.1 и com.android.support:mediarouter-v7:24.0.0

Это предупреждение обычно происходит, когда мы используем Google Play Services, потому что он использует вспомогательные библиотеки в качестве зависимостей.

Большинство из нас не знали, что мы можем переопределить библиотеки поддержки, используемые в Google Play Services . Когда мы используем следующую зависимость:

implementation "com.android.support:animated-vector-drawable:25.1.1"

она неявно зависит от com.android.support:mediarouter-v7:25.1.1. Но это противоречит зависимости сервиса Google Play, которая составляет com.android.support:mediarouter-v7:24.0.0. Итак, нам нужно переопределить его, явно используя библиотеку с:

implementation "com.android.support:mediarouter-v7:25.1.1"

Тогда ваш блок зависимостей будет включать их обоих следующим образом:

dependencies {
    implementation "com.android.support:animated-vector-drawable:25.1.1"
    implementation "com.android.support:mediarouter-v7:25.1.1"

    ...
}
18
задан Jean-François Corbett 13 April 2015 в 11:56
поделиться

3 ответа

Вам необходимо использовать Option Explicit в верхней части каждого кода VBA. модуль, включая формы и отчеты.

Вы можете установить это для всех будущих модулей и кода VBA, лежащего в основе форм и отчетов, перейдя в редактор VBA >> Инструменты >> Параметры >> Вкладка Редактор и убедившись, что установлен флажок Требовать объявление переменной.

Из справки Access 2003:

Требовать объявление переменной - определяет, требуется ли явное объявление переменных в модулях. Выбор этого параметра добавляет оператор Option Explicit к общим объявлениям в любом новом модуле.

Я также использую верблюжий регистр, когда я затемняю свои переменные. ThisIsAnExampleOfCamelCase . Как только я выйду из строки кода VBA, если Access не

36
ответ дан 30 November 2019 в 06:19
поделиться

Этот вопрос был весьма полезен для Excel, вы можете посмотреть, будет ли он работать для Access:

Lost Variables

Essentialy, MZ-Tools выполнит поиск через ваш код и сообщить вам, что не используется. Версию для VBA можно найти здесь . Используйте функцию Просмотр исходного кода .

0
ответ дан 30 November 2019 в 06:19
поделиться

Некоторая история OPTION EXPLICIT и Access VBA

В продолжение ответа Тони, вот некоторые объяснения того, почему существуют проблемы с OPTION EXPLICIT, которые не включены в некоторых модулях кода доступа.

В Access 95 и Access 97 (первых двух версиях Office с VBA) в Access был редактор кода, отличный от других офисных программ. В Access 2000 Microsoft реализовала VBE из других приложений Office в Access. В то же время MS решила заставить модули Access VBA вести себя так же, как модули в других приложениях, которые по умолчанию имеют значение , а не с OPTION EXPLICIT.

Таким образом, в Access 2000 по умолчанию модули были созданы без OPTION EXPLICIT.

Это было, конечно, действительно глупое дизайнерское решение со стороны MS, и они отменили его позже (я могу ' (помните, был ли это Access 2002 или 2003, который устранил проблему и снова использовал OPTION EXPLICIT во всех новых модулях). Причина, по которой это было глупо (и MS должна была это знать), заключается в том, что Access является инструментом РАЗРАБОТКИ ПРИЛОЖЕНИЙ БАЗЫ ДАННЫХ и, таким образом, работает с данными, которые строго типизированы. Таким образом, среда кода должна быть строго типизирована по умолчанию, чтобы она согласовывалась с данными, с которыми она работает.

В Excel или Word данные не строго типизированы, и, таким образом, Разумнее использовать вариантные типы данных практически для всего, просто чтобы всем было проще. Обратной стороной реализации этого без использования OPTION EXPLICIT является то, что вы можете столкнуться с опечатками, которые автоматически вводят новые переменные [например, переменную «intrdoduce» - если бы я писал этот пост с OPTION EXPLICIT, этого не произошло бы без ошибки выполнения! :)]. Это проблема всех таких языков, которые работают таким образом (я вытаскиваю волосы, работая в PHP, где имена переменных могут различаться по регистру, т. Е. $ Var - это не та же переменная, что и $ var; но я отвлекаюсь), но MS приняла решение реализовать это таким образом в Word и Excel, исходя из теории, что людям, пишущим код, будет легче, если их не заставят объявлять свои переменные.

Итак, MS сделала ошибка создания версии VBE для Access, как и другие приложения, даже несмотря на то, что не было внутренней логики для собственных целей Access, которая поддерживала этот переход. Затем MS отменила это изменение и вернулась к предыдущему статус-кво (т.е. OPTION EXPLICIT по умолчанию во всех модулях).

Таким образом, вы часто будете видеть приложения, которые начали свою жизнь в Access 2000, у которых есть модули повсюду без OPTION EXPLICIT. Когда мне приходится работать над таким приложением, моя первая задача - реализовать OPTION EXPLICIT во всех модулях, а затем исправить эту чертову штуку, чтобы она скомпилировалась (что часто довольно сложно, учитывая, что эта штука была запрограммирована без нее).

16
ответ дан 30 November 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: