【问题标题】:Conditional formatting not working on subform条件格式不适用于子表单
【发布时间】:2016-12-15 19:13:04
【问题描述】:

我在表单视图中有一个表单,其中包含一个连续的子表单。

我在该连续子表单上的相关控件(它是一个组合框)的条件格式中有一个条件语句。此条件在评估为 true 时禁用该记录的组合控件:

[Forms]![frmCommuteInSub]![ctlDate]<getStartDate()

我也试过这个说法:

[Forms]![frmCommuteInSub]![ctlDate]<#12/01/2016#

有趣的是,这在主窗体中不起作用……但如果我自己打开子窗体,这种格式就可以正常工作。

有人知道是什么原因造成的吗?我真的需要这个以主要形式工作。

PS。我正在使用 Access 2013。如果有帮助,我精通 VBA 或任何其他语言。

【问题讨论】:

  • 我一直在尝试其他功能,似乎[Forms]![frmCommuteInSub]![ctlDate] 没有在子表单中进行评估,但[ctlDate] 确实......有人可以解释这种行为吗?他们都评估我是否自己打开子表单......很奇怪......
  • 尝试使用Debug.Print,看看它正在评估什么值。
  • 不知道该怎么做。 Debug.Print 不适用于条件格式窗口。但是,我已经测试了原始类型 (>0, Is Null, Is Not Null, Len()>0, ##),然后应该将框变为红色。相同的行为,如果我直接打开子表单,则计算为 date 或 int 类型,但当子表单位于主表单中时则不会。
  • 将此代码放在表单上的程序之一中。 Debug.Print [Forms]![frmCommuteInSub]![ctlDate] &amp; " : " &amp; getStartDate() 然后打开Immediate Window 查看值。
  • 语法无效,我认为条件格式窗口不能访问 VBA IDE 中的即时窗口。

标签: ms-access ms-access-2013 conditional-formatting


【解决方案1】:

尝试使用DateDiff 函数,看看是否有效。

If DateDiff("d",[Forms]![frmCommuteInSub]![ctlDate],getStartDate()) > 1 then

【讨论】:

  • 谢谢戴夫,请参阅我刚刚添加到主要问题的评论。
【解决方案2】:

在我看来,您有 2 个选项,这取决于哪个适合您和您的项目。

  1. 使用表达式构建器根据主表单/子表单关系完成条件格式。
  2. 使用单值评估完成基于条件的格式。但是,为了做到这一点,您需要确保您正在评估的值是表的一部分,或者更有可能查询您具有表单 b

无论您选择哪种方式,请务必确保您正在评估的变量或控件产生格式正确的结果。这样就成功了一半!

更多信息:

http://www.iaccessworld.com/conditional-formatting-for-subform-or-datasheet-form/ https://bytes.com/topic/access/insights/868555-demo-conditional-format-subform-unlimited-colours

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多