【问题标题】:Conditional WHERE Statement in Access 2010Access 2010 中的条件 WHERE 语句
【发布时间】:2014-09-28 17:41:43
【问题描述】:

我在 Access 2010 中有一个子报表,它根据搜索表单中的条件列出项目。在此表单中,用户可以选择 ProjNo,或将其留空。如果有 ProjNo,那么子报表应该只打印那个。如果它是空白的,那么它应该显示所有这些。

我正在尝试设置一个可以执行此操作的 SQL。但是,我遇到的问题是,当我尝试搜索所有项目时 - 即。 ProjNo 在搜索表单中留空 - 它只显示第一个项目的信息。

SELECT Index.ProjNo, Index.Year, Index.Route, Index.Area, 
Index.[Value], Index.[Updated], 
Index.Page, Val(Nz([route],0)) AS routeNum
FROM [Index]
WHERE (((IIf([Activity].[ProjNo]<>"",[Index].[ProjNo]=[Activity].[ProjNo],
[Activity].[ProjNo] IS NULL));

我不太擅长 SQL,因此非常感谢任何帮助。

【问题讨论】:

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


    【解决方案1】:

    使用LIKEIIF()NZ()

    示例 A: WHERE ProjNo LIKE IIF(searchProjNo="","*",searchProjNo)

    示例 B: WHERE ProjNo LIKE NZ(searchProjNo,"*")

    注意:这种方法可以很好地用于参数化查询,用户可以选择查看一条记录、所有记录或记录的子集(例如,通过使用通配符,例如 123? 或 1*)。

    【讨论】:

    • 这仍然给我同样的问题。
    • 什么是“[Activity].[ProjNo]”?您表明您正在从表单字段中提取搜索条件;您为子报表提供的实际记录源是 SQL 吗?我认为您的问题陈述没有足够的信息。
    • 有两个表:Activity 和 Index。 Activity.ProjNo 是输入项目编号时搜索表单提取的值。子表单使用索引表。原始的 SQL 是 WHERE 行之前的所有内容;它以FROM [INDEX]结尾。
    • 让我们简化一下。基本查询:SELECT * FROM INDEX;从表单字段中选择项目编号的查询:SELECT * FROM INDEX WHERE INDEX.ProjNo=Forms![SearchDialog]![CriteriaField_ProjNo];查询哪个(应该)显示 a) 所有项目或 b) 仅显示输入的项目编号:SELECT * FROM INDEX WHERE INDEX.ProjNo LIKE NZ(Forms![SearchDialog]![CriteriaField_ProjNo],"*").
    • 最后一部分就像说IIF(Forms![SearchDialog]![CriteriaField_ProjNo]="","*",Forms![SearchDialog]![CriteriaField_ProjNo]),它会翻译成{WHERE INDEX.ProjNo LIKE "*"}{WHERE INDEX.ProjNo LIKE {whatever project number was entered in the form field}}。尝试对此进行查询,如果有效,请将其复制到子报表的记录源属性中。
    【解决方案2】:

    忘记条件部分。只需使用常规布尔运算符:

    WHERE [Activity].[ProjNo] = "" OR
          [Index].[ProjNo] = [Activity].[ProjNo]
    

    【讨论】:

    • 这仍然给我同样的问题。
    • 似乎当我包含对 Activity.ProjNo 的引用时,它只在我想要所有项目时才给我第一个项目。当我不这样做时,它会显示所有这些,而它应该只显示一个。
    猜你喜欢
    • 2014-10-04
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 2022-01-14
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多