【问题标题】:Determine if Any Row Meets Certain Condition in Dataset确定任何行是否满足数据集中的特定条件
【发布时间】:2020-10-31 01:49:25
【问题描述】:

我正在 Visual Studio 中创建一个报表,并且我有一个从存储过程返回行的数据集。每行都有一个列,其中包含一个日期。我还有另一个日期作为参数传递给报告。我想浏览这些行,并检查它们中的任何一个的日期是否小于 date 参数。有没有办法为基于此逻辑设置的报告创建布尔变量?

这是我目前拥有的,但我收到一条错误消息“references outside of a data region must be contained within aggregate functions which specify a dataset scope

=IIF((Fields!ColumnDate.Value, "Dataset") < Parameters!ParameterDate.Value, "value 1", "value 2)

【问题讨论】:

  • 我认为您唯一的问题是在不需要时引用数据集。只需删除, "Dataset",它应该可以在已经使用该数据集作为源的表中工作。使用, "Dataset" 时,您指的是整个数据集,并且表达式需要一个聚合函数来获取一个值,例如 MAX、MIN、FIRST ......但是由于您是逐行进行,因此您不应该使用数据集参考。

标签: reporting-services


【解决方案1】:

我能够通过使用 Min 仅将最低日期与参数进行比较来找到解决方法:

=IIF(Min(Fields!ColumnDate.Value, "Dataset") < Parameters!EndDate.Value, "value 1", "value 2")

【讨论】:

  • 您所说的DataSet 可能是DataTable。 DataSet 包含 DataTable 等。 DataTable 包含行和列。理顺词汇后,事情会变得容易一些。
  • 我不确定那行代码的上下文,但 IIF 已被替换为 If(Boolean expression, true, false),这很有用,因为它是简短的)
  • 词汇是正确的,这是 SSRS,DataSet 和 IIF() 函数一样有效。问题是问题被标记为 VB.Net 以及报告服务。我已经删除了标签
  • 这是你想要的吗?这只是将整个数据集的 HIGHEST 值与参数进行比较,而不是比较每一行数据。如果您正在寻找任何低于参数的值,那么您应该使用 MIN。
猜你喜欢
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多