提前感谢大家,感谢您的时间和精力。
我正在为我的工作做一个非常简单的数据库,该数据库太大而无法放入excel电子表格,这是我们通常在此处使用的数据库。我提前道歉,因为我对访问的知识非常有限,但必须弄清楚这一点。
我大约有1,150,000条记录,需要能够按以下条件进行搜索:零件编号(txtPK),步骤(txtStep),跳过的百分比(txtPer)和瓶颈? (chkARD); ARD在数据库中显示为“ Y”或“ N”。
此代码仅显示Y或N:
IIf([Forms]![Skips_Form]![chkARD],"Y", "N")
但是,当我尝试使其显示为“ *”而不是“ N”时,它不返回记录,而不是所有记录。
IIf([Forms]![Skips_Form]![chkARD],"Y", "*")
我希望在选中此复选框时仅显示带有“ Y”的记录, 并在未选中时显示所有记录。
答案 0 :(得分:1)
大概是在查询的iif
子句中使用这些where
语句,并结合=
运算符-类似于:
select *
from YourTable
where ARD = IIf([Forms]![Skips_Form]![chkARD],"Y", "*")
如果确实是这样,那么,当返回iif
语句的 else 参数时,SQL语句将变为:
select *
from YourTable
where ARD = "*"
因此,这将返回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"
答案 1 :(得分:0)
完整的工作SQL代码 谢谢Lee 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 %];