Reporting報表開發知識匯總[個人原創]


[個人原創] ,轉發請聲明原文鏈接

了解

a)      SSRS全稱 SQL Server Reporting Services,是依賴於數據庫運行的,是微軟開發的重量級別的BI產品

b)      上手容易,開發簡單,有數據庫服務器就可以了,不需要依賴於IIS運行

c)      可擴展性比較低, 對比那些其他報表來說,確實比較好

d)      可獨立的在SqlServer服務器上運行,也可以內嵌到項目中

 

報表結構

通過查看Reporting的報表,一個完整的報表,包含報表的一些配置(默認字體樣式,自動刷新,語言,容器空白,報告單元類型,報表ID),數據源,數據集,報告部分(相當於容器),報表參數,報表參數布局這幾個主要組成部分,根據報表樣式的不同會有不同的組成部分,比如在報表中內嵌了一個圖片,那么會多一個內嵌式圖片的結構

 

報表版式

限於頁眉頁腳的數據,不能用於主體,比如頁碼,會導致報表報錯

 

  在報表數據的內置字段,是全部可以放在頁眉和頁腳中,部分可以放在主體中

限於主體的數據,不能直接放在頁眉和頁腳,可以通過聚合來實現現在在頁眉,比如求和,平均值等等

 

  在分組數據中,不能直接放到頁眉和頁腳,可以對分組進行分頁,然后顯示First(字段名)顯示到頁眉頁腳中

報表樣式

  下面是分頁報表的所有布局控件

  

 

 

開發工具

a)      開發報表有兩種方式。一種是SSRS,這個是利用報表服務直接創建報表;另外一種是SSDT,是獨立的開發工具,

 

b)      在SqlServer2012版本以前(包括SqlServer2012),安裝數據庫的時候可以安裝SQL Server Business Intelligence Development Studio和Sql Server Reporting Service. 在SqlServer 2012以后,SSDT是需要獨立安裝的

 

 

配置SSRS

a)      先配置SSRS服務器,打開Reporting Server 配置管理器,選擇報表服務器實例

 

 

b)     配置本地服務器,用內置賬戶就可以了,要是給別人用的,選擇配置其他賬戶,在其他賬戶里,注意用戶名是域/用戶名的格式,不知道是什么的可以看看你的系統說明,保存秘鑰,確認

 

 

c)      選擇Web服務URL點擊高級,可以添加,可以修改

 

 

d)     更改數據庫, 本地服務器的話,默認就好,遠程服務器的話,需要報表模式為Sql賬戶,憑據也是

 

 

e)      Web門戶URL: 是你SSRS報表管理頁面的配置,配置完成的話,現在就可以訪問了

創建一個簡單的報表

SSRS方式

                i.          打開你的SSRS管理頁面,在右上角點擊加號(新建)新建文件夾與報表,在SqlServer2012之前,點擊添加報表,在2016以及2016之后,區分了移動報表,分頁報表

               ii.          點擊加號(新建),可以新建文件夾,KPI報表,移動報表,分頁報表,數據源,數據集

       

 

              iii.          分頁報表

              iv.          新建分頁報表會打開Reporting Builder,沒有的話在彈出的頁面選擇獲取Reporting Builder;

               v.          在Reporting Builder首先會給你彈出一個向導,有表格矩陣,圖表,地圖向導,空白報表

       

 

              vi.          首先,選擇創建數據集(可以使用共享數據集),

            vii.          然后,創建數據源,點擊新建,輸入連接字符串,或是生成字符串

           viii.          第三步,通過Sql完成數據集的創建,可以通過可視化操作,也可以點擊編輯為文本輸入sql

(在這里需要的是,字段名稱不能有重復的,不能同時寫兩個以上的查詢語句或不能包含函數操作類的語句)

              ix.          第四部,分組

      

 

               x.          第五步:選擇布局

              xi.          SqlServer2012之前會有第六步選擇樣式外觀

            xii.          最后點擊完成,這樣,一個最簡單的報表就出來了

SSDT方式(支持中文)

           xiii.          Sqlserver2012(包含)之前的版本,打開SQL Server Business Intelligence Development Studio,選擇商業智能項目,創建報表服務項目

           xiv.          VS2017(包含)之后,打開VS,打開VS2017或VS2017 SSDT,選擇商業智能項目,創建報表服務項目

你的電腦數據庫為2016/2017的,VS為2017以下的,抱歉了,只能通過SSRS創建報表

            xv.          選擇項目路徑以及名稱

           xvi.          打開解決方案資源管理器,右擊報表,選擇添加新報表

          xvii.          選擇或新建數據源,點擊編輯可以生成連接字符串

        xviii.          輸入查詢的sql語句

           xix.          選擇表格或矩陣

            xx.          分組

           xxi.          輸入報表名稱

報表數據

a)     報表數據在窗口的左側,要是找不到了,沒關系,在工具欄-視圖-最下面的報表數據

 

 

 

b)     在實際工作中,我們有很多要帶條件的報表,這就是報表參數

報表參數在Report報表中生成一個供用戶輸入數據的框,比如下面這個例子

 

 

 

參數對接到Sql,在Sql中就是不帶聲明的局部變量

SELECT @NAME NAME,@SEX SEX,@AGE AGE,@LIKE [LIKE],@BRITHDAY BRITHDAY

報表分組分頁

分組

a)     在Report中,分組方式有行組和列祖,一般的分組分頁指的是行組

以下方數據做分頁報表

 

 

b)     通過創建報表導航添加報表分組,SSRS分組和SSDT分組通過導航分組的時候有點差異,需要區別一下

          xxii.          SSDT方式

  1. 選擇表格

 

 

 

  1. 把相應的字段放入對應的位置中

 

 

  1. 選擇樣式和是否包含小計

  

 

        xxiii.          SSRS通過導航來分組

  1.  輸入Sql,然后把字段放入對應的字段(SSRS沒有直接的分頁)

 

 

c)     高手操作手動分組

                i.          上面的分組是最簡單的,一下才是分組分頁的核心

               ii.          下面是對報表數據的分組分頁,先展示一下分組前的報表

 

 

              iii.          右擊表格左框,點擊添加組

 

 

在這里看到了有子組和父組,子組是在當前下的組內部的數據再次分組;

父組是對於一類型的數據放在一起組合起來的分組

              iv.           因為我們是要從小往大分,對於蘋果,香蕉這一類的數據進行分組,所以點擊添加父組

               v.           在分組依據中選擇對應的分組字段 CLASS3,添加組尾以方便我們顯示小計

組頭相當於表格的標題頭,組尾就是表格最后用於匯總的尾

 

 

 

 

              vi.          分組效果如下

 

 

            vii.          組內排序

 

 

分頁

分頁是在分組屬性中選中分頁符,勾選分頁,那么一組就會分一頁

常用的報表函數

時間日期類

                i.          獲取當前時間日期,Now(),使用方法 =Now()

               ii.          獲取當前日期,Today() 例子: =Today()

              iii.          格式化字符串,Format(時間,格式) 例子:=Format(Now(),”MM/dd/yyyy hh:mm:ss tt”)

數學類

                i.          加減乘除  +  -  *  /

               ii.          列(組)求和Sum() 例子 =Sum(Parameters!Quantity.Value)

              iii.          列(組)平均值Avg() 例子 =Avg (Parameters!Quantity.Value)

              iv.          列(組)最大值最小值 例子 =Max(Parameters!Quantity.Value)

=Max(Parameters!Quantity.Value)

               v.          求余 Mod 例子 = 5 Mod 2

 

              vi.          列(組)第一個值First() 和 最后一個值Last() 例子

=First(Parameters!Quantity.Value)

=Last(Parameters!Quantity.Value)

            vii.          計數Count()和CountDistinct()

記錄數據的數量,包含重復不包含NULL的 Count()

記錄不重復數據的數量,不包含NULL的CountDistinct()

表格類

                i.           行號 RowNumber() 返回當前組內第幾條數據

               ii.           報表開始運行時間 Globals!ExecutionTime

              iii.           報表總頁碼 Globals!OverallPageNumber ,只能用於頁眉和頁腳

              iv.           當前頁碼 Globals!PageNumber,只能用於頁眉和頁腳

流程

                i.          判斷 IIF

IIF(1>2,”正確”,”錯誤”)

               ii.          流程控制

Switch(Fields!FirstName.Value = “Sue","Susan",

Fields!FirstName.Value = "Bob","Robert")

字符串處理

                i.          字符串切割 Split()函數

a)     返回包含指定數量子字符串的以零為基的一維數組。

b)     常用成員

                         i.          獲取切割后返回數組中某個下標值的Value值  GetValue(下標值)

例子: = Split(“12^34^56”,”^”). GetValue(0)   返回值為 12

                        ii.          獲取切割后返回數組的長度 Length

例子: = Split(“12^34^56”,”^”). Length    返回值為 3

 

支持的Html元素

在Report報表中支持部分的html元素的顯示

標簽

                i.          支持常用的標簽

<b>b</b> <p>p</p> <h1>h1</h1> <h2>h2</h2> <h3>h3</h3> <h4>h4</h4> <h5>h5</h5> <h6>h6</h6> <span>span</span> <strong>strong</strong> <i>i</i> <div>div</div> <a href=>a</a> 等等

支持ul li 無序列表

支持ol li 有序列表 不支持定義樣式

不兼容自定義列表

               ii.          不支持表單類標簽

不支持 table tr td 標簽

不支持 from 等等

 

樣式

              iii.          支持常用的字體樣式,

比如字體加粗,字體傾斜,字體顏色

              iv.          不支持塊元素樣式

比如邊框,圖片,背景色,寬高

 

Report支持VB語言

報表中插入代碼

在報表外空白處右擊,選擇報表屬性,

 

 

點擊代碼,輸入代碼

 

 

 

代碼例子

切割字符串代碼,第一個參數要切割的字符串,第二個參數要分割的分隔符,第三個是下標值,

 

Function SplitStr(Str As String, S As String, Index As Int32) As String

    Dim Temp

    Temp = Split(Str, S)

    Dim Len

    Len = UBound(Temp) - LBound(Temp) + 1

    If Len <= Index Then

        Return ""

    End If

    Return Temp(Index)

End Function

 

在報表中調用代碼

在報表中使用代碼是 Code.代碼方法名(參數para)

 

 

 

報表圖片

支持的格式

Report僅支持 image/bmp,image/jpeg, image/gif, image/png和image/x-png格式

其他格式的圖片會無法識別

圖片的使用

添加外部圖像

外部圖像就是通過地址來訪問的圖像,外部圖像可以存在於報表服務器上,也可以存在於其他網站上.url支持 http://,https://,ftp://,file,mailto

 

操作:

  1. 右擊報表設計視圖,選擇 ”插入” – “圖像”
  2. 在圖像選項的”常規”中,輸入圖像名稱,選擇”圖像源”為”外部”
  3. 在使用此圖像中輸入url
  4. 設置其他屬性

 

  1. 點擊確定

 

  1. 調整大小

在報表中嵌入圖像

嵌入圖像是直接把圖片轉換成base64直接內嵌到Report中,會增大報表的文件大小

 

 

操作:

  1. 右擊報表設計視圖,選擇 ”插入” – “圖像”
  2. 在圖像選項的”常規”中,輸入圖像名稱,選擇”圖像源”為”嵌入”
  3. 在使用此圖像后面點擊導入
  4. 懸着你要導入的圖片
  5. 設置其他屬性
  6. 點擊確定
  7. 調整大小

 

 

導入后的圖片存放於報表內部的EmbeddedImage 的節點下

      

通過數據庫導入圖片

注意:這個方式只支持base64字符串的,而且不包含base64數據頭的

 

 

操作:

  1. 右擊報表設計視圖,選擇 ”插入” – “圖像”
  2. 在圖像選項的”常規”中,輸入圖像名稱,選擇”圖像源”為”數據庫”
  3. 在使用此字段后面選擇字段
  4. 在使用此MIME類型后面選擇base64的圖片格式

 

  1. 懸着你要導入的圖片

 

  1. 設置其他屬性

 

  1. 點擊確定

 

  1. 調整大小

 

 

條形碼

使用第三方控件

查閱了國內外大多數網站,Reporting 報表條形碼控件做的不錯的是Barcode Professional for Reporting Services

下載安裝好后再SSDT工具欄添加安裝后得到的Dll文件,這時,工具箱里會多一個Barcode Professional for Reporting Services,拖進報表中就可以使用了

使用條形碼字體

這里使用了最常用的Code128,由於完整的Code128包括頭尾和校驗碼,所以對數據進行處理

處理數據的Code128 代碼

 

 

Code 128字體的使用

從網上下載Code 128字體

 (公司內部文件,解壓請聯系)

 

報表 中的設置

 

  1. 調用Code128A的代碼給數據添加頭尾合校驗碼
  2.  

  b.設置字體為Code128,更改字體大小

 

 

需要注意的是,報表的語言不能為zh-cn,我直接給清空了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM