1. 程式人生 > >Reporting報表開發知識合併[個人原創]

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,我直接給清