0

我想在 SSRS 中创建一个报告,它接受来自用户的 SQL 查询(可能是字符串),然后执行它并显示结果。我尝试使用以下查询创建报告

SELECT @select
FROM @from
WHERE @ where

并计划向用户显示 3 个文本框以获取每个输入。但这在创建报告本身时给了我错误。
有什么建议吗?

4

1 回答 1

1

您可以将数据集设置为使用表达式而不是硬编码查询,但您需要使用嵌入式数据源而不是共享数据源。使用嵌入式数据源时,单击 fx 按钮(表达式按钮)以放入解析为 SQL 查询的表达式。您可以在如下表达式中使用从用户那里捕获的三个参数:

="select " + @select + " from " + @from + " where " + @where

这种方法的问题在于 Reporting Services 将查询解析为一组字段,然后在报表布局中定义这些字段。如果您可以保证每次查询执行中的字段数量相同,并且如果您可以使用别名(column_1、column_2 等)将列名转换为通用列名,那么您可以创建一个报表布局,它将显示查询结果。我非常怀疑要在 Select 参数中输入列名的人是否想要输入(或知道输入)columnA 作为column_1,columnB 作为column_2,等等,但我可能是错的。更大的问题是您无法验证每次使用的列数是否正确。我想您可以在报告中编写自定义函数并在需要时填写额外的列。

您在验证每个参数中的用户输入时也会遇到问题 - 但您也可以编写一个自定义函数来处理这个问题。底线是它不是微不足道的,也不是 SSRRS 的预期使用方式。但是如果你投入足够的工作,可能有一种方法可以让它做你想做的事。

于 2012-08-10T22:43:26.240 回答