自定義報表開發(fā)說明_第1頁
自定義報表開發(fā)說明_第2頁
自定義報表開發(fā)說明_第3頁
自定義報表開發(fā)說明_第4頁
自定義報表開發(fā)說明_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精品文檔 自定義報表開發(fā)說明 目錄 1. 自定義報表的目的3. 2. 自定義報表的開發(fā)過程 3. 3. 自定義報表的技術(shù)原理 4. 4. 獨立的報表設(shè)計方法6. 5. 程序?qū)Κ毩蟊淼恼{(diào)用實現(xiàn) 12 6. 報表的部署15 7. 報表的現(xiàn)場修改17 1. 自定義報表的目的 開發(fā)自定義報表的目的有以下幾點: 1、實現(xiàn)報表和程序分離。分離的報表和程序的分離是實現(xiàn)自定義報表工作的最 主要目的。程序和報表分離可以使得報表的設(shè)計工作、程序的開發(fā)工作、報 表的部署工作、報表的修改工作和報表的測試工作各自獨立分開的來進行。 減少開發(fā)人員在報表上的工作量,實現(xiàn)報表設(shè)計的專業(yè)化分工。提高報表的 開發(fā)效率和質(zhì)量。

2、2、實現(xiàn)專業(yè)化的獨立報表制作。報表設(shè)計工作的獨立進行可以更好的實現(xiàn)報表 的專業(yè)化制作,原來每個報表的設(shè)計和制作都合并到了應(yīng)用程序的開發(fā)過程 中,由程序員各自來實現(xiàn)不同的報表。不同的程序員實現(xiàn)報表的方法不盡相 同,研究新的報表類型要花不少時間,互相之間沒有足夠的時間來討論總結(jié) 各種報表的最佳實現(xiàn)方法。獨立的專業(yè)化報表制作工作可以使得報表設(shè)計人 員有大量的機會接觸到不同類型的報表。隨著報表制作經(jīng)驗的積累,可以有 效總結(jié)出越來越多的不同類型報表的最優(yōu)制作方法,形成有效的專業(yè)知識, 提高公司開發(fā)報表的速度和可實現(xiàn)報表的廣度。并且方便對報表進行獨立測 試,提高報表質(zhì)量。 3、提高項目開發(fā)效率。報表和程序

3、的獨立,使得各自的工作方向更加專注。不 但使得項目開發(fā)工作能夠并行,節(jié)省開發(fā)時間,而且使得各自的工作更容易 深入,提高各自工作的攻關(guān)能力和工作質(zhì)量。 4、方便部署。報表和程序分離后,各自部分能夠獨立更新。避免了更新報表也 產(chǎn)生新的軟件版本的問題。在報表更新后軟件部分沒有變化的情況下,可以 單獨發(fā)布報表版本。實現(xiàn)了項目產(chǎn)品的靈活部署和配置。 5、靈活的報表定制。不同用戶的報表格式不盡相同,相同的業(yè)務(wù)數(shù)據(jù)在不同的 用戶那里會以不同的組織形式構(gòu)成報表。而且用戶的打印機型號更是多種多 樣。報表制作時使用的打印機型號和紙張可能是用戶那里沒有的,需要在用 戶那邊進行報表樣式的定制和打印效果的調(diào)試。以往這種

4、調(diào)試只能由實施人 員在現(xiàn)場反饋回開發(fā)團隊,然后開發(fā)團隊在看不到現(xiàn)場打印效果的情況下調(diào) 整報表,不但交互次數(shù)多也不便與保證報表效果。 2. 自定義報表的開發(fā)過程 自定義報表的開發(fā)過程遵循軟件工程的過程: 1、需求調(diào)研 需求人員從用戶處獲得報表需求,包括報表的尺寸、樣式、顯示 明E些數(shù)據(jù)、數(shù)據(jù)的類型、數(shù)據(jù)的格式、打印的份數(shù)和打印機的類型等等。需 求人員提交報表需求時應(yīng)詳述報表細節(jié),如有可能則提供紙質(zhì)報表樣式。 2、報表設(shè)計 設(shè)計人員根據(jù)需求人員提供的報表要求設(shè)計出報表的實際結(jié)構(gòu), 生成獨立的報表文件。設(shè)計人員根據(jù)報表需求和完成的報表文件,進行報表 的單元測試。設(shè)計人員需要模擬用戶數(shù)據(jù)綁定到報表,查

5、看打印預(yù)覽并打印 實際報表,將打印結(jié)果與提交的報表需求進行對比,確認報表文件可以滿足 用戶需求。然后提交設(shè)計結(jié)果。 3、 報表接口開發(fā)及調(diào)用程序員根據(jù)報表需求的數(shù)據(jù)結(jié)構(gòu)要求開發(fā)獲得報表 數(shù)據(jù)的代碼。然后開發(fā)將圭寸裝的報表數(shù)據(jù)與指定報表文件綁定的方法。指定 的報表文件名稱可以從本地配置文件或數(shù)據(jù)庫應(yīng)用配置表中得到。程序員應(yīng) 對完成的程序進行單元測試確保程序能夠?qū)?shù)據(jù)綁定到報表,并且能夠成功 的調(diào)用報表預(yù)覽和打印。 4、 報表的測試測試人員根據(jù)報表需求和設(shè)計人員提交的報表文件,進行報 表測試。測試人員需要在應(yīng)用軟件環(huán)境中模擬用戶數(shù)據(jù)綁定到實際報表,查 看打印預(yù)覽并打印實際報表,將打印結(jié)果與提交的報

6、表需求進行對比,確認 報表文件可以滿足用戶需求,記錄測試通過,通知報表設(shè)計人員提交報表文 件版本到配置管理?;蛘呒皶r通知程序員或報表設(shè)計人員修改相關(guān)缺陷。 5、報表部署配置管理員將最新提交的報表文件發(fā)布給實施人員。實施人員拿 到報表文件后在用戶環(huán)境中進行測試。確認無誤后將報表文件安裝到用戶的 客戶機或服務(wù)器。 3. 自定義報表的技術(shù)原理 水晶報表程序控制上有兩種模式,也就是 PULL模式和PUSH模式??谡Z化點就 是拉模式和推模式。 拉(PULL)模式: 由水晶報表模板(引擎)直接連接數(shù)據(jù)庫(源),從數(shù)據(jù)庫(源)里拉取數(shù)據(jù)。就是 我們在水晶報表里設(shè)置好數(shù)據(jù)庫信息, 以及相關(guān)的表。當我們在程序中

7、調(diào)用水晶 報表引擎,掛載模板后,水晶報表引擎會根據(jù)模板里的數(shù)據(jù)庫信息, 及表信息主 動連接數(shù)據(jù)庫,返回數(shù)據(jù)給報表模板,模板根據(jù)設(shè)計樣式進行呈現(xiàn)。 基本流程如下圖所示 APP 水 數(shù)據(jù)庫 PLLL (拉模式 數(shù)據(jù)流向 推(PUSH模 式: 由應(yīng)用程序從數(shù)據(jù)庫(源)獲取數(shù)據(jù),然后把數(shù)據(jù)推送給水晶報表引擎。水晶報表 本身不跟數(shù)據(jù)庫進行交互。 其基本流程圖如下 PLSU (推模式) 數(shù)據(jù)流向 對比兩個圖,黑色的箭頭表示我們要自己進行編碼, 藍色的箭頭表示是水晶報表 與數(shù)據(jù)源的自動交互過程,不需編碼。 這樣我們很容易看到,使用PUSH莫式將會比PULL模式多了不少代碼。而且因為 PULL模式是直連數(shù)據(jù)庫

8、,比PUSH模式的先獲取數(shù)據(jù)結(jié)果,然后推送給水晶報表 少了一個過程。而中間結(jié)果集本身就占用系統(tǒng)資源。 所以PULL模式比PUSH執(zhí)行 效率高。 那么兩者的差異就出來了 1: PULL模式代碼量少 2: PULL模式執(zhí)行效率高 3:實際開發(fā)過的朋友也有體會,使用 PULL模式,模板開發(fā)的速度也比PUSH模 式模板簡單一些 這幾點上,似乎PULL模式已經(jīng)完全把PUSH模式打敗了,那么為什么PUSH模式 還存在,且被大量使用呢? 我們再返回去看上面兩個示意圖,大家注意到PULL模式中,是由水晶報表連接 的數(shù)據(jù)庫,也就是說,水晶報表引擎單獨占用了一個數(shù)據(jù)庫連接。而只有在水晶 報表對象釋放后,數(shù)據(jù)庫連接

9、才會釋放(這個時段對系統(tǒng)時間來說,是比較長的, 特別是如果要翻頁等需要長時間連接數(shù)據(jù)庫的情況)。而在PUSH模式中,數(shù)據(jù) 庫是由應(yīng)用程序去連接的,水晶報表本身不連接數(shù)據(jù)庫。這樣,系統(tǒng)就能使用公 用的數(shù)據(jù)庫連接。這樣一來,就節(jié)約了數(shù)據(jù)庫的連接消耗。這一點,在多用戶的 系統(tǒng)環(huán)境內(nèi),少一次數(shù)據(jù)庫連接對系統(tǒng)性能的影響對系統(tǒng)的影響是比較關(guān)鍵的。 當然,我們也應(yīng)該注意到,PUSH因為存在一個Dataset,所以會占用系統(tǒng)資源。 這兩個方面大家需要綜合考量。 這是個基本的,下面是PUSH勺優(yōu)勢。 1:可以公用系統(tǒng)數(shù)據(jù)庫連接,減少數(shù)據(jù)庫連接損耗 2:可自由組合多數(shù)據(jù)源(如多數(shù)據(jù)庫等),這一點 PULL模式也可

10、以實現(xiàn),但是 不如這個方便 3:靈活多變 靈活多變的說法,是因為由于我們是把數(shù)據(jù)獲取后,再PUSH合水晶報表的,那 么在這個中間,就有很多數(shù)據(jù)再加工的可能性。 鑒于自定義報表在開發(fā)獨立性和部署靈活性方面的要求,push模式的報表開發(fā) 是必然選擇。 4. 獨立的報表設(shè)計方法 下面詳細講解一下push莫式下的報表的獨立設(shè)計。 1、新建一個CrystalReports 應(yīng)用程序項目,(實際設(shè)計人員可以新建WinFor m項目和Wet項目,沒有區(qū)別)彈出下面這個界面后,輸入“ExampaleCryst alReportsProject ” 新建頂自 瞰I): =1 Visual C# Wirlnw O

11、ffice 扔寧者工具碼 wed P刃出語言 分有式系航品訣力索 叩耳幗項目類型 出測用頂目 VkuI Studio已安蛙的摂梭 Windows 應(yīng)Jfi 程庁 Crystal FlDportf 應(yīng)用 程序 OuUulA 夕抿 程序 A5P NETT Wsb 竝F,N:Tgb 服券應(yīng)用應(yīng)用程序 9嗝于創(chuàng)遵Of止用桂挪觀目*渥應(yīng)用握胖貝自地cdoM莊尸疥直以邂一TOryrtal Report示創(chuàng) FxamnterrylFfipnitRniPrl EiVft/crk |ExjmpIcCr ystalRoportojart 然后點確定,會生成新的解決方案,并彈出報表制作向?qū)нx擇窗口 昌I眉至 懈決方

12、窸tampletiystTFeporRojec 個項目) -.工 EKarnpIcCrrstfllReiJartPruitct +:油 Pnizertles .-I +1 3 口 rystalDecfficrip.CrystalftBpdirts.Encine Lj GystdCtasmsE-iterpHse.Franheork 口 GyildCcussLtiSi 呂pHselif oHe 匕 i- -1匸 rys制 De 口書 cn 乩礙 ottMuro? di CtyralLieascnG .9niar#d 口 Crys:dCRoc5 cns .Windows. Femrs 口 SyAcm

13、 口刖蟲細 k *o 5yeni JjRpInyinRnr “Systrn auurig -口 Systni -Wb 口 System .V/eb .Scrvam 5vsteni Ml _idows. Fomre =劉丈H1術(shù)I .y | ystalftepcrt 1. rpt Fsrrnl.Ci 曹 Poerarft cs 選擇作為空白報表,點擊確定。進入一個空白報表界面 2、在解決方案資源管理器中的項目下新建一個數(shù)據(jù)集 運倉新項-ENam pleEryst jJRcp ortPro jcct b-br- 擺棲.(D: H Visual C# JHEJII pppcKting 目定義把件 a

14、 讎承的用尸 控件 X5LT疋件 組件尖 a HTM.頁 -_r SQL鷲花住 位馭件 浙L架勵 眉于在您BT應(yīng)用翟序中使用鞭孺的加:日Set 名稱:少: cataSetlTxsd 在數(shù)據(jù)集設(shè)計界面上,點右鍵,添加一個datatable,命名為myTable。 DataSet l.xd Forml心設(shè)計 CrystalReportl.rpt 起贈夏J TableAdapterCD QataTable Query. Relation,. 然后在myTable里增加3個列 Dataetl.Msd* h Farm 1.ceCryetalReportl.rpt,超箱貢 注意要設(shè)置好類型。(ID:Int

15、32;Name:String;Age:lnt32) mylable TP ID cJurrin AlIcvjDCNdl True Auloircrsnwil F dke Autalrcranzrticifld 0 創(chuàng)駅1 Tit打輒it世iM 51*上fi 1 cafKlon ID OataTTOB Srstcm-lnt32 DateTjiiRM 口 ife DefauitVuB 3 stem. System. Char MarLerqth bsten.分對式不艇解決才秦 由測訊頂目 Visual Studio已安裝的琶檜 黨庫 Wlrtdcws 擔(dān)件 Cry5tal RaportsS. Wi

16、ndcwi 0? 程序 OlJUdoK 外按 設(shè)備應(yīng)用程 序 ANET Web 加務(wù)莊用 詡 A3P NET Wsb 應(yīng)用程序 我的段換 囲于倔具倍訥ndo郵月戶界閒旳座用程芋旳唄目 j*wr 廠需加到溥吒瑪曾涯ty) 2、在 Forml 中添加一個 Crystalreportviewer 3、在Forml類中添加如下代碼 public static ReportDocume nt Con figureCrystalReports(stri ng file name) ReportDocume nt reportDocume nt; reportDocume nt = new ReportDo

17、cume nt(); reportDocume nt.L oad(file name); return reportDocume nt; Con figureCrystalReports方法負責(zé)加載指定路徑的報表文件,生成報表文檔對象 在From_Load事件中添加如下代碼 private void Form1_Load(object sen der, Eve ntArgs e) _ ReportDocument rt = ConfigureCrystalReports(crystalReport1.rpt); rt.SetDataSource(GetData(); rt.SetDataSou

18、rce(GetDataTable(); crystalReportViewer1.ReportSource = rt; 在窗體加載時先從指定路徑加載特定的報表文件名稱,然后綁定數(shù)據(jù)源,數(shù)據(jù)源 可以是DataTable,或者是實現(xiàn)了 lenumerable接口的集合類,比如Ilist等。 有一點需要注意,不論是DataTable還是Ilist包含的對象都必須含有報表數(shù)據(jù)集 結(jié)構(gòu)中的ID、Name、Age三列或?qū)傩浴?4、將獨立設(shè)計生成的報表文件 CrystalReport1.rpt復(fù)制到本項目的bindebug目 錄 5、執(zhí)行應(yīng)用程序,可以看到程序成功的加載了獨立設(shè)計的報表。實現(xiàn)了報表和 程序的

19、獨立開發(fā)。 6. 報表的部署 報表部署根據(jù)應(yīng)用程序的類型不同分為 C/S和B/S部署方式 1、C/S部署 在C/S模式下應(yīng)用程序直接訪問本地文件,可將獨立的報表文件復(fù)制到應(yīng)用程序 所在的文件目錄。 或者與開發(fā)人員進行約定將要訪問的報表文件路徑和報表文件名稱設(shè)置成可配 置的。然后將報表集中部署到指定路徑中。再將配置信息放到應(yīng)用程序的配置文 件中。(由于不同的客戶端硬盤分區(qū)不盡相同,安裝路徑也不一樣。放到數(shù)據(jù)庫 中配置不能統(tǒng)一) vappSett in gs v/appSetti ngs 2、B/S部署 在B/S模式下應(yīng)用程序通過瀏覽器訪問服務(wù)器文件文件,可將獨立的報表文 件復(fù)制到應(yīng)用程序所在的服務(wù)器文件目錄。 或者與開發(fā)人員進行約定將要訪問的報表文件路徑和報表文件名稱設(shè)置成可配 置的。然后將報表集中部署到指定服務(wù)器文件路徑中。再將配置信息放到應(yīng)用程 序的Webconfig配置文件中。(由于不同的客戶端硬盤分區(qū)不盡相同,安裝路徑 也不一樣。放到數(shù)據(jù)庫中配置不能統(tǒng)一) vappSett in gs v/appSetti ngs 7. 報表的現(xiàn)場修改 修改報表的過程和設(shè)計報表的過程類似。 之所以單獨來說明主要是為產(chǎn)品實施人 員在用戶現(xiàn)場為特定用戶進行定制修改提供顯明幫助。 這里所說的修改一般是指 在用戶現(xiàn)場進行報表修改以滿足用戶需要的方式。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論