【问题标题】:SSRS/.net setup a dynamic where clause in the datasetSSRS/.net 在数据集中设置动态 where 子句
【发布时间】:2016-02-23 15:23:27
【问题描述】:

更新版本

以上是我的数据集之一

我的目标是拥有 WHERE 部分,例如动态出现或不出现,取决于.net代码生成的内容

结果会是这样的

FROM table_name %string%

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

从 TableV_EtablissementsListeActifs WHERE cdt1 = 'test1' OR cdt2 LIKE '%somosa%' 中选择 Ent_SE_Devise、EntId_CodeJur_Code、Ent_SE_APE_ICS、Ets_Co_NonEnvoi、Ets_Code_Retour2

或者像这样的条件

从 EtablissementsListeActifs WHERE (cdt1 IS NOT NULL AND cdt2 <> 'Yes') OR cdt3 IS NOT NULL 中选择 Ent_SE_Devise、EntId_CodeJur_Code、Ent_SE_APE_ICS、Ets_Co_NonEnvoi、Ets_Code_Retour2

或者根本没有条件

从 EtablissementsListeActifs 中选择 Ent_SE_Devise、EntId_CodeJur_Code、Ent_SE_APE_ICS、Ets_Co_NonEnvoi、Ets_Code_Retour2

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

从 EtablissementsListeActifs 中选择 Ent_SE_Devise、EntId_CodeJur_Code、Ent_SE_APE_ICS、Ets_Co_NonEnvoi、Ets_Code_Retour2,其中 cdt1 不为空且 col1 在 @Iu_Ets

这不是诀窍

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

【问题讨论】:

  • 使用动态查询,查看this
  • 嗨@alejandrozuleta 感谢您的评论。我只是想知道是否没有更简单的方法来做到这一点......
  • 我认为这是进行动态查询的更简单的方法。
  • 哦啦啦...@alejandrozuleta
  • 在您在右侧发布的图片中查找 Fx 按钮,单击它,您将看到用于放置表达式的文本区域,您可以使用如下内容:IIF(my_condition_is_true,"select * ...", "select *...")

标签: .net reporting-services ssrs-2012


【解决方案1】:

我会在报表(不是数据集)中添加一个名为“Criteria_String”的参数。默认值为单个空格(无条件)。您可以将 WHERE 子句从 .net、URL 或其他场景的任何位置传递给该参数。

然后在“数据集属性”窗口中,我将复制您现有的 SELECT 代码(不包括 WHERE 子句),单击 fx 按钮并输入以下内容:

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

【讨论】:

  • 嗨@mike-honey,听起来我有一个答案......让我仔细检查一下
  • The default would be an single space (no criteria) 是什么意思?
  • 在所有参数都填满之前,SSRS 不会运行(它们确实有“可选”参数,但 UI 很笨重,通常会避免使用)。每个 SSRS 参数都有一个默认值设置。我会将其设置为单个空格字符。这将连接到 SELECT 语句,而不会导致任何数据过滤。这将允许报告运行(例如用于测试)而无需输入 WHERE 子句。
【解决方案2】:

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

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

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

在不知道您要完成什么的情况下,我和这里的其他受访者无法为您提供比这更多的指导。但我建议您查看表达式中的MSDN documentation。尤其要熟悉 IIF 函数,这是在查询中包含条件文本的好方法。此外,this Stack Overflow 问题的答案包含对基于表达式的查询与基于编辑器的查询的很好讨论,还包括基于表达式的查询的另一个示例。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 1970-01-01
    • 2023-03-11
    • 2015-10-17
    相关资源
    最近更新 更多