按子报表中未使用的条件筛选 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    
    )