database - 在 MS Access 中创建一个查询,如果未提供输入,则返回所有条目;如果提供输入,则返回所选条目
问题描述
我正在尝试创建一个查询,该查询将接受来自表单的输入(来自一组 3 个单选按钮,一个用于“男性”,一个用于“女性”,一个用于“任一”)并返回指定输入的所有条目.
我对 MS Access 有点陌生,如果这是一个超级基本的问题,我深表歉意。我在网上看了很多以找到解决方案,但找不到有效的解决方案!
到目前为止我的查询是这样的:
IIf([Forms]![AgeRangeQueryForm]![GenderOptionGroup].
[Value]=1,"M",IIf([Forms]![AgeRangeQueryForm]![GenderOptionGroup].
[Value]=2,"F",IIf([Forms]![AgeRangeQueryForm]![GenderOptionGroup].
[Value]=3,([Child Details].[Gender])="M" Or ([Child Details].
[Gender])="F")))
如果它有助于查询的 SQL 代码是这样的:
WHERE ((([Child Details].Gender)=IIf([Forms]![AgeRangeQueryForm]!
[GenderOptionGroup].[Value]=1,"M",IIf([Forms]![AgeRangeQueryForm]!
[GenderOptionGroup].[Value]=2,"F",IIf([Forms]![AgeRangeQueryForm]!
[GenderOptionGroup].[Value]=3,([Child Details].[Gender])="M" Or ([Child
Details].[Gender])="F"))))
我可以在选择男性和女性时为这项工作做这项工作,但不幸的是,如果我选择的话,我也无法正常工作。在这种情况下,无论字段中的性别是什么,它都应该只返回所有条目,但它什么也不返回。任何指针将不胜感激!
谢谢!
解决方案
您的代码的问题是,如果选择了最后一个选项,则生成的WHERE
子句将显示为:
where [Child Details].Gender = ([Child Details].[Gender]="M" or [Child Details].[Gender]="F")
由于[Child Details].Gender
是字符串值,它永远不会等于括号表达式返回的布尔值。
有多种方法可以实现这一点:一种可能的方法是使用like
运算符和choose
函数的组合:
where
[child details].gender like
choose([Forms]![AgeRangeQueryForm]![GenderOptionGroup],"M","F","[MF]")
switch
或者,您可以以类似的方式使用该函数:
where
[child details].gender like
switch
(
[Forms]![AgeRangeQueryForm]![GenderOptionGroup]=1,"M",
[Forms]![AgeRangeQueryForm]![GenderOptionGroup]=2,"F",
[Forms]![AgeRangeQueryForm]![GenderOptionGroup]=3,"[MF]"
)
或者,仅使用布尔逻辑:
where
([Forms]![AgeRangeQueryForm]![GenderOptionGroup] in (1,3) and [child details].gender = "M") or
([Forms]![AgeRangeQueryForm]![GenderOptionGroup] in (2,3) and [child details].gender = "F")
或者,如果您不想限制选择第三个选项时返回的结果,请在上述所有过滤器之前添加:
([Forms]![AgeRangeQueryForm]![GenderOptionGroup] = 3) or
例如:
where
([Forms]![AgeRangeQueryForm]![GenderOptionGroup] = 3) or
([child details].gender = choose([Forms]![AgeRangeQueryForm]![GenderOptionGroup],"M","F"))
推荐阅读
- excel - 为什么用 excel 表计算的偏斜值与用 pyspark/scipy 计算的值不同
- angular - 将 scss 变量导入 Angular 组件
- laravel - 直接返回关系(一对多)值而不是其 Id 的最佳方法是什么?
- python - 即使找到了值,遍历字典也返回 None
- mongodb - 当外部字段和本地字段是对象数组时的MongoDB查找
- javascript - 通过 Javascript 插入服务器端呈现的 HTML
- javascript - 如何修剪 object.values 中的空格?
- java - 有人可以指出这里有什么问题吗
- pytorch - 如何在FP16模式下将pytorch模型转换为TensorRT时保持准确性
- javascript - 安装依赖项后,npm install 会继续显示在其他设备上