You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access日期范围查询异常:遗漏符合条件记录及结果不符问题

Access 查询表单日期范围筛选问题修复

当前问题梳理

  • 表单包含「商品」「开始日期」「结束日期」三个文本框,用于查询Inventory Usage表
  • 现有条件逻辑错误导致两类异常:
    • 仅填写日期范围、商品文本框为空时,查询无结果(期望显示该日期范围内所有记录)
    • 同时填写商品和日期范围时,仅显示该商品,但部分符合日期的记录被遗漏

问题根源

  1. 日期筛选的OR条件逻辑错误:现有日期部分的OR条件重复了Between判断,未处理「日期框为空时跳过筛选」的场景
  2. 多条件组合逻辑混乱:商品与日期的筛选条件未正确分组,导致逻辑冲突

修复方案

方法1:直接修改SQL语句

将查询的WHERE子句替换为以下逻辑,确保每个筛选条件都包含「为空则跳过」的判断,且多条件用AND正确组合:

WHERE 
    (
        [Inventory Usage].[Material] = [Forms]![Traceability_F]![Material]
        OR [Forms]![Traceability_F]![Material] IS NULL
    )
    AND
    (
        [Inventory Usage].[Date Used] BETWEEN [Forms]![Traceability_F]![StartDate] AND [Forms]![Traceability_F]![EndDate]
        OR ([Forms]![Traceability_F]![StartDate] IS NULL AND [Forms]![Traceability_F]![EndDate] IS NULL)
    )

方法2:设计视图中设置条件

若习惯用设计视图操作:

  • 「商品」字段的条件行输入:[Forms]![Traceability_F]![Material],或行输入:Is Null
  • 「Date Used」字段的条件行输入:Between [Forms]![Traceability_F]![StartDate] And [Forms]![Traceability_F]![EndDate],或行输入:([Forms]![Traceability_F]![StartDate] Is Null And [Forms]![Traceability_F]![EndDate] Is Null)
  • 确保两个字段的条件为AND关系(设计视图中同一列的条件为AND,不同或行的条件为OR)

验证场景

  1. 所有文本框为空:两个OR条件的后半部分生效,返回全部记录,符合预期
  2. 仅填日期范围:商品条件的OR后半部分生效(跳过商品筛选),日期条件的前半部分生效,返回日期范围内所有记录
  3. 同时填商品和日期:两个条件的前半部分生效,返回该商品在日期范围内的所有记录

内容的提问来源于stack exchange,提问作者House of Shims

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:01:00