1

Условное форматирование в MS Access не работает для определенных полей в моей форме. Я искал ответы, пробовал ответы, которые нашел, и все еще застрял.

У меня есть форма с примерно 30 элементами управления - некоторые комбинированные списки и некоторые текстовые поля (отображение даты). Я применил условное форматирование элементов управления, чтобы при редактировании значения оно отображалось жирным шрифтом, курсивом и желтым фоном. Для большинства элементов управления это работает как нужно. Для немногих, которые, кажется, не имеют ничего общего, это не работает.

Возможный ключ к этому - формула условия:

controlName.value <> controlName.oldvalue

Для элементов управления, где работает условное форматирование, формула отображается в диалоговом окне условного форматирования точно так же, как и выше. Для элементов управления, где она не работает, диалоговое окно условного форматирования переводит формулу в:

[controlName].[value] <> [controlName].[oldvalue]

Я попытался создать новые элементы управления, используя имя элемента управления по умолчанию (думая, что что-то может быть повреждено с оригиналом), но это не решает проблему. Я вижу такое же поведение.

Я попытался импортировать все мои объекты в новую базу данных (думая, что может быть что-то повреждено с базой данных). Нет радости

Я также запустил отладчик для своего кода, сжал и восстановил базу данных. Без изменений.

Одним из полей, где условное форматирование не работает, является текстовое поле, в котором отображается поле даты. Остальные комбо-боксы. У меня есть другие поля даты текстового поля и поля со списком в той же форме, которые работают нормально.

Это файл MS Access 2010 .accdb со связанными таблицами с сервером MS SQL Server 2016. Источником записей для формы является связанная таблица, которая является представлением SQL Server. Связанная таблица имеет индекс первичного ключа.

Я не знаю, что еще могу вам сказать. Кто-нибудь видел эту проблему?

1 ответ1

1

После дальнейших экспериментов я обнаружил ответ.

Моя формула правила не учитывает условие, при котором старое значение элемента управления может быть равно NULL. Когда я изменил формулу на;

controlName.value <> nz(controlName.oldvalue,0)

формула работает как хотелось бы.

Я не могу подтвердить это, потому что я не знаю способа проверки ответа формулы, как она используется в диалоговом окне условного форматирования, но я подозреваю, что результат формулы оценивается как ноль, когда oldvalue равно нулю.

PS Я не понимаю, почему диалоговое окно условного форматирования заключает в квадратные скобки некоторые утверждения, а не другие, но, как выясняется, это, очевидно, не является фактором.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .