【问题标题】:Filter Access 2010 Subreport by Criteria Not Used In Subreport按子报表中未使用的条件过滤 Access 2010 子报表
【发布时间】:2015-07-16 19:15:47
【问题描述】:

我在 Access 2010 中有一个子报表,它基本上充当索引/目录。用户可以使用搜索表单按特定标准过滤项目。只有匹配的报告才会出现在报告和索引中。报告过滤得很好,但索引没有。

一些标准直接在索引表中,取自索引表(面积、年份、项目)。其余的来自 Activity 表,不会出现在 Index 中。

这是我用来根据索引页面中显示的条件过滤索引的代码,它工作正常。

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 不是我的强项,如果有任何建议或建议,我将不胜感激。

【问题讨论】:

    标签: sql ms-access report ms-access-2010 subreport


    【解决方案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    
        )
    

    【讨论】:

    • 当我尝试运行报告时,它给了我一个空白页。
    • 另外,Activity 表中的字段比Index 表中的字段多。
    • OK,要使用UNION查询,你必须有完全相同数量的字段,所以对于索引表,你可以放入一些占位符,像这样:UNION SELECT Field4, Field5, Field6, '','',0,0 ---- 为文本字段添加单引号,为数字字段添加零(这些字段类型必须与第一个 SELECT 语句中的字段类型匹配)。拥有相同数量的字段后,您可能会看到数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多