【发布时间】:2014-01-15 17:38:06
【问题描述】:
我有一个丑陋的数据库结构 - 表以财政年度命名,如 GL_2011、GL_2012 等。
我需要让用户告诉我他们想从哪个会计年度获取数据,然后构造表名,然后执行查询。
我在构建分配给@SQL_QUERY 和EXECuting 的字符串方面取得了一些成功。但MS Report Builder 似乎在此过程中迷失了方向,并且通常不会在数据集中填充我的字段。有时我会在尝试将查询拼凑在一起时遇到不稳定的错误。
简单示例:
DECLARE @SQL_QUERY VARCHAR(MAX);
SET @SQL_QUERY = 'SELECT ITEM_1, ITEM_2 FROM ' + 'GL_' + CAST(@FISCAL_YEAR_PARM AS VARCHAR(4));
EXEC(@SQL_QUERY)
【问题讨论】:
-
如果你必须使用 dsql 添加 PRINT @SQL_QUERY 行,在 SSMS 中调试时会有很大帮助。
-
您是否考虑过使用视图而不是动态 SQL?另外,你能举个错误的例子吗?
-
本身没有错误 - 报表生成器允许我运行它(在电子表格窗口中结果正确),但是当我单击确定时,我看到数据集没有来自查询的字段。单击“刷新字段”无效。至于意见 - 他们在这里不鼓励。
-
今天我看到一件奇怪的事情发生了。报告正在工作,但我做了一个非常小的编辑并预览了它 - 它工作正常。然后我打开查询以检查我的设置是否正确(没有更改);单击“确定”返回设计级别 - 它使数据集字段变为空白,并且报告将不再运行。显然,动态 sql 存在一些不稳定性。
-
哼。我发现,如果我像 Skinner-monkey 一样“刷新”(实际上只有 2 或 3 次),它通常会填充字段。哦,好吧。
标签: reporting-services parameters