Reporting services 如何有时在SQL Report Services上的tablix中应用过滤器,有时在don';T

Reporting services 如何有时在SQL Report Services上的tablix中应用过滤器,有时在don';T,reporting-services,filter,optional,ssrs-tablix,Reporting Services,Filter,Optional,Ssrs Tablix,我正在用VisualStudio做一份报告,我是这类报告的新手。我有一个参数(StringID),在它的属性中我允许多个值。我还有一个带有以下过滤器的tablix: 表达式:[@ExternalID]-运算符:在--值中:[@StringID] 它工作得很好,但我也希望允许用户选择所有注册表(即,不按StringID筛选),如果此字段为空,则显示所有外部ID为空的注册表,这不是我想要的。因此,问题是: 我可以有一个可选的过滤器或具有此功能的东西吗 最简单的解决方案可能是修改查询以根据参数值进行选

我正在用VisualStudio做一份报告,我是这类报告的新手。我有一个参数(StringID),在它的属性中我允许多个值。我还有一个带有以下过滤器的tablix:

表达式:[@ExternalID]-运算符:在--值中:[@StringID]

它工作得很好,但我也希望允许用户选择所有注册表(即,不按StringID筛选),如果此字段为空,则显示所有外部ID为空的注册表,这不是我想要的。因此,问题是:


我可以有一个可选的过滤器或具有此功能的东西吗

最简单的解决方案可能是修改查询以根据参数值进行选择-类似于:

...
and (ExternalID in @StringID or @StringID = '')
...
我同意马克的看法

再进一步,您可能需要修改查询以覆盖以下情况:所有ExternalID、ExternalID在传递的@StringID中,或者ExternalID为空。获取空值的一种方法是使用不在数据中的“魔术值”,例如:

...
AND (
    --get all 
    @StringID IS NULL OR 
    --get in passed string 
    ExternalID IN @StringID OR 
    --"magic value" - get empty "ExternalID"
    (
     @StringID = '_EMPTY_' AND 
     ISNULL(ExternalID, '') = '' 
    )
...

您正在访问SQL数据源吗?如果是,您在Tablix中而不是在查询中进行筛选是否有原因?因为我不知道如何选择性地对查询进行筛选。我的意思是,我怎么能有时用“where”,有时不用?