【问题标题】:Cognos Report Keyword SearchCognos 报告关键字搜索
【发布时间】:2016-08-12 07:43:28
【问题描述】:

我需要在 Cognos 报告中提供关键字搜索选项。 我有 4 个文本框提示关键字。 我需要一个解决方案,根据输入的最多 4 个关键字过滤详细信息字段。 我试过的过滤表达式是:

IF (?p_Details1? IS NOT NULL) THEN ( IF (?p_Details2? IS NOT NULL) THEN ( IF (?p_Details3? IS NOT NULL) THEN ( IF (?p_Details4? IS NOT NULL) THEN (UPPER([DETAILS]) CONTAINS (UPPER(?p_Details1?)) OR UPPER([DETAILS]) CONTAINS (UPPER(?p_Details2?)) OR UPPER([DETAILS]) CONTAINS (UPPER(?p_Details3?)) OR UPPER([DETAILS]) CONTAINS (UPPER(?p_Details4?))) ELSE (UPPER([DETAILS]) CONTAINS (UPPER(?p_Details1?)) OR UPPER([DETAILS]) CONTAINS (UPPER(?p_Details2?)) OR UPPER([DETAILS]) CONTAINS (UPPER(?p_Details3?))) ) ELSE (UPPER([DETAILS]) CONTAINS (UPPER(?p_Details1?)) OR UPPER([DETAILS]) CONTAINS (UPPER(?p_Details2?))) ) ELSE (UPPER([DETAILS]) CONTAINS (UPPER(?p_Details1?))) ) ELSE (1=1)

如果文本框提示之一为空,则报表将返回所有记录。所以似乎是忽略了我的 if 语句。如果所有文本框提示都有数据,则有效。

干杯。

【问题讨论】:

    标签: cognos-10


    【解决方案1】:

    这个过滤器应该适合你:

    (?p_Details1? IS NOT NULL AND UPPER([DETAILS]) CONTAINS (UPPER(?p_Details1?)))
    OR 
    (?p_Details2? IS NOT NULL AND UPPER([DETAILS]) CONTAINS (UPPER(?p_Details2?)))
    OR 
    (?p_Details3? IS NOT NULL AND UPPER([DETAILS]) CONTAINS (UPPER(?p_Details3?)))
    OR 
    (?p_Details4? IS NOT NULL AND UPPER([DETAILS]) CONTAINS (UPPER(?p_Details4?)))
    OR 
    (?p_Details1? IS NULL AND ?p_Details2? IS NULL AND ?p_Details3? IS NULL AND ?p_Details4? IS NULL)
    

    将过滤器视为 Cognos 将应用于每一行的测试可能会有所帮助。它将保留该行(真)或丢弃它(假)。对于关系数据库源,它在内部实际上并没有这种方式工作,但它确实有效。

    过滤器首先检查第一个提示是否有值,并且[详细]数据项包含提示值。如果是,它包括该行并移动到下一行。如果没有,它会移动到测试第二个提示的 OR 语句的下一部分。如果第二个提示有值并且 [详细信息] 数据项包含提示值,则保留该行并移至下一行。对所有四个参数重复此操作。

    如果这些表达式都没有返回 true,那么只有在那时才评估最后一部分。此表达式检查是否所有提示都为 NULL。如果是,则返回所有行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2012-02-22
      • 2010-10-07
      相关资源
      最近更新 更多