我在Access 2010中有一个子报表,它基本上充当索引/目录。用户可以使用搜索表单按特定条件过滤项目。只有匹配的报告才会出现在报告和索引中。报告过滤得很好,但索引没有。
某些标准直接采用索引形式,取自索引表(area,year,projno)。其余部分来自活动表,不会出现在索引中。
这是我用来根据索引页面中出现的条件过滤索引的代码,它运行正常。
SELECT *
FROM [INDEX] AS i
WHERE (
i.ProjNo = Forms![SearchForm]![txtProjNo]
OR Len(Forms![SearchForm]![txtProjNo]) = 0
)
AND
(
i.Prod = Forms![SearchForm]![txtProd]
OR Len(Forms![SearchForm]![txtProd]) = 0
)
AND
(
i.year = Forms![SearchForm]![txtStartYear]
OR Len(Forms![SearchForm]![txtStartYear]) = 0
)
当我尝试从活动表中添加不在索引中的字段时,会出现问题。
此代码
SELECT *
FROM [INDEX] AS i
WHERE (
i.ProjNo = Forms![SearchForm]![txtProjNo]
OR Len(Forms![SearchForm]![txtProjNo]) = 0
)
AND
(
i.Prod = Forms![SearchForm]![txtProd]
OR Len(Forms![SearchForm]![txtProd]) = 0
)
AND
(
i.year = Forms![SearchForm]![txtStartYear]
OR Len(Forms![SearchForm]![txtStartYear]) = 0
)
AND (SELECT *
FROM [ACTIVITY] AS a
WHERE (
a.manager = Forms![SearchForm]![txtManager]
OR Len(Forms![SearchForm]![txtManager]) = 0
));
给我一个空白索引,甚至没有标题或页码。
SQL和Access不是我的强项,我真的很感激任何建议或建议。
答案 0 :(得分:1)
尝试使用UNION查询并列出特定字段。两个SELECT语句中的字段数必须相同,并且字段必须是相同的数据类型。例如,如果Field1是Long,那么Field4也应该是long(参见下面的示例)。
像这样:
SELECT Field1, Field2, Field3
FROM [INDEX] AS i
WHERE (
i.ProjNo = Forms![SearchForm]![txtProjNo]
OR Len(Forms![SearchForm]![txtProjNo]) = 0
)
AND
(
i.Prod = Forms![SearchForm]![txtProd]
OR Len(Forms![SearchForm]![txtProd]) = 0
)
AND
(
i.year = Forms![SearchForm]![txtStartYear]
OR Len(Forms![SearchForm]![txtStartYear]) = 0
)
UNION
SELECT Field4, Field5, Field6
FROM [ACTIVITY] AS a
WHERE (
a.manager = Forms![SearchForm]![txtManager]
OR Len(Forms![SearchForm]![txtManager]) = 0
)