Здравствуйте!
Потребовалось мне одну разработку регулярно переводить в различные версии 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