SSRS/.net 在数据集中设置动态 where 子句

SSRS/.net setup a dynamic where clause in the dataset

更新版本

以上是我的数据集之一

我的目标是让 WHERE 部分动态,例如出现或不出现,取决于 .net 代码

生成的内容

结果会是这样的

FROM table_name %string%

%string%内,可以有这样的条件

SELECT Ent_SE_Devise,EntId_CodeJur_Code,Ent_SE_APE_ICS,Ets_Co_NonEnvoi,Ets_Code_Retour2 FROM TableV_EtablissementsListeActifs WHERE cdt1 = 'test1' OR cdt2 LIKE '%somosa%'

或者像这样的条件

SELECT Ent_SE_Devise,EntId_CodeJur_Code,Ent_SE_APE_ICS,Ets_Co_NonEnvoi,Ets_Code_Retour2 FROM EtablissementsListeActifs WHERE (cdt1 IS NOT NULL AND cdt2 <> 'Yes') OR cdt3 IS NOT NULL

或者根本没有条件

SELECT Ent_SE_Devise,EntId_CodeJur_Code,Ent_SE_APE_ICS,Ets_Co_NonEnvoi,Ets_Code_Retour2 FROM EtablissementsListeActifs

我创建了一个参数 @Iu_Ets,其中,.net 代码放置了这样的字符串

SELECT Ent_SE_Devise,EntId_CodeJur_Code,Ent_SE_APE_ICS,Ets_Co_NonEnvoi,Ets_Code_Retour2 FROM EtablissementsListeActifs WHERE cdt1 IS NOT NULL AND col1 IN @Iu_Ets

这不是把戏

我现在有解决方法,但对于 Anup Aggrawal,您说这是可能的。我在问题中提出的问题是否有意义?

我相信您没有收到令您满意的答案的原因不是SSRS 很少使用,而是您的问题不够具体,无法给出更具体的答案,以及有关的完整教程表达式是一个比这里可以解决的更大的话题。尽管如此,我会尽力提供帮助。

表达式的想法是您可以通过编程方式从很多部分构建一个字符串。例如,一个过于简单的表达式可能是 ="SELECT * " + "FROM MYTABLE",它只是组合了两个字符串,因此它的计算结果为查询 SELECT * FROM MYTABLE.

当然,这个例子不是特别有用。表达式的力量来自于所提供的构建块(例如函数和运算符)的数量,以及可以将它们组合起来以完成您想要的事情的大量方式。为了帮助您,在单击 Fx 按钮时出现的表达式对话框底部提供了这些函数和运算符的列表。

在不知道你想要完成什么的情况下,我和这里的其他受访者无法给你比这更多的指导。但我建议您查看 MSDN documentation on expressions. In particular, familiarize yourself with the IIF function, which is a good way to include conditional text in your query. Also, the answer to this Stack Overflow 问题,该问题包含对基于表达式与基于编辑器的查询的精彩讨论,并且还包括另一个基于表达式的查询示例。

如果您没有编程背景,所有这些对您来说可能仍然很困难。如果是这种情况,那么您应该考虑寻求帮助,而不是尝试自己学习如何编写表达式。

我会向名为 "Criteria_String" 的报告(不是数据集)添加一个参数。默认值为单个 space(无条件)。您可以将 WHERE 子句从 .net、URL 或其他任何地方传递给该参数。

然后在 Dataset Properties window 中,我将复制您现有的 SELECT 代码(不包括 WHERE 子句),单击 fx 按钮并输入以下内容:

= "SELECT ... <existing SELECT statement> " & Parameters!Criteria_String.Value