报表生成器表达式

时间:2017-04-07 21:57:44

标签: expression reportbuilder

我是Report Builder的新手,并且遇到了一些我试图在报告中实现的表达式的问题。我得到了标准的工作,但是当我尝试任何区别时,我会收到错误消息。在过去几周,我尝试了很多组合,阅读表达帮助,谷歌和在互联网网站上查看其他问题。为了减少我的挫败感,我甚至会跳到其他表达方式并离开,希望我会有不同的洞察力回来。  它可能是一些简单的东西,或者我不知道写表达式的东西。  我希望有人可以帮助这些表达;它们是我得到最少错误的版本(通常只是预期的表达)并显示我想要完成的任务。

=IIF((Fields!RECORDFLAG.Value)='D',COUNTDISTINCT(Fields!TICKETNUM.Value),0)
=IIF((Fields!TRANSTYPE.Value)='1' and (Fields!RECORDFLAG.VALUE)='A' or 
  'B',SUM(Fields!DOLLARS.Value),0)
=IIF((Fields!TRANSTYPE.Value)='1' and 
  (Fields!RECORDFLAG.VALUE)='P',SUM(Fields!DOLLARS.Value),0)
=Sum([DOLLARS] case when [RECORDFLAG]='P' then -1*[DOLLARS])

谢谢。

1 个答案:

答案 0 :(得分:0)

  

= IIF((字段!RECORDFLAG.Value)=” d”,COUNTDISTINCT(字段!TICK ETNUM.Value))

错误消息在此处为您提供答案 - 未指定iif()的错误部分。使用=IIF((Fields!RECORDFLAG.Value)=”D”,COUNTDISTINCT(Fields!TICK‌​ETNUM.Value), 0)

  

= IIF((Fields!TRANSTYPE.Value)=" 1"和(Fields!RECORDFLAG.VALUE)=" A"或" B",SUM (字段!DOLLARS.Value),0)

这不是OR在SSRS中的工作方式。使用: =IIF((Fields!TRANSTYPE.Value)="1" and (Fields!RECORDFLAG.VALUE="A" or Fields!RECORDFLAG.Value = "B"),SUM(Fields!DOLLARS.Value),0)

由于您的报告设计,返回0。 countdistinct()是一个聚合函数 - 它意味着用于一组数据。但是,您的iif()仅针对每行进行测试 - 您基本上会说"如果当前行是事物,则计算所有不同的值"这没有意义。有几种方法可以前进:

  • 您可以使用sum()计算特定值在特定条件下发生的次数。这与countdistinct()不同,但如果您使用=sum(iif(Fields!RECORDFLAG.Value = "D", 1, 0)),那么您将获得该集合中RECORDFLAG为D的次数。注意:这需要聚合数据(因此在SSRS中,按Tablix分组)。

  • 您可以使用自定义代码计算集合中的不同值。见https://itsalocke.com/aggregate-on-a-lookup-in-ssrs/。即使您只有一个数据集,也可以应用它 - 只需引用相同的数据集两次。

  • 您可以更改报告的工作方式。您可以对Fields!RECORDFLAG.Value进行分组,并将组过滤到Fields!RECORDFLAG.Value =" D"。然后在您的文本框中,当RECORDFLAG为D时,使用=countdistinct(Fields!TICKETNUM.Value)获取TICKETNUM的不同值。