因為要用到動態報表,所以首先學習了水晶報表。但是對動態報表的實現還是很模糊,請大家指教!小女子在此謝過!
1、簡介:
水晶報表主要用於設計及產生報表;是業內最專業、功能最強大的報表系統,除了強大的報表功能外,最大的又是是實現了與絕大多數流行開發工具的整合和介面。
2、功能:
crystal report幾乎可以從任何資料來源生成所需要的報表,內建的報表專家通過公式、交叉表、子報表和設定條件格式幫助表現資料的實際意義,解釋可能被隱藏掉的重要關係。
3、支援的資料來源:
->資料庫格式
->資料表,如excel
->文字檔案
->html xml檔案等
->通過網路五福odbc、jdbc等可訪問的任意資料來源
4、使用:
在vs2005--vs2010中都有自帶的水晶報表,但是如果需要使用功能更加強大的版本就需要購買了。
首先,新建報表檔案,字尾名為.rpt,可以根據嚮導來新建,其中最常用的是標準表和交叉表,然後根據嚮導建立連線,成功連線資料庫之後,資料庫中的表、儲存過程等資訊都顯示出來了,根據需要選擇要顯示的字段(在設計階段還可以進行選擇),這種模式為拉模式,與之對應的是推模式,後面會了解到。
生成報表之後,進入到報表設計器:
section1(報表頭)
在第一頁的最上面顯示一次,如果不需要顯示,通過右鍵->抑制顯示;
section2(頁首)
繫結之後資料庫中的字段會顯示在頁首中;
section3(詳細資料)
繫結資料之後,資料會顯示在詳細資料中;
section(報表頁尾)
顧名思義的頁尾,不過內容是自定義顯示;
section(頁尾)
自動顯示頁碼。
組:按照依據對資料的顯示進行分組;
公式:自定義公式,對各列資料計算之後顯示;可以在公式工作室中選擇要顯示的資料,但是不推薦這樣做,最好是在選擇資料表的時候進行篩選(推模式)
也可以對已經生成好的報表直接進行匯出,格式可以為word,excel,pdf等等。
圖表:
報表設計好之後,嘗試在web頁面中顯示:
需要兩個控制項:crystalreportsource:報表源,用來繫結報表檔案;
crystalreportviewer:用來繫結上面的報表源。
在viewer的選項中設定各種格式,有列印、匯出等設定
這個時候出現乙個問題:目前我的資料庫是沒有密碼的,如果使用的sql驗證方式呢?
先把資料庫改為sql server身份驗證,在vs2008下做一下測試,會發現直接是資料庫的登入介面,在vs2005下卻很正常。
這時在vs2008下可以把資料庫的登入名和密碼儲存在報表模板中,或者放在web.config檔案中。
但是在vs2005裡面,卻怎麼改登入模式都能顯示報表資料,好像能夠智慧型識別一樣,悶…
手動繫結資料的方式:
首先建立乙個報表文件,相當於crystalreportsource,然後使用.load方式載入報表檔案
reportdocument rptdoc = newreportdocument();
"crystalreport.rpt
"));
//另外一種方式:
//crystalreport rptdoc = new crystalreport();在05下不能使用
tablelogoninfo loginfo = new
tablelogoninfo();
loginfo.connectioninfo.servername = "."
; loginfo.connectioninfo.userid = "sa"
; loginfo.connectioninfo.password = "
123456";
loginfo.connectioninfo.databasename = "
northwind";
for (int i = 0; i < rptdoc.database.tables.count; i++)
//將crystalreportviewer繫結一下
crystalreportviewer1.reportsource = rptdoc;
水晶報表的兩種模式:
拉模式(pull)
這種模式是在建立報表時根據選定的表或者儲存過程來進行資料繫結;瀏覽資料的時候,報表檔案根據新建報表時選中的表或者儲存過程自動查詢資料。既然是程式主動索要資料,那麼如果資料庫存在登入名和密碼的話,就需要一種寫死的登入資訊。通過驗證之後報表檔案會主動去資料庫取資料,所以在page_load中要先把書庫路的登入資訊提交過來。
推模式(push)
推模式就是通過使用者提交的查詢資訊,來查詢資料庫,強型別的dataset需要用到檢視。就是報表模板已經設計好,在使用的時候根據需求對資料進行篩選。可以使用dataset(強型別或者弱型別)。
->在資料庫專家中選擇表或者儲存過程等設定報表就是拉模式,使用新增命令就是推模式的一種。
因為即使選擇要顯示的表,程式還是查詢出所有的資料資訊,如果需要篩選資訊,新增了條件之後 還是要首先查詢出來所有的資料,找到的資訊是固定的。比如強型別的dataset,通過新增資料集來繫結資料庫中的資料。
總結:1.pull(拉模式),直連資料庫,但要注意連線引數的設定 優點: 方便,快捷 缺點:靈活性太差,適用面窄
2.push(推模式),該模式允許程式設計師通過組裝在記憶體中的表來封裝資料 當然就更加靈活,豐富多樣
優點:1.適合快速開發,能很方便的出各種餅圖,柱圖,等
2.方便 靈活的匯出功能,相容大多數檔案格式
3. 多鐘語言的支援
4.可以直接訪問各種資料來源
缺點:1.執行效率太慢
2.不支援png透明(我的這個應用也還是有這個問題,因為是電子簽名的)
3.無原始碼
學習水晶報表
學習 1.2.3.4.一 pull模式下 手動繫結無需 有web下。建立乙個crystalreportviewpage.aspx檔案 在crystalreportviewpage.aspx.cs檔案 如下 using system using system.collections using sys...
水晶報表 建立報表
水晶報表是乙個優秀的報表開發工具,本人在開發通用管理系統的時候,所有報表都使用水晶報表,其簡單 易用和強大的功能令筆者倍加喜愛,現將水晶報表使用手記呈現給大家。一 在使用自帶的水晶報表時,請註冊,否則只能使用30次 二 使用crystalreportviewer進行預覽 crystalreportv...
水晶報表 子報表
經過了一段時間對水晶報表的操作,我對其稍稍了解了一點點。這兩天,一直在為資料量太大而煩惱,我有六張表,其中一張關聯剩餘的五張表。想要顯示資料,結果,顯示不出來,即使我已經在鏈結裡面設定了左外連線。我知道這個是按照笛卡爾積相乘,所以資料會成倍的增加。所以,即使我改用直接連線資料庫的方式也行不通。就是p...