【问题标题】:Access Conditional Formatting Only Applied on Load访问条件格式仅在加载时应用
【发布时间】:2015-04-23 01:45:39
【问题描述】:

我有一个绑定到 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 32 位。也许这就是我问题的根源。这不是我的选择,因为 MS 设计和开发行动包订阅不再允许使用 Office 2010。

【问题讨论】:

  • Me.Refresh 怎么样?
  • 继续并将其作为答案发布。有效。不确定当我将表单切换到 ADO 时它是否仍然有效,但如果它不起作用,那将是一个单独的问题。

标签: ms-access vba ms-access-2013


【解决方案1】:

在处理此类问题时,我喜欢使用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

【讨论】:

    【解决方案2】:

    您也可以使用 Me.Recalc 代替 Me.Refresh。重新计算的开销更少。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-03
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      相关资源
      最近更新 更多