我有一个连续的表单绑定到DAO记录源。我的条件格式规则如下所示:
表达式是:[DateTimeDeleted] IS NOT NULL(用明亮的粉红色填充文本框背景)
然后我在每条记录上都有一个删除按钮。它的代码是:
Private Sub cmdDelete_Click()
If Me.NewRecord = False Then
If IsNull(Me!DateTimeDeleted) = True Then
Me!DateTimeDeleted = Now()
DoCmd.RunCommand acCmdSaveRecord
Else
Me!DateTimeDeleted = Null
DoCmd.RunCommand acCmdSaveRecord
End If
Else
Me.Undo
End If
End Sub
我很清楚这里没有代码可以实际删除记录,我很好。我的抱怨是条件格式似乎只在表单加载时应用。单击上面的按钮不会使记录被“删除”的方框变为粉红色。在这里我是否存在一些关于条件格式如何工作的误解?
仅供参考,我在Windows 8.1上使用MS Access 2013 32bit。也许这是我的问题的根源。这不是我的选择,因为MS Design and Development Action Pack订阅不再允许使用Office 2010。
答案 0 :(得分:3)
在处理这样的问题时,我喜欢使用Refresh
命令。您修改后的代码看起来像这样。
Private Sub cmdDelete_Click()
If Me.NewRecord = False Then
If IsNull(Me!DateTimeDeleted) = True Then
Me!DateTimeDeleted = Now()
DoCmd.RunCommand acCmdSaveRecord
Else
Me!DateTimeDeleted = Null
DoCmd.RunCommand acCmdSaveRecord
End If
Me.Refresh 'This is the inserted code
Else
Me.Undo
End If
End Sub
答案 1 :(得分:0)
您也可以使用Me.Recalc代替Me.Refresh。 Recalc的开销较小。