SSRS - 动态字段

时间:2012-12-12 16:26:56

标签: sql-server-2008 tsql ssrs-2008

假设:

  • SQL Server 2008 R2
  • SSRS 2008
  • Humble Programmer

考虑两个表:

CREATE TABLE PERSON
(
    PersonID INT,
    Name VARCHAR(100)
)

CREATE TABLE PERSON_EXTENDED
(
    PersonExtendedID INT,
    PersonID INT,
    DOB DATETIME,
    FavoriteColor VARCHAR(100)
)

进一步考虑以下查询加入表格,表明他们的关系。

SELECT
    *
FROM
    PERSON AS P
    JOIN PERSON_EXTENDED AS PE ON (P.PersonID = PE.PersonID)

为了给出我想要创建存储过程的整体概念,该存储过程将填充SSRS报告的字段选择参数。然后使用所选参数将该参数作为参数传递给另一个存储过程,该存储过程使用所选字段创建报告。

我的想法最初类似于以下内容,然而产生了2个问题。首先是两个表中1和2的重复常数。其次是重复列名“PersonID”。

SELECT
    C.COLUMN_NAME,
    C.ORDINAL_POSITION
FROM
    INFORMATION_SCHEMA.columns AS C
WHERE
    C.TABLE_NAME = 'PERSON'
    OR C.TABLE_NAME = 'PERSON_EXTENDED'

有什么想法?额外的功劳是以可扩展的方式执行此操作,并包含某种“显示名称”字段,以便最终用户不必处理PersonID,但可以处理“个人识别”。

1 个答案:

答案 0 :(得分:0)

Great Article!

本文是朝着正确方向迈出的一大步,实际上可能是完整的解决方案。对于处于类似情况的任何其他人来说,这当然足够相关。

其中一条评论特别有趣:

  

嗨Hari,我使用了隐藏列表达式的替代形式   处理多值参数。

     

= IIF(筛选(参数MultiOption.Value, “6”,真)。长度>!0,假,真)

     

如果在参数中选择了此列,则表示显示此列   名单。在此示例中,6是标签的ID。

     

我有一个这么小的数据集,所以不得不去剪裁   查询并不重要。

我担心这会占用大量资源。