在运行时向SQL添加Where子句

本文关键字:Where 子句 添加 SQL 运行时 | 更新日期: 2023-09-27 17:50:00

我是SSRS新手,遇到了一些麻烦。

我有一个已部署的报告,我可以显示这个报告在项目中使用Microsoft.Reporting.WebForms.ReportViewer。这很好,但是现在我必须编写一些代码来改变在我的数据集中使用的查询:我需要得到我的sql,并修改它(把一些"在哪里…"、"存在",等等)-然后将SQL放回报告中,然后执行/显示报告。

我熟悉参数,但参数不能满足我的需求。

在运行时向SQL添加Where子句

用于数据集的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)