根据 s-s-rS 中的参数更改数据库

Posted

技术标签:

【中文标题】根据 s-s-rS 中的参数更改数据库【英文标题】:Change database based on parameters in s-s-rS 【发布时间】:2020-12-09 09:20:12 【问题描述】:

我正在尝试使用报表生成器从我们的 SQL 服务器检索数据。由于我们对不同的客户有不同的数据库我想切换数据库,所以我查询的表在每个数据库中都有相同的名称。

我的想法是使用参数,所以这是我想出的:

use @db

Select H.TK_RC, R.Result_Description, count(*) as aantal from dbo.TK_HISTORY as H
LEFT JOIN CWESystemConfig..Result_Code as R on H.Project_ID = R.Project_ID and H.TK_RC = R.Result_Code
Where R.Result_Group = 1 and  H.Project_ID = @pid and H.TK_CD between @startdate and @enddate
group by H.TK_RC, R.Result_Description

代码本身正在运行,我遇到的问题是当我在报表生成器中创建数据集时。我认为这是因为报告生成器找不到起点(当然)它不断抛出“定义查询参数”弹出窗口,无论我做什么都会给我错误: 无法更新查询的字段列表。验证您是否可以连接到数据源等。

如果我删除 use @db 它确实有效,所以这就是问题所在。我可以看到问题,因为这是一个变量,报表生成器没有看到有效的查询。

我就是无法让它工作,任何人有修复或解决方法的建议吗?

【问题讨论】:

【参考方案1】:

您应该能够通过使用表达式作为数据源连接字符串来做到这一点。无需在数据集查询中使用USE 语句。

对于到 SQL Server 的简单连接,您可以使用类似

="data source=mysqlServer;initial catalog=" & Parameters!db.Value

@db 参数在哪里包含数据库的名称

注意事项:

您必须使用嵌入式数据源 - 您不能在共享数据源中使用表达式 您应该使用固定连接来设计和测试报告,然后在您满意后,更改连接以使用表达式。

这是您应该查看的屏幕截图

【讨论】:

以上是关于根据 s-s-rS 中的参数更改数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 startdate 和 enddate 参数隐藏 s-s-rs 报告生成器中的列?

s-s-rS 2008 动态参数

s-s-rS 报告 - 如何使参数灵活

s-s-rS 根据条件逻辑更改部分表达式的颜色

参数标签 IF 语句的 s-s-rS 表达式

更改前面的参数时未刷新 s-s-rS 参数值(全选)