【问题标题】:Add Where clause at Runtime to SQL将运行时的 Where 子句添加到 SQL
【发布时间】:2014-03-13 17:05:09
【问题描述】:
我是 SSRS 新手,遇到了一些麻烦。
我有一个已部署的报告,我可以显示此报告
在使用 Microsoft.Reporting.WebForms.ReportViewer 的项目中。
很好,但现在我必须编写一些代码来更改
我的数据集中使用的查询:
我需要获取我的 sql,并对其进行修改(放入一些“Where...”,“exists”,
依此类推) - 然后将 sql 放回报告中,然后执行/显示
报告。
我对参数很熟悉,但是参数不能满足我的需求。
【问题讨论】:
标签:
c#
reporting-services
【解决方案1】:
用于数据集的 SQL 语句的表达式就是一个表达式。它可以是您想要的任何东西,包括您构建的字符串。例如,您可以有一个指示如何构建 SQL 的参数:
="SELECT ThisField, ThatField "
& "FROM MyTable "
& IIF(Parameters!AddExistsClause.Value, "WHERE SomeId IN (SELECT Id FROM OtherTable) ", "")
您甚至可以添加对构建 SQL 的自己的 DLL 的引用:
="SELECT " & MyDLL.ReportFunctions.GetFields(Parameters!FieldName.Value)
& "FROM " & Parameters!Database.Value & ".dbo." & Parameters!Database.TableName "
& MyDLL.ReportFunctions.TableJoins(Parameters!FieldName.Value)
& MyDLL.ReportFunctions.WhereClause(Parameters!FieldName.Value)