-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


Константы условной компиляции

Среда, 30 Марта 2016 г. 15:36 + в цитатник
Здравствуйте!

Потребовалось мне одну разработку регулярно переводить в различные версии Access, включая Ac97.
В разработке использованы некоторые возможности более поздних версий, неизвестные 97-ому.
В частности, условное форматирование.
Задается оно программно – изначально в ленточной форме отсутствует, чтобы не мигало и не тормозило,
а в определенном случае создаются нужные правила, это вынесено в отдельную процедуру.
Чтобы исключить ошибки компиляции, в Ac97 попробовала применить условную компиляцию.
 Dim S As String
 S = SysCmd(acSysCmdAccessVer)
 #If S = "8.0" Then
  <ничего не должно происходить>
 #Else
  With Forms!<имя формы>
   If .<имя поля_1>.FormatConditions.Count = 0 Then
    .<имя поля_1>.FormatConditions.Add acExpression, , "<условие>"
    .<имя поля_1>.FormatConditions(0).BackColor = RGB(210, 255, 210)
    …………………………………………………
   End If
  End With
 #End If
Разумеется,
 Dim S As String
 S = SysCmd(acSysCmdAccessVer)
 #If S = "8.0" Then
оказалось глупостью, ведь значение S в момент компиляции не определено, да и само S тоже.

Передавать аргументы условной компиляции извне не очень хочется,
так как потребуется их каждый раз задавать вручную.
Кроме того, они и задаются по-разному:
для Ac97 — через главное меню БД
Сервис —> Параметры.—> Другие —> Аргументы условной компиляции
для Ac2000 и далее — через редактор VBA
Tools —> Project Properties Dialog Box —> General Tab —> Conditional Compilation Arguments

Запускать через ярлык со значением аргумента условной компиляции тоже не очень удобно.

Пока вижу наименее трудоемкий способ таким – два разных условия и переносить знак комментария:
#If True Then           ‘     для Ac97#If False Then         ‘     для Ac2000 и далее
  <ничего не должно происходить>
#Else
  <необходимые действия>
#End If
Всего одно движение.
Но хочется так наладить, чтобы все происходило вообще само собой, без моего участия каждый раз.

Поэтому такой вопрос:

Есть ли такая константа компилятора VBA, значение которой будет говорить об используемой версии Access, или хотя бы офиса?
По аналогии с константами Win16/Win32/Win64.

Список имеющихся констант смотрела https://msdn.microsoft.com/ru-ru/library/office/gg264614.aspx.
Но вдруг кто-то знает секретные константы.)))

http://www.sql.ru/forum/1207622/konstanty-uslovnoy-kompilyacii


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку