2011-04-17 75 views
0

我有一个数据集的报告:添加where条件Reporting Services报表

从记录中选择字段1,字段2,字段3,字段N ... 内部联接客户对customers.customer_id = records.customer_id

Reporting Services中,我如何编程添加 - “其中字段3 = 'SomeData'”

或做我必须改变我的SQL来 - 选择字段1,字段2,字段3,字段N ... 从记录 内部加入customers.customer_id = records.customer_id 其中Field3 = @ Field3Parameter

并在运行时设置我的参数?

我想让我的客户能够从超过100个字段中进行选择,而不想将每个字段都设置为参数。

提前致谢!

回答

0

“我希望让我的客户有来自超过100个 领域选择 能力,不希望有设置 每一个参数。”

客户当前如何选择字段?如果这是一个一蹴而就的要求,那么你几乎陷入了过滤器或参数(如Cory指出的那样),或者构建了动态SQL,这带来了它自己的问题。

另一种选择:根据业务逻辑的复杂程度,您可以使用一些包含相关项目的多选参数,并在存储过程中执行检查。例如,具有如下所示的多选参数,并在存储过程中抽出客户选择的选项并在WHERE子句中实现它们。你得到的结果与Cory提到的一样,但减少了参数。

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

您既可以在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)) ... 

这可以让你离开你的报表参数可为空或有默认设置为NULL值的“全部”选项。我意识到你不需要创建参数,但是如果你使用2008报告,它会自动从你的SQL中为你创建你的参数列表。尽管如此,你仍然需要创建报表参数,但我认为没有办法解决这个问题。

+0

ok科里..感谢您的帮助.. – duckmike 2011-04-18 14:17:39