有些朋友要問,為什么要用vs2008 而不用vs2010.
因為我們使用的是sql2008R2,默認在vs2008里可以創建report 項目。如果使用sql 2012的話,在vs2010中或許也會帶吧。(vs 2010中我們可以使用report reviewer,道理是一樣的)
不過使用vs創建的report 只是把db里的數據組織好格式展示一下。真正對report 的管理還是要在安裝reporting service 的那台服務器上。
要展現一張報表給用戶看,需要如下過程:
1.使用vs創建相關報表。
2.部署到指定的report 服務器上。
3.配置報表服務器。
【創建報表】
這里我們先來講如何使用vs創建報表吧。
打開vs2008
文件-》新建-》商業智能項目-》報表服務器項目
把默認名字改成reporting。
我們需要生成trend ,bar和detail 報表。我們一個一個來。先創建trend chart。
解決方案管理器中在reporting 項目上右鍵-》添加-》新建項-》報表-》改名為trend.rdl。
首先我們要添加數據源,也就是告訴vs,我們的數據來源是哪,根據什么數據生成報表?
按下圖操作:報表數據-》數據源-》添加數據源
命名數據源TrendDatasource
點擊編輯,連接字符串:服務器名是. ,因為我是創建在本地,如果是遠程機器直接寫那台機器的名稱。
***注意,驗證方式要用sql server 身份驗證。因為數據庫里沒必要給每個用戶都加訪問的權限。那樣不安全,也很麻煩。至於身份驗證的工作交給reporting service 管理。后邊的章節會介紹。
建議為reporting service 創建一個單獨的賬戶。例如reportuser。我們來一起創建下。已經創建好或者希望用已有賬戶的請略過此塊:
連接數據庫-》安全性-》登錄名-》右鍵-》新建登錄名=》
常規:sqlserver 身份驗證=》鍵入密碼=》不勾選“強制實施密碼策略”
服務器角色:都勾上吧。
用戶映射:選擇我們上一章code first 創建的db :DemoReportDB。下邊的數據庫角色成員身份,都勾上。
狀態:一定確認: 授權和啟用都被勾選上。
好了,我們現在切換到vs中,使用剛才創建的sql用戶連接字符串。注意要點選記住密碼哦。
數據庫選擇我們剛才的DemoReportDB數據庫。
點擊一下測試連接。有的用戶提示reportuser登陸失敗。為什么呢?是因為你在安裝sql時候沒指定開啟sql身份驗證登陸模式。
好了,現在連接好字符串了。我們的數據源也有了(名字是自己設定的,我設定為TrendDataSource),接着創建數據集。
名稱:TrendDateset。選擇使用在我報表中嵌入的數據集。數據源從下拉列表中選擇我們剛才創建的TrendDataSource。
點擊查詢分析器:添加表,如下圖,
選擇 trends表。
勾選表上的字段或鍵入語句:SELECT TaskID, TaskName, Time, B1Better, Equal, B2Better, UnCertain, GrandTotal
FROM Trends
有朋友要問了,不是還要按時間過濾,drill down。就這一句sql?別急,我們一步一步來。
點擊確定。這時候我們有了數據集和數據源了。
【綁定字段】
在trend.rdl 設計選項卡中右鍵-》插入-》圖表-》折線圖-》有標記的折線圖。根據需要調整圖的大小。
點擊一下圖表。右邊會彈出來一個“圖表數據框”
點右上角的+,按下圖加入3個字段。
點選“類別組”右邊的+,添加time 到類別組。因為我們要根據time來分組。每個日期對應着trend的一個時間點。
這時候我們先切換到預覽選項卡上。看看我們的報表是什么樣啦?點選“預覽”
報表是有了,但是好奇怪啊,不是折線圖,而是3個點。為什么呢?因為我們開始只導入了一條數據呀。
由於使用EF導入數據在前邊已經介紹過了。我們這次手動改數據庫吧。找到trends table ,右鍵-》編輯前200行-》
taskid :6 time:2012-07-11 B1Better:250 Equal: 350 B2Better:230 Uncertain:220 GrandTotal:1000 type:trend IsActive:true
這時候再預覽看看我們的報表?哇塞,有了,可惜還是2個點。那再加條數據:
2 | 5 | 2012-06-27 00:00:00.000 | 200 | 300 | 280 | 220 | 1000 | trend | True | |
4 | 6 | 2012-07-11 00:00:00.000 | 250 | 330 | 280 | 220 | 1000 | trend | True | |
5 | 7 | 2012-07-18 00:00:00.000 | 200 | 200 | 500 | 100 | 1000 | trend | True | |
7 | 8 | 2012-07-25 00:00:00.000 | 260 | 340 | 200 | 200 | 1000 | trend | True |
看起來還是很粗糙的一個報表。連個名字都沒有。線能不能粗點?能不能做成3D的?我能不能只看最近1個月的報表(filter)
每個點的值都是多少,能不能顯示百分比。開始提到的酷酷的drill down呢?
下一章會介紹 針對這個trend 報表的進階內容。