【问题标题】:SSRS 2008 .. How to create drop down menu for different databases in same serverSSRS 2008 .. 如何为同一服务器中的不同数据库创建下拉菜单
【发布时间】:2011-11-18 16:11:04
【问题描述】:

请帮帮我……

  1. 数据库DB1,DB2,DB3,DB4,DB5....很少。

  2. 每个数据库都有相同的表 T1、T2、T3.....Tn。 (每个表都有相同的列C1、C2、C3......Cn...但是这些表中的数据不同)

  3. 要求: *查询:* select C1, C2, C3 from T1 inner join T2 on T1.C4 = T2.C4

    所有数据库的查询都是相同的。

  4. 第一步是为数据库 DB1、DB2、DB3、DB4、DB5 创建下拉菜单

  5. 然后选择一个或多个数据库,然后查询应针对选定的一个或多个数据库运行。

我应该选择什么来源以及如何为他们创建数据集?

【问题讨论】:

    标签: reporting-services


    【解决方案1】:

    创建一个名为 SelectedDatabase 之类的参数。

    硬编码其中可用数据库的值。

    将查询表达式更改为:

    ="select C1, C2, C3 from " & Parameters!SelectedDatabase.Value & ".T1 inner join " & Parameters!SelectedDatabase.Value & ".T2 on T1.C4 = T2.C4"
    

    这是一个动态查询的例子 - 你可以找到更多here

    请注意,如果用户可以直接输入将在动态查询中使用的值,您将打开代码面临SQL injection attacks 的风险(强制性 XKCD 参考 here)。这就是为什么你应该硬编码可用值(如果可能的话)。

    【讨论】:

    • 嗨,马克,感谢您的回复。\
    • 谢谢马克。这对我帮助很大。
    【解决方案2】:

    你可以试试这个:

    1. 将所有数据源映射到部署描述符(web.xml/web-config.xml)

    2. 将key作为下拉值传入,根据请求获取数据源

    3. 一旦您拥有正确的数据源,获取连接并执行查询

    【讨论】:

      猜你喜欢
      • 2012-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-09
      相关资源
      最近更新 更多