首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么不能在SSRS中的查询参数表达式中使用聚合和查找函数?

为什么不能在SSRS中的查询参数表达式中使用聚合和查找函数?
EN

Stack Overflow用户
提问于 2013-12-02 21:34:04
回答 2查看 5.6K关注 0票数 1

如果用户从多值参数中选择all,则使用if来运行一个查询,如果没有,则使用另一个查询。所以我想比较一下数据集中选定的参数和行。然而,我得到了这个错误:

“用于dataset 'DataSet2‘中的参数'DataSet2’的表达式包括一个聚合或查找函数。聚合和查找函数不能用于查询参数表达式。“

以下是给出问题的部分:

代码语言:javascript
代码运行次数:0
运行
复制
IIf(Parameters!SomeOptions.Count < COUNTROWS("SOME_LIST"), ….

当然,用COUNTROWS("SOME_LIST") (它返回的值)来补充15很好。有人知道为什么会发生这样的事吗?

EN

回答 2

Stack Overflow用户

发布于 2013-12-02 21:41:09

在没有IsSelectAll标志的情况下,这里有一个解决方案:

  1. 添加另一个名为InternalParameter_SomeOptions的内部参数。
  2. 将默认值和可用值设置为与SomeOptions相同的数据集。
  3. 将表达式设置为=IIF(参数!SomeOptions.Count <> <> nothing,Join(SomeOptions.Value!SomeOptions.Value))
票数 6
EN

Stack Overflow用户

发布于 2021-04-30 05:51:20

如果您有一个多选择参数,其数据源是dataset,并且您想知道是否检查了所有数据集,那么在您的报表数据集中(如SQL)中要正确筛选,请不要再看了!

这有什么关系?假设您有一个dataset ( list作为参数的数据源,保存在服务器上供反复重用),用于显示供应商列表,供用户选择一个或多个(多个)。如果那张名单是一万长的呢。您不想使用: WHERE VENDOR_ID IN(@VENDOR)。如果列表足够长,它就会爆炸,您将不得不在SSRS日志中查找错误。因此,这就是为什么我们需要检查是否全部被选中。

  1. 创建一个与dataset参数相同的新参数(因此它们都使用相同的数据集并具有相同的默认值),确保将其设置为多选择和隐藏(您不希望用户看到它)。我把我的名字命名为--所有的地方--是我的参数的名字,便于区分。

  1. 对于用作报表数据的数据集,添加一个附加参数。我喜欢叫它@ is --AllChecked-这是我的参数的名称。它被命名为布尔值(1表示true,0表示false)。在这个例子中,它将被命名为@IsVendorAllChecked。

  1. 在默认值表达式中,检查每个报表参数的计数是否相同(用户使用的值和重复值),并返回一个值,如果不是相同的0,则返回1。例如=IIF(参数!Vendor.Count=参数!VendorAll.Count,1,0)

  1. 在您的报告数据集中,计算参数值并在SQL中相应地操作: where (@IsVendorAllChecked=1和vendor_id = vendor_id)或(@IsVendorAllChecked=0和vendor_id In (@Vendor))

@Vendor显然是用户交互的参数。

一直想做贡献。SE:报表生成器检查是否全部选中SE:报表生成器如何检查是否全部选中SE:报表生成器参数查询表达式不能使用聚合

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20338311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档