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=資料名,如圖
今天先寫到這裡,改天再繼續。。。。。。。。。。
函式表示式
函式定義有以下兩種方式 一種是函式宣告,一種是函式表示式。函式宣告 在執行 之前會先讀取函式宣告,即函式宣告提公升。函式表示式 常用語法形式是常規的變數賦值語句,即建立乙個匿名函式並賦值給乙個變數。函式表示式在使用之前必須賦值,否則會出錯,這點與函式宣告提公升不同。能夠將匿名函式作為其他函式的值進行...
函式表示式
定義函式的方式有兩種 一種是函式宣告,另一種是函式表示式 函式宣告語法格式如下 function functionname arg0,arg1,arg2 關於函式宣告,有乙個重要的特徵就是函式宣告提公升,意思是在執行 之前會先讀取函式宣告 函式表示式語法格式如下 var functionname f...
函式表示式
函式表示式在使用前必須先賦值。函式表示式,使用前必須先賦值var functionname function arg0,arg1 匿名函式或拉姆達函式 arguments.callee 是乙個指向正在執行的函式的指標,因此可以用它來實現對函式 的遞迴呼叫,function factorial num...