SSRS - 表达太多

时间:2014-07-15 17:57:02

标签: reporting-services ssrs-2008

我对整个SSRS业务感到陌生......在尝试创建我的第一份报告时,我遇到了两个主要问题...

- 我知道可能有更好的方法去做我想要完成的事情 - 运行需要16分钟

问题:我需要计算"卡"在给定(用户选择的)会计月份期间激活/停用(按天分解) - 我的一个问题是来自(DataSet1 - 其中包含我需要的信息必须)仅包含的开始和结束日期会计月份(我没有日历表)

所以(从截图中)(第1栏和第34栏; ACM START DT Short"我手动添加表达式(29)以获取我需要的日期..

enter image description here

由于我只有开始和结束日期,所以我在第一行和最后一行使用这些属性,其余的我使用以下表达式(将日期增加1)

=Fields!CUBD_CareDay_Period_End_DT_SHORT.Value
=DateAdd(DateInterval.Day,1,Fields!CUBD_CareDay_Period_Start_DT_SHORT.Value)
=DateAdd(DateInterval.Day,2,Fields!CUBD_CareDay_Period_Start_DT_SHORT.Value)
=DateAdd(DateInterval.Day,3,Fields!CUBD_CareDay_Period_Start_DT_SHORT.Value)

.
.
.
.
=DateAdd(DateInterval.Day,29,Fields!CUBD_CareDay_Period_Start_DT_SHORT.Value)
=Fields!CUBD_CareDay_Period_End_DT_SHORT.Value

我发现这真的很愚蠢,我确信有更好的方法可以做到这一点......

是否有办法(例如)编写一些代码来执行类似的操作(见下文)并将结果(日期)转储到我的第一列

/我的意思是start_date + 1是将start_date增加一天

i=1
If (start_date + i) < end_date
  i++
  then return start_date+1
          else return end_date

有可能吗?如果是这样,怎么样?任何可能有帮助的文章?

1 个答案:

答案 0 :(得分:1)

我会放弃这个设计(SSRS表达式)并在数据集中解决这个问题 - 我希望它是一种SQL形式。

如果您没有日历表,我会使用虚拟数字表,例如

http://sqlmag.com/sql-server/virtual-auxiliary-table-numbers

您可以交叉连接到虚拟数字表以生成所需的行范围。

此方法还应解决您的性能问题。