使用来自带有复选框的表单的输入进行查询

Query Using Input From A Form with A Checkbox

提前感谢大家的时间和关注。

我正在为我的工作做一个非常简单的数据库,它太大而不适合我们通常在这里使用的 excel 电子表格。我提前道歉,因为我对访问的了解非常有限,但必须弄清楚。

我有大约 1,150,000 条记录,需要能够按以下条件进行搜索:部件号 (txtPK)、步骤 (txtStep)、跳过百分比 (txtPer) 和瓶颈? (chkARD); ARD 在数据库中为 "Y" 或 "N".

此代码用于仅显示 Y 或仅显示 N:

IIf([Forms]![Skips_Form]![chkARD],"Y", "N")

但是,当我尝试将其调整为显示“*”而不是 "N" 时,它 returns 没有记录,而不是所有记录。

IIf([Forms]![Skips_Form]![chkARD],"Y", "*")

我的愿望是在选中复选框时仅显示带有 "Y" 的记录, 并在未选中时显示所有记录。

大概您在查询的 where 子句中使用了这些 iif 语句,并与 = 运算符结合使用 - 例如:

select *
from YourTable
where ARD = IIf([Forms]![Skips_Form]![chkARD],"Y", "*")

如果确实如此,那么,当 iif 语句的 else 参数被 returned 时,SQL语句变为:

select *
from YourTable
where ARD = "*"

因此,这将 return 条 ARD 字段的文字值为 "*" 的记录。

相反,您应该使用 like 运算符,这将允许星号等通配符匹配任何值,例如:

select *
from YourTable
where ARD like IIf([Forms]![Skips_Form]![chkARD],"Y", "*")

或者,使用一些简单的布尔逻辑,例如:

select *
from YourTable
where (not [Forms]![Skips_Form]![chkARD]) or ARD="Y"

完成工作SQL代码 谢谢李 Mac

SELECT Data.POS, Data.PK, Data.[Step], Data.[ARD?], Skips.Skips, Skips.Total, 
Skips.[Skips %], Data.[OPERATION DESCRIPTION], Data.CHARGE_NUMBER, Data.[MDM_PN],
Data.[PlanVer], Data.[PlanRev], Data.[Task_Desc], Data.[Prod Version]

FROM Data INNER JOIN Skips ON Data.POS = Skips.POS

WHERE 
(((Data.POS) Like "*" & [Forms]![Skips_Form]![txtPK] & "*") 
AND ((Data.[Step]) Like "*" & [Forms]![Skips_Form]![txtStep] & "*") 
AND ((Data.[ARD?]) Like IIf([Forms]![Skips_Form]![chkARD],"Y","*")) 
AND ((Skips.[Skips %])>=[Forms]![Skips_Form]![txtPer])) 

OR 
(((Data.POS) Like "*" & [Forms]![Skips_Form]![txtPK] & "*") 
AND ((Data.[Step]) Like "*" & [Forms]![Skips_Form]![txtStep] & "*") 
AND ((Data.[ARD?]) Like IIf([Forms]![Skips_Form]![chkARD],"Y","*")))

ORDER BY Skips.[Skips %];