MS Access 查询:使用传递的参数记录列表或参数“ALL”生成整个列表

问题描述

我正在尝试将参数传递给我在标准字段中的查询。该参数包含在组合框 cboReportSender 的表单中。 cboReportSender 包含我为其运行报告的部门列表。列表中还包含“ALL”。选择此项后,我希望报告显示所有记录。我确定查询正在寻找一个字面上包含“Like *”的字段 我是不是从错误的角度来看这个?

IIf([Forms]![frmRunReport]![cboReportSender]=Trim(" ALL"),"Like *",[Forms]![frmRunReport]![cboReportSender])

解决方法

首先,我想知道您的组合框是选择了数字值还是字母数字值。但是,当我创建一个用于测试的数据库时,与运算符 Like * 结合使用时都不适合我。我需要输入 Like '\*' ,在星号前后各加一个引号。
更妙的是,添加带有数字和字母数字值的这个倒逗号的作品。

我需要更改的第二件事是添加第二个类似操作符。最后,您的标准将变为:
IIf([Forms]![frmRunReport]![cboReportSender]=Trim(" ALL"),"Like '*'","Like '" & [Forms]![frmRunReport]![cboReportSender] & "'")

,

考虑在组合框选择 ALL 时返回字段本身。

SELECT ...
FROM ...
WHERE myDepartmentField = IIf(
    TRIM([Forms]![frmRunReport]![cboReportSender]) = 'ALL',myDepartmentField,TRIM([Forms]![frmRunReport]![cboReportSender])
)

如果组合框为空,则使用 NZ 默认为字段本身。

WHERE myDepartmentField = IIf(
    TRIM([Forms]![frmRunReport]![cboReportSender]) = 'ALL',TRIM(
         NZ(
             [Forms]![frmRunReport]![cboReportSender],myDepartmentField
        )
    )