我在Access 2010报告中有一个索引页面,它根据一系列搜索条件提供项目列表。用户可以指定约20个字段。
例如,如果用户在2015年开始的区域A中搜索项目,则应该调出符合这两个规范的项目。如果他们搜索特定项目编号,则应仅列出该编号。如果他们留空,所有项目都应该出现。
每当我尝试运行报告时,与项目相关的页面都很好,但索引 - 基本上是一个包含一些附加信息(起始年份,区域......)的目录 - 是空白的。我试图使用SQL来显示报告中包含的项目列表。
SELECT * FROM [INDEX] AS i
WHERE
i.area = Forms![SearchForm]![txtArea]
AND i.year = Forms![SearchForm]![txtStartYear]
AND i.ProjNo = Forms![SearchForm]![txtProjNo]
;
我正在与几个领域合作,开始至少开始工作。我对SQL并不擅长,我真的很感激任何帮助。
答案 0 :(得分:2)
对于一个文本框,例如 Forms![SearchForm]![txtProjNo] ,你想...
这个要求实际上很容易转换成SQL:
driver.set_page_load_timeout(10)
将该SQL与上面的简单语言解释进行比较。
假设第一个部分是清除的,请添加第二个文本框的条件。
WHERE
(
i.ProjNo = Forms![SearchForm]![txtProjNo]
OR Forms![SearchForm]![txtProjNo] Is Null
)
从那里,为每个剩余的字段/文本框对添加额外的WHERE
(
i.ProjNo = Forms![SearchForm]![txtProjNo]
OR Forms![SearchForm]![txtProjNo] Is Null
)
AND
(
i.area = Forms![SearchForm]![txtArea]
OR Forms![SearchForm]![txtArea] Is Null
)
件。
注意我假设如果用户没有输入搜索值,则文本框值为Null。但是,如果它们实际上是空字符串(AND (field_name = text_box OR text_box Is Null)
)而不是Null,
用''
代替OR Len(Forms![SearchForm]![txtArea]) = 0
或者,如果“空白”文本框可以为空或OR Forms![SearchForm]![txtArea] Is Null
,请使用此代码:''