1)单元格显示行号,两种方法实现,相当SQL row_number() order ():,

=Rownumber(Nothing)

=Runningvalue(1,sum,nothing)

 

2)按组区分行号,两种方法实现:

=rownumber("组名")

=runningvalue(1,sum,"组名")

 

3)零除零报错解决方法:

 报表设计面板(编辑处外面空白区),选择报表属性---代码--   自定义代码:

public function divide(x as double, y as double) as double

   if  y=0.0  then

   return 0.0

   else

   return x/y

   end if

   end function

接下来在表达式里输入你要相除的栏位或者数据

=Code.divide(sum(值1),sum(值2))

还有一种方法=A/IIF(B=0,99999999999999,B),但你不能这么写:IIF(B=0,0,A/B) 会产生BUG,不要问为什么,试试就知道。

 

4)SSRS 里实现excel sumifs功能(如果你还不理解excel sumifs 的功能,请先查看):

示例:sum(IIF(Fields!Team.Value="East",Fields!LeaseArea.Value,0))

运行结果是 #ERROR

修改如下:

sum(IIF(Fields!Team.Value="East",cdbl(Fields!LeaseArea.Value),0.00))

原因:采用cdbl将字段转换为双精度值Double,这样类型计算才会正确。

5)lookupset 函数应用:

如果经常使用excel的同事,应该对excel的vlookup 函数不陌生,SSRS 也有类似功能的函数 lookupset,但vlookup 有单条件和多条件查找,这里说SSRS的两个条件使用。

单条件:

=lookupset(数据集1满足条件值列,数据集2满足条件值列,要返回的值,"数据集1名")   就是两个数据集间数据提取。

多条件:

LookupSet(Fields!店铺名称.Value+“| |”+Fields!时间分析类1.Value+“| |”+Fields!时间分析类2.Value,

                   Fields!店铺名称.Value+“|  |”+Fields!时间分析类1.Value+“| |”+Fields!时间分析类2.Value,

                   Fields!货品ID.Value,"DataSet3").Length

 

也可自定义满足固定值,如:

join(lookupset(Fields!mon2.Value+“||”+"营业", Fields!mon2.Value+"||"+Fields!team.Value,Fields!fpqty.Value,"DataSet4"),",")

 

6)VbcrLf 函数应用:

这个函数主要是换行显示效果,相当SQL 的(select 'A' +CHAR(13)+CHAR(10)+'B'),下来介绍SSRS里面如何实现这个功能。

比如你的数据值是这样显示:11-22,现在要 22 在11的下面显示

=left(Fields!비고.Value,instrrev(列值,"-")-1)+vbcrlf+right(列值,len(列值)-instrrev(列值,"-"))  这样22 就自动换行显示了。

7) 显示登录到SSRS 的用户名

表达式里输入=User!UserID

 

8)显示打开报表时所花费的时间

表达式里输入:="RunningTime  " +

CStr(DateDiff("s",Globals!ExecutionTime,Now())\60\60)+ ":" +Format((DateDiff("s",Globals!ExecutionTime,Now())\60) mod60,"00") + ":" +Format((DateDiff("s",Globals!ExecutionTime,Now()) mod 60),"00")

 

9)通过数据集定义选择时间参数

当前月的第一天到最后一天

SELECTCONVERT(DATE,dateadd(dd,-day(getdate())+1,getdate()),112)as date1,

(SELECTCONVERT(DATE,DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,getdate()),120)+'1'),120))as date2

上个月的第一天到最后一天

select   convert(date,dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate())),120)as date1,
convert(date,dateadd(dd,-day(getdate()),getdate()),120)as date2

当前月的第一天到当前天

SELECT CONVERT(DATETIME, LEFT(CONVERT(CHAR(8), GETDATE(),112),6) + '01')  as date1,

(select  convert(datetime,CONVERT(varchar(10), getdate(),120)))as date2

 10)连接数据源的设置

连接字符串内容:Data Source=服务器IP;Initial Catalog=数据名,如图

 

 

 

 

 

 

 

今天先写到这里,改天再继续。。。。。。。。。。

 

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐