需要子表单时,条件格式会闪烁

Posted

技术标签:

【中文标题】需要子表单时,条件格式会闪烁【英文标题】:Conditional Formatting flickering on and off when subform is requeried 【发布时间】:2021-08-03 13:57:18 【问题描述】:

我有一个 Access 前端链接到数据库的 SQL Server。我有一个包含子表单的主表单,设置为Datasheet,以使用条件格式向用户显示网格中的记录。记录集不可更新,因此我有一个单独的表单来修改数据。一旦该表单修改了数据,我需要调用Requery 来刷新数据。

问题是,当在 VBA 中点击此行时,子窗体的条件格式会暂时关闭然后重新打开,这会对最终用户造成“闪烁”效果,他们可以暂时看到数据而不是所需的颜色编码。

我已尝试更新表中的记录,但由于它不可更新,所以这不是一个选项。我也尝试在执行前设置Application.Echo False 无济于事。这似乎没有什么区别。

我怎样才能阻止这种情况发生?

下面的代码行:

Private Sub saveData_Click()
    Dim x as Integer

    Call frmSaveData(x)           '// Calls the routine to save the data
    Me.subFormData.Form.Requery   '// Calls the subform query to refresh and formatting 'flickers'
End Sub

【问题讨论】:

Application.Echo False 为我解决了这些类型的问题。您可以发布您尝试过的代码吗? (是否有任何事件潜艇过早地重新打开它?) 【参考方案1】:

关闭绘画应该这样做:

Private Sub saveData_Click()

    Dim x as Integer

    ' One or both. Test.
    Me.Painting = False
    Me!subFormData.Form.Painting = False

    Call frmSaveData(x)           '// Calls the routine to save the data
    Me.subFormData.Form.Requery   '// Calls the subform query to refresh and formatting 'flickers'

    Me!subFormData.Form.Painting = True
    Me.Painting = True

End Sub

【讨论】:

以上是关于需要子表单时,条件格式会闪烁的主要内容,如果未能解决你的问题,请参考以下文章

有条件地格式化子表单中的组合框

Access 中使用不同字段的条件格式

如何使用Yup根据条件设置验证架构?格式

如何有条件地格式化连续形式的文本框边框?

触发器中存在条件

带开关的条件格式