Reporting services 将where条件添加到Reporting Services报告

Reporting services 将where条件添加到Reporting Services报告,reporting-services,Reporting Services,我有一份包含以下数据集的报告: 选择字段1、字段2、字段3。。。菲尔登 根据记录 在customers.customer\u id=records.customer\u id上内部加入客户 在reporting services中,如何以编程方式添加- 其中Field3='SomeData' 还是必须将SQL更改为- 选择字段1、字段2、字段3。。。菲尔登 根据记录 在customers.customer\u id=records.customer\u id上内部加入客户 其中Field3=@F

我有一份包含以下数据集的报告:

选择字段1、字段2、字段3。。。菲尔登 根据记录 在customers.customer\u id=records.customer\u id上内部加入客户

在reporting services中,如何以编程方式添加- 其中Field3='SomeData'

还是必须将SQL更改为- 选择字段1、字段2、字段3。。。菲尔登 根据记录 在customers.customer\u id=records.customer\u id上内部加入客户 其中Field3=@Field3参数

并在运行时设置我的参数

我希望我的客户能够从100多个字段中进行选择,而不希望将每个字段都设置为参数


提前谢谢

您可以按照您的建议在SQL中进行参数化,也可以在Tablix中作为筛选条件。我更喜欢参数化SQL,将@parameter设置为报表参数值,因为它的性能会更好。我通常遵循这种模式:

SELECT
    c.Field1
    , c.Field2
    , r.Field3
    , ...
FROM
    records r
JOIN
    customers c ON c.customer_id = r.customer_id
WHERE
    ((@Field1Parameter IS NULL) OR (c.Field1 = @Field1Parameter)) AND
    ((@Field2Parameter IS NULL) OR (c.Field2 = @Field2Parameter)) AND
    ((@Field3Parameter IS NULL) OR (r.Field3 = @Field3Parameter)) ...
这允许您将报表参数保留为空,或使用默认值为空的All选项。我知道您不想创建参数,但如果您使用2008报表,它将自动从SQL为您创建参数列表。但是,您仍然需要创建报告参数,我认为没有任何方法可以解决这个问题

我想让我的客户拥有 能够从100多个选项中进行选择 字段,并且不希望必须设置 每个都作为一个参数

客户当前如何选择字段?如果这是一个一成不变的需求,那么就像Cory指出的那样,您几乎被过滤器或参数所困扰,或者构建动态SQL,这会带来它自己的问题

另一个选项:根据业务逻辑的复杂程度,可以使用包含相关项的两个多选参数,并在存储过程中实现检查。例如,使用如下所示的multi-select参数,在存储的proc中拉出客户选择的选项,并在WHERE子句中实现它们。您得到了与Cory提到的相同的结果,但减少了参数

Multi-select Parameter
-----------------------
Include Widgets
Include Completed Sales
Include West Coast 
(lots more options)