【问题标题】:DCount using Multiple Criteria使用多个条件的 DCount
【发布时间】:2020-07-12 18:33:48
【问题描述】:

我不确定为什么我的代码没有返回正确数量的记录。 我有:

counter = DCount("*", "tbl1", "[Check] = FALSE OR DateDiff('d', [CheckDate], 
Date()) > 365 And [Room] = '" & Forms!frmSelect.txbSelect.Value & "'")
checkIndicator.Caption = "(" & counter & ")" & " available!"

似乎[Check] = FALSE OR DateDiff('d', [CheckDate], Date()) > 365 的部分工作正常,但整个代码却不是。提前致谢!

【问题讨论】:

  • 您需要提供更多信息。例如一些数据点、公式给出的结果以及您期望的结果。
  • 您可能需要在 OR 子句周围加上括号。在混合 AND 和 OR 运算符时,括号很重要——想想代数。

标签: vba ms-access


【解决方案1】:

您当前的代码将返回 tbl1 中的记录计数:

  • [Check] = FALSE(对于[Room]任何值)

  • DateDiff('d', [CheckDate], Date()) > 365 [Room] = Forms!frmSelect.txbSelect.Value

根据所需的结果,我猜您要求[Room] = Forms!frmSelect.txbSelect.Value 总是 为真,因此逻辑应该用括号括在下面方式:

"([Check] = FALSE OR DateDiff('d', [CheckDate], Date()) > 365) And [Room] = '" & Forms!frmSelect.txbSelect.Value & "'"
 ^                                                           ^
 |                                                           |
 +----------------- Added parentheses here ------------------+

现在返回 tbl1 中的记录数:

  • [Room] = Forms!frmSelect.txbSelect.Value

  • [Check] = FALSE DateDiff('d', [CheckDate], Date()) > 365

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多