SELECT
CASE Forms!FormName!ComboBox
WHEN Is Not Null THEN (ParentTable.Column)
FROM (Parent)
WHERE (((ParentTable.Column)=Forms!FormName!ComboBox))
ELSE
((ParentTable.Column) FROM Parent END;
好的,我有一个显示父表中记录的表单,我希望能够过滤它。那么上面的SQL代码试图完成的是,如果在组合框中进行了选择,则只选择与该字段匹配的记录。其他情况是该字段为空,它只选择所有记录。我对SQL代码不是很熟悉所以请尽可能解释使用的不同参数。
或者我可以使用某种if语句吗?
答案 0 :(得分:1)
您不能直接在SQL中使用表单参数。您可以参数化查询并传入参数,我们称之为@FormName:
select
case
when @FormName is not null then ParentTable.column1
else ParentTable.column2
end
from ParentTable
where ParentTable.column3 = @FormName
答案 1 :(得分:1)
这里似乎不需要CASE:
SELECT ParentTable.Column
FROM ParentTable
WHERE (Forms!FormName!ComboBox IS NULL)
OR (Forms!FormName!ComboBox = ParentTable.Column)
答案 2 :(得分:0)
注意:我假设您动态绑定Forms!FormName!ComboBox参数的值。
对于MS Access
SELECT <YOUR_SELECT_LIST>
FROM ParentTable
WHERE NZ(Forms!FormName!ComboBox, ParentTable.Column) = ParentTable.Column
对于SQL Server
SELECT <YOUR_SELECT_LIST>
FROM ParentTable
WHERE ISNULL(Forms!FormName!ComboBox, ParentTable.Column) = ParentTable.Column
对于ORACLE
SELECT <YOUR_SELECT_LIST>
FROM ParentTable
WHERE NVL(Forms!FormName!ComboBox, ParentTable.Column) = ParentTable.Column