按子报表中未使用的条件筛选 Access 2010 子报表
Filter Access 2010 Subreport by Criteria Not Used In Subreport
我在 Access 2010 中有一个子报表,它基本上充当 index/table 内容。用户可以使用搜索表单按特定条件过滤项目。只有匹配的报告才会出现在报告和索引中。报告过滤正常,但索引没有。
一些标准直接采用索引形式,取自索引table(地区、年份、项目)。其余来自 Activity table,未出现在索引中。
这是我用来根据索引页中出现的条件过滤索引的代码,它工作正常。
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
)
当我尝试添加不在索引中的 activity table/that 字段时出现问题。
这个代码
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 不是我的强项,我将不胜感激任何意见或建议。
尝试使用 UNION 查询并列出特定字段。两个 SELECT 语句中的字段数必须相同,并且字段的数据类型必须相同。例如,如果 Field1 是长整型,那么 Field4 也应该是长整型(参见下面的示例)。
像这样:
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
)
我在 Access 2010 中有一个子报表,它基本上充当 index/table 内容。用户可以使用搜索表单按特定条件过滤项目。只有匹配的报告才会出现在报告和索引中。报告过滤正常,但索引没有。
一些标准直接采用索引形式,取自索引table(地区、年份、项目)。其余来自 Activity table,未出现在索引中。
这是我用来根据索引页中出现的条件过滤索引的代码,它工作正常。
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
)
当我尝试添加不在索引中的 activity table/that 字段时出现问题。
这个代码
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 不是我的强项,我将不胜感激任何意见或建议。
尝试使用 UNION 查询并列出特定字段。两个 SELECT 语句中的字段数必须相同,并且字段的数据类型必须相同。例如,如果 Field1 是长整型,那么 Field4 也应该是长整型(参见下面的示例)。
像这样:
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
)