MS Access 条件格式不起作用

MS Access 条件格式不起作用

MS Access 中的条件格式对我的表单上的某些字段不起作用。我搜索了答案,尝试了找到的答案,但仍然卡住了。

我有一个表单,其中有大约 30 个控件 - 一些组合框和一些文本框(显示日期)。我已对控件应用了条件格式,这样当值被编辑时,它将显示为粗体、斜体和黄色背景。对于大多数控件,这都可以按预期工作。对于少数似乎没有任何共同点的控件,它不起作用。

一个可能的线索是这样的——条件的公式是:

controlName.value <> controlName.oldvalue

对于条件格式起作用的控件,公式在条件格式对话框中的显示与上文完全相同;对于条件格式不起作用的控件,条件格式对话框将公式转换为:

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

我尝试使用默认控件名称创建新控件(认为原始控件名称可能存在问题),但这并不能解决问题。我看到了相同的行为。

我尝试将所有对象导入到新数据库(认为数据库可能有损坏)。但毫无效果。

我还在我的代码上运行了调试器,并压缩和修复了数据库。没有变化。

条件格式不起作用的字段之一是显示日期字段的文本框。其余的是组合框。我在同一个表单上还有其他文本框日期字段和组合框,它们工作正常。

这是一个 MS Access 2010 .accdb 文件,其中包含指向 MS SQL Server 2016 服务器的链接表。表单的记录源是链接表,它是一个 SQL Server 视图。链接表有一个主键索引。

我不知道我还能告诉你什么。有人见过这个问题吗?

答案1

经过进一步实验我发现了答案。

我的规则公式没有考虑到控件的旧值可能为 NULL 的情况。当我将公式更改为;

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

公式按预期发挥作用。

我无法确认这一点,因为我不知道如何测试在条件格式对话框中使用的公式的响应,但我怀疑当 oldvalue 为空时,公式的结果计算为空。

PS,我不明白为什么条件格式对话框会在某些语句周围加上方括号,而在其他语句周围则不加,但事实证明,这显然不是一个因素。

相关内容