版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、水晶報(bào)表的使用經(jīng)驗(yàn)和資料總結(jié)資料:asp.net中使用水晶報(bào)表(上) 2002-9-6 dotnet吧html在我們對(duì)vs.net中的水晶報(bào)表(crystal reports)進(jìn)行研究之前,我和我朋友對(duì)如何將這個(gè)復(fù)雜的東東加入我們的web應(yīng)用有著非常的好奇心。一周以后,在閱讀了大量的“howto”文檔之后,我們成功地將一些簡(jiǎn)單的報(bào)告加入到了我們的a程序中,并得到了一些小決竅。 這篇文章教你如何在.net web應(yīng)用中使用水晶報(bào)表,也可以讓你在學(xué)習(xí)過(guò)程中少走一些彎路。為了得到最好的效果,讀者最好需要有一些基礎(chǔ)的asp.net訪問(wèn)數(shù)據(jù)庫(kù)的知識(shí)以及使用vs.net的開(kāi)發(fā)經(jīng)驗(yàn)。 簡(jiǎn)介 水晶報(bào)表可以由很
2、多的方法得到,其中一個(gè)就是使用vs.net來(lái)創(chuàng)建,它提供了非常豐富模型以使我們能夠在運(yùn)行時(shí)操作屬性和方法。如果你正在使用vs.net開(kāi)發(fā).net程序,那么你就不需要再安裝其它軟件了,因?yàn)樗呀?jīng)內(nèi)嵌在vs.net中了。 優(yōu)點(diǎn): vs.net水晶報(bào)表有下面一些主要的優(yōu)點(diǎn): 快速的報(bào)表開(kāi)發(fā) 能夠?qū)С龀蔀閺?fù)雜的交互性圖表 可以與其它控件一起在webform中使用 能夠動(dòng)態(tài)地將報(bào)表導(dǎo)出成為.pdf,.doc,xls,html,rtf等多種格式 結(jié)構(gòu): 一些組件組成了水晶報(bào)表的二層結(jié)構(gòu),需要的web應(yīng)用有: 客戶端 : 客戶端僅需要一個(gè)可以訪問(wèn)嵌入aspx頁(yè)面報(bào)表的游覽器就可以了 服務(wù)器 : - 水晶報(bào)表
3、引擎(crystal report engine (crengine.dll)) 通過(guò)它可以完成一些任務(wù),如在報(bào)告文件中合并數(shù)據(jù),轉(zhuǎn)換報(bào)告為其它格式等。也正是因?yàn)閳?bào)告引擎的作用,才可以將asp.net中的水晶報(bào)表轉(zhuǎn)換成為普通html格式 - 水晶報(bào)表設(shè)計(jì)器(crystal report designer (crdesigner.dll)) 水晶報(bào)表就是在設(shè)計(jì)器中創(chuàng)建的,在設(shè)計(jì)器中你可以設(shè)計(jì)標(biāo)題,插入數(shù)據(jù),公式,圖表,子報(bào)表等。 - .rpt報(bào)表文件 執(zhí)行報(bào)表中的第一步就是在水晶報(bào)表設(shè)計(jì)器接口創(chuàng)建此報(bào)表,在默認(rèn)安裝中微軟已經(jīng)提供了一些現(xiàn)成的.rpt例子。 - data source .rpt文件
4、取得數(shù)據(jù)庫(kù)的方法取決于你方法的選擇,你能選擇讓水晶報(bào)表自己選擇數(shù)據(jù)而不使用任何代碼或者也可以選擇手動(dòng)的組裝dataset,然后再將其傳送到報(bào)表文件。 - 水晶報(bào)表查看控件(crystal report viewer web form control (crwebformviewer.dll)) 水晶報(bào)表查看控件是一個(gè)webform控件,可以將它看成是一個(gè)在.aspx頁(yè)面中存放報(bào)表的容器。 注意:在一些復(fù)雜的操作中,報(bào)表服務(wù)器與web服務(wù)器可能不在同一物理主機(jī)上,web服務(wù)器將http請(qǐng)求傳送到報(bào)表服務(wù)器上去。水晶報(bào)表也可以當(dāng)做webservice來(lái)執(zhí)行。 執(zhí)行模式 水晶報(bào)表取數(shù)據(jù)可以使用下面的
5、方法實(shí)現(xiàn): - pull 模式: 被請(qǐng)求時(shí),水晶報(bào)表直接根據(jù)指定的驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)然后組裝這些數(shù)據(jù)。 - push 模式 : 此時(shí)開(kāi)發(fā)表不得不自己編寫代碼連接數(shù)據(jù)并組裝dataset,同時(shí)將它傳送至報(bào)表。在些這種情況下,通過(guò)使用連接共享以及限制記錄集合的大小,可以使用報(bào)表性能最大化。 報(bào)表類型: 水晶報(bào)表設(shè)計(jì)器能夠直接包含報(bào)表至工程也能夠使用獨(dú)立的報(bào)表對(duì)象。 - strongly-typed 報(bào)表 : 當(dāng)你將報(bào)表文件加入到項(xiàng)目中去時(shí),它就變成了一個(gè)了“ strongly-typed“報(bào)表。在這些情況下,你將擁有直接創(chuàng)建報(bào)表的對(duì)象的權(quán)力,這將減少一些代碼并且能夠提供一些性能。 - un-typed
6、 報(bào)表 : 這里的報(bào)表并不直接包含在項(xiàng)目中,因此稱為un-typed 報(bào)表。在這種情況下,你不得不使用水晶報(bào)表的”reportdocuemt“對(duì)象建立一個(gè)實(shí)例,并且”手動(dòng)“地凋用報(bào)表。 其它注意事項(xiàng) - 盡管水晶報(bào)表查看器擁有一些很酷的功能,如縮放、頁(yè)面導(dǎo)航等。但是他不提供打印功能,你不得不調(diào)用游覽器的打印功能。 - vs.net中的水晶報(bào)表如果沒(méi)有注冊(cè),那么它只能使用30次,30次后,”保存“功能就不能再使用了。為了避免這個(gè),你不是不在 (好像不是這樣子的,不注冊(cè)也好像能用很長(zhǎng)的時(shí)間,只是不能提供支持) - 讓我們感受一下在a中使用一個(gè)現(xiàn)成的水晶報(bào)表文件 1) 從webform工具欄中拖動(dòng)水
7、晶報(bào)表查看器控件(crystal report viewer)至.aspx頁(yè)面中。 2) 調(diào)出水晶報(bào)表查看器控件的屬性窗口 3) 點(diǎn)擊.按鈕查看"data binding"屬性,并彈出了databinding窗口。4) 從左邊的"bindable屬性”區(qū)中選擇“report source”5) 選中"自定義綁定表達(dá)式"單選按鈕,在右邊的底部的窗口中指定.rpt文件的文件名和路徑,例如:"c:program filesmicrosoft visual studio.netcrystal reportssamplesreportsgene
8、ral businessworld sales report.rpt",然后”確定“ 注意:文件”world sales report.rpt“文件是在vs.net安裝時(shí)創(chuàng)建的。如果你在安裝過(guò)程中指定了其它目錄,此時(shí)你最好確認(rèn)一下路徑的正確性。 上面的步驟中實(shí)際上是插入了下面這些代碼至asp.net文件中: 以及: id="crystalreportviewer1" runat="server" width="350px" height="50px" reportsource=''>
9、 注意:在飛刀我的vs.net正式版中自動(dòng)生成的代碼中reportsource產(chǎn)生的樣式不是這樣子的,它是: reportsource="" 這樣是錯(cuò)誤的,會(huì)出現(xiàn)錯(cuò)誤信息,有兩處錯(cuò)誤: 必須按照使用本文介紹的格式來(lái)手動(dòng)修改,這也算是vs.net的一個(gè)bug吧。 6) 在page_load方法中調(diào)用databind方法。(代碼為vb.net) private sub page_load(byval sender as system.object, byval e as system.eventargs) databind() end sub 7)保存并編譯你的頁(yè)面。 現(xiàn)在,你
10、就有一個(gè)內(nèi)嵌水晶報(bào)表的webform頁(yè)面了。 注意:實(shí)際開(kāi)發(fā)中,一開(kāi)始會(huì)出現(xiàn)無(wú)法訪問(wèn)inetsrv目錄的錯(cuò)誤,解決的辦法是改變其目錄的安全屬性,使user用戶有可寫的權(quán)限。飛刀我發(fā)現(xiàn).net系統(tǒng)自已給出的解決方法是沒(méi)有用的,也可能是我使用的是windows.net操作系統(tǒng)的原因。 asp.net中使用水晶報(bào)表(中)html使用pull模式我們將通過(guò)下面的這些步驟來(lái)通過(guò)pull模式來(lái)執(zhí)行水晶報(bào)表 1.首先創(chuàng)建rpt文件,并使用水晶報(bào)表設(shè)計(jì)接口設(shè)置一些必須的數(shù)據(jù)連接。 2.拖放一個(gè) crystalreportviewer控件至aspx頁(yè)面,設(shè)置它的屬性指定我們上一步創(chuàng)建的.rpt文件。 3. 在代
11、碼中調(diào)用databind方法。創(chuàng)建 .rpt 文件:1) 在右擊”解決方案游覽器“,在彈出的菜單中選擇”添加“”添加新項(xiàng)“>”crystal report” 2) 在”crystal report 庫(kù)”中選擇”作為空白報(bào)表“單選按鈕,最后單擊“確定“。 3)這里將彈出水晶報(bào)表設(shè)計(jì)器。 4) 右擊報(bào)表中的”詳細(xì)資料區(qū)”,選擇“數(shù)據(jù)庫(kù)”>“添加/刪除數(shù)據(jù)庫(kù)."5) 在彈出的”數(shù)據(jù)庫(kù)專家“中,擴(kuò)展”ole db(ado)“選項(xiàng),此時(shí)會(huì)彈出另外一個(gè)”ole db(ado)“窗口。6) 在 "ole db (ado)" 彈出窗口中,選擇 "micros
12、oft ole db provider for sql server" 然后 "next" 7) 指定連接的信息服務(wù)器 : aspcn (您的機(jī)器是什么名字就寫什么) 用戶 id: sa密碼:數(shù)據(jù)庫(kù) : pubs8) 單擊”next“,最后單擊”finish“按鈕。9) 這時(shí)你就能在”數(shù)據(jù)庫(kù)專家“窗口中看到我們選擇的數(shù)據(jù)庫(kù)。10) 擴(kuò)展”pubs“數(shù)據(jù)庫(kù),擴(kuò)展”表“,選擇”stores“表并將其加到”選定的表“區(qū)中,單擊”ok"按鈕。11) 現(xiàn)在在”字段資源瀏覽器(單擊“視圖”菜單,指向“其他窗口”,然后單擊“文檔大綱”。)“中就會(huì)在左邊”數(shù)據(jù)庫(kù)字段“區(qū)
13、中顯示你選擇的表,以及表中的字段。12) 拖放需要的字段進(jìn)入報(bào)表的”詳細(xì)資料“區(qū)。字段名將會(huì)自動(dòng)出現(xiàn)在”頁(yè)眉“區(qū)。如果你想修改頭部文字,則可以右擊”頁(yè)眉“區(qū)中的文字,選擇”編輯文本對(duì)象“選項(xiàng)并進(jìn)行編輯。 13) 保存,這樣我們就有了一個(gè)水晶報(bào)表文件。創(chuàng)建 crystalreportviewer 控件14) 回到前面的webform中,拖放一個(gè)crystal report viewer控件到頁(yè)面中去。15) 調(diào)出crystal report viewer控件的屬性窗口,選擇“databindings"區(qū)點(diǎn)擊.16) ”crystal report viewer 數(shù)據(jù)綁定窗口”中,在右邊
14、的“可綁定屬性”中選擇”reportsource“,并選擇右下角的“自定義綁定表達(dá)式”中指定.rpt文件路徑。 17) 此時(shí)你能夠從crystal report viewer 控件中看到使用一些虛擬數(shù)據(jù)組成的報(bào)表文件的預(yù)覽。 注意:在上面的例子中,crystalreportviewer可以在設(shè)計(jì)時(shí)直接調(diào)用真實(shí)的數(shù)據(jù),因?yàn)榇藭r(shí)數(shù)據(jù)已經(jīng)保存。在這種情況下,設(shè)計(jì)時(shí)當(dāng)沒(méi)有保存數(shù)據(jù)時(shí),他是不能顯示數(shù)據(jù)的。取而代這的是顯示一些虛擬的數(shù)據(jù),只有在執(zhí)行時(shí)才會(huì)選取真實(shí)的數(shù)據(jù)。code behind 程序設(shè)計(jì)18) 在page_load方法中調(diào)用databind方法。執(zhí)行你的程序 19) 創(chuàng)建并運(yùn)行你的程序! 您
15、現(xiàn)在就可以直接在web頁(yè)面中使用水晶報(bào)表內(nèi)置的一些功能,如頁(yè)面導(dǎo)航,縮放等。 /html asp.net中使用水晶報(bào)表(下) 2002-9-6 dotnet吧html我們采用下面的幾步使用push模式執(zhí)行水晶報(bào)表:1. 設(shè)計(jì)一個(gè)dataset2. 創(chuàng)建一個(gè).rpt文件同時(shí)將其指定給上一步建立的dataset。3. 在aspx頁(yè)面中拖放一個(gè)crystalreportviewer控件同時(shí)將其與前面的rpt文件建立聯(lián)系。4. 在代碼中訪問(wèn)數(shù)據(jù)庫(kù)并把數(shù)據(jù)存入dataset5. 調(diào)用databind方法。 設(shè)計(jì)一個(gè)dataset1) 右擊“解決方案瀏覽器”,選擇“添加”-“添加新項(xiàng)”->“數(shù)據(jù)集”
16、 2) 從“服務(wù)器資源管理器”中的“sql server”中拖放“stores”表(位于pubs數(shù)據(jù)庫(kù)中)。 3) 此時(shí)在數(shù)據(jù)集中就會(huì)有一個(gè)stores表的結(jié)構(gòu)圖。 - .xsd文件中僅僅包含一個(gè)結(jié)構(gòu)圖,但是不會(huì)有任何數(shù)據(jù)在里面。創(chuàng)建 .rpt 文件 :4) 使用上面的介紹過(guò)的方法創(chuàng)建此文件,唯一的不同就是使用數(shù)據(jù)集來(lái)代替前面的直接連接數(shù)據(jù)。5)建立.rpt文件之后,右擊“詳細(xì)資料”->"添加刪除數(shù)據(jù)庫(kù)“6) 在”數(shù)據(jù)庫(kù)專家“窗口中,展開(kāi)”項(xiàng)目數(shù)據(jù)“(代替以前的oledb),展開(kāi)“ado.net數(shù)據(jù)集”-"dataset1“,選擇”stores“表。7) 將”stor
17、es"表添加到“選定的表”中,點(diǎn)擊“ok” 8) 使用pull模式下的方法,建立一個(gè)webform建立一個(gè)crystal report viewer 控件9) 建立一個(gè)crystal report viewer 控件,并設(shè)定其屬性,此處與pull模式下是一致的。code behind 代碼:10) 在page_load方法中使用下面的子函數(shù):vb.net代碼: sub bindreport() dim myconnection as new sqlclient.sqlconnection() myconnection.connectionstring= "server= (
18、local)netsdk;database=pubs;trusted_connection=yes" dim mycommand as new sqlclient.sqlcommand() mycommand.connection = myconnection mycommand.commandtext = "select * from stores" mycommand.commandtype = commandtype.text dim myda as new sqlclient.sqldataadapter() myda.selectcommand = my
19、command dim myds as new dataset1() '這就是我們?cè)谠O(shè)計(jì)模式上使用的dataset myda.fill(myds, "stores") '你不得不使用與你前面dataset相同名字。 dim orpt as new crystalreport1() ' 水晶報(bào)表綁定 orpt.setdatasource(myds) ' 設(shè)定水晶報(bào)表的reportsource crystalreportviewer1.reportsource = orpt end subc#代碼:private void bindreport(
20、) string strprovider = "server=(local);database=pubs;uid=sa;pwd=" crystalreport1 ocr = new crystalreport1(); dataset1 ds = new dataset1(); sqlconnection myconn = new sqlconnection(strprovider); myconn.open(); string strsel = "select * from stores" sqldataadapter myadapter = new s
21、qldataadapter(strsel,myconn); myadapter.fill(ds,"stores"); ocr.setdatasource(ds); this.crystalreportviewer1.reportsource = ocr;注意:在上面的代碼中,你得注意一下orpt是"strongly typed"的報(bào)表文件。如果你需要使用"untyped"報(bào)表,你得使用reportdocument對(duì)象,然后再調(diào)用報(bào)表文件。 運(yùn)行你的程序。 11) 運(yùn)行你的程序 將報(bào)表文件導(dǎo)出成為其它格式你能夠?qū)?bào)表文件導(dǎo)出成為下列格式
22、: 1. pdf (portable document format) 1. 2. doc (ms word document) 2. 3. xls (ms excel spreadsheet) 3. 4. html (hyper text markup language 3.2 or 4.0 compliant) 4. 5. rtf (rich text format) 使用pull模式導(dǎo)出報(bào)表當(dāng)導(dǎo)出使用pull模式創(chuàng)建的文件時(shí),水晶報(bào)表準(zhǔn)確地打開(kāi)所需要的數(shù)據(jù),下面是執(zhí)行導(dǎo)出功能的代碼: c#代碼:vb.net代碼:private sub button1_click(byval sender
23、 as system.object, byval e as system.eventargs) handles button1.click dim myreport as crystalreport1 = new crystalreport1() '注意:這里我們建立一個(gè)strong-typed的水晶報(bào)表實(shí)例。 dim diskopts as crystaldecisions.shared.diskfiledestinationoptions = new crystaldecisions.shared.diskfiledestinationoptions() myreport.expo
24、rtoptions.exportdestinationtype = crystaldecisions.shared.exportdestinationtype.diskfile ' 導(dǎo)出成為其它文件時(shí)也需要這個(gè)選項(xiàng) ' 如microsoft exchange, mapi等. myreport.exportoptions.exportformattype = crystaldecisions. shared.exportformattype.portabledocformat '這里我們導(dǎo)出成為.pdf格式文件,你也能選擇上面的其它類型文件 diskopts.diskfi
25、lename = "c:output.pdf" '如果你不指定確切的目錄,那么文件就會(huì)保存到windowssystem32目錄中去了 myreport.exportoptions.destinationoptions = diskopts '水晶報(bào)表文件不包含直接的filename屬性,因此你不能直接指定保存的文件名 '所以你不得不使用diskfiledestinationoptions對(duì)象,設(shè)置它的diskfilename屬性 '為你想要的路徑,最后將水晶報(bào)表的destinationsoptions屬性指定為上面的diskfiledesti
26、nationoption myreport.export() '上面的代碼將完成導(dǎo)出工作。end sub使用push模式導(dǎo)出水晶報(bào)表當(dāng)導(dǎo)出的報(bào)表是由push模式建立的時(shí),第一步就是通過(guò)編程建立連接并組裝dataset,設(shè)置報(bào)表的的setdatasource屬性。再下面的步驟就有pull模式一樣的了。/html.net環(huán)境下水晶報(bào)表使用總結(jié)水晶報(bào)表是一個(gè)優(yōu)秀的報(bào)表開(kāi)發(fā)工具,本人在開(kāi)發(fā)通用管理系統(tǒng)的時(shí)候,所有報(bào)表都使用水晶報(bào)表,其簡(jiǎn)單、易用和強(qiáng)大的功能令筆者倍加喜愛(ài),現(xiàn)將水晶報(bào)表使用手記呈現(xiàn)給大家。 一、在使用自帶的水晶報(bào)表時(shí),請(qǐng)注冊(cè),否則只能使用30次水晶報(bào)表注冊(cè)碼注冊(cè)號(hào):6707437
27、608密碼:aap5gks0000gde100ds 二、使用crystalreportviewer進(jìn)行預(yù)覽crystalreportviewer控件允許在應(yīng)用程序中查看 crystal report。reportsource 屬性用于設(shè)置要查看哪個(gè)報(bào)表。該屬性設(shè)置之后,報(bào)表顯示在查看器中。報(bào)表源可以是reportdocument、報(bào)表文件的路徑,也可以是強(qiáng)類型報(bào)表。1. 打開(kāi)“工具箱”,并將一個(gè) crystalreportviewer 拖到窗體上,我們命名為rptvew。 2. 通過(guò)拖放操作將 windows 窗體查看器調(diào)整到希望的大小并將其移動(dòng)到所需位置。 3. 當(dāng)運(yùn)行應(yīng)用程序時(shí),報(bào)表將顯示
28、在查看器中。三、創(chuàng)建新報(bào)表1. 指向“添加”,單擊“添加新項(xiàng)”。 2. 在“添加新項(xiàng)”對(duì)話框中,從“模板”區(qū)域選擇 crystal report,將報(bào)表命名為rptclient,單擊“打開(kāi)”。 3. 在 crystal report 庫(kù)中,選擇下列選項(xiàng)之一: · 使用報(bào)表專家 指導(dǎo)您完成報(bào)表的創(chuàng)建過(guò)程,并將您的選擇添加到 crystal report designer。 · 作為空白報(bào)表 打開(kāi) crystal report designer。 · 來(lái)自于現(xiàn)有的報(bào)表 創(chuàng)建新報(bào)表,它與指定的另一報(bào)表設(shè)計(jì)相同。 注意 crystal report 庫(kù)包含許多專家,可以指
29、導(dǎo)您完成數(shù)個(gè)特定類型報(bào)表的創(chuàng)建工作。您可能希望使用專家來(lái)創(chuàng)建最初的報(bào)表,以確定哪種報(bào)表構(gòu)造方法適合您的需要。4. 單擊“確定”按鈕。 如果選擇使用“報(bào)表專家”,便會(huì)出現(xiàn)“報(bào)表專家”對(duì)話框,并帶有數(shù)據(jù)資源管理器。為每個(gè)文件夾選擇所需數(shù)據(jù),完成“報(bào)表專家”選項(xiàng)卡界面上的操作,然后單擊“完成”來(lái)訪問(wèn) crystal report designer 和您的報(bào)表四、是否需要?jiǎng)討B(tài)設(shè)置數(shù)據(jù)源?crystal reports 通過(guò)數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序與數(shù)據(jù)庫(kù)連接。每個(gè)驅(qū)動(dòng)程序都被編寫為可處理特定數(shù)據(jù)庫(kù)類型或數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)。 拉和推模型為了向開(kāi)發(fā)人員提供最靈活的數(shù)據(jù)訪問(wèn)方法,crystal reports 數(shù)據(jù)庫(kù)驅(qū)動(dòng)
30、程序被設(shè)計(jì)為可同時(shí)提供數(shù)據(jù)訪問(wèn)的拉模型和推模型。 拉模型在拉模型中,驅(qū)動(dòng)程序?qū)⑦B接到數(shù)據(jù)庫(kù)并根據(jù)需要將數(shù)據(jù)“拉”進(jìn)來(lái)。使用這種模型時(shí),與數(shù)據(jù)庫(kù)的連接和為了獲取數(shù)據(jù)而執(zhí)行的 sql 命令都同時(shí)由 crystal reports 本身處理,不需要開(kāi)發(fā)人員編寫代碼。如果在運(yùn)行時(shí)無(wú)須編寫任何特殊代碼,則使用拉模型。推模型相反,推模型需要開(kāi)發(fā)人員編寫代碼以連接到數(shù)據(jù)庫(kù),執(zhí)行 sql 命令以創(chuàng)建與報(bào)表中的字段匹配的記錄集或數(shù)據(jù)集,并且將該對(duì)象傳遞給報(bào)表。該方法使您可以將連接共享置入應(yīng)用程序中,并在 crystal reports 收到數(shù)據(jù)之前先將數(shù)據(jù)篩選出來(lái)。 四、從 ado.net 數(shù)據(jù)集制作報(bào)表從數(shù)據(jù)
31、庫(kù)創(chuàng)建數(shù)據(jù)集對(duì)象 1. 在項(xiàng)目中新建一個(gè)架構(gòu)文件: a. 在解決方案資源管理器中,右擊項(xiàng)目名,指向“添加”,然后單擊“添加新項(xiàng)”。 b. 在“添加新項(xiàng)”對(duì)話框的“類別”區(qū)域,展開(kāi)文件夾,然后選擇“數(shù)據(jù)”。 c. 在“模板”區(qū)域選擇“數(shù)據(jù)集”。 d. 接受默認(rèn)名稱 dataset1.xsd。 這就創(chuàng)建了一個(gè)新的架構(gòu)文件 (dataset1.xsd),以后將用它來(lái)生成強(qiáng)類型數(shù)據(jù)集。該架構(gòu)文件將顯示在 ado.net 數(shù)據(jù)集設(shè)計(jì)器中。 2. 指定數(shù)據(jù)庫(kù)位置: a. 在服務(wù)器資源管理器中,右擊“數(shù)據(jù)連接”并選擇“添加連接”。 b. 在“數(shù)據(jù)鏈接屬性”對(duì)話框中,單擊“提供程序”選項(xiàng)卡,然后選擇一個(gè)提供程
32、序(例如 microsoft ole db provider for sql server)。 c. 單擊“連接”選項(xiàng)卡,然后指定您的數(shù)據(jù)庫(kù)所在位置。在所需位置輸入服務(wù)器和登錄信息。 d. 單擊“確定”按鈕。 此時(shí),您的數(shù)據(jù)庫(kù)及其表和字段就出現(xiàn)在服務(wù)器資源管理器的“數(shù)據(jù)連接”節(jié)點(diǎn)下面。 3. 在解決方案資源管理器中,雙擊 dataset1.xsd (如果它尚不是活動(dòng)視圖)。 dataset1.xsd 現(xiàn)在應(yīng)顯示在“數(shù)據(jù)集”選項(xiàng)卡中。 4. 若要為數(shù)據(jù)集建立架構(gòu),請(qǐng)將需要的表從服務(wù)器資源管理器中拖動(dòng)到 dataset1.xsd 的“數(shù)據(jù)集”選項(xiàng)卡上。 5. 單擊“保存 dataset1.xsd”
33、來(lái)保存“dataset1.xsd”文件。 6. 在“生成”菜單上,單擊“生成”為項(xiàng)目生成數(shù)據(jù)集對(duì)象。 ado.net 數(shù)據(jù)集對(duì)象提供數(shù)據(jù)的描述,從它可以向 crystal report 添加表。使用 crystal report designer 中的“數(shù)據(jù)庫(kù)專家”從 ado.net 數(shù)據(jù)集對(duì)象添加表。 請(qǐng)?jiān)谑褂谩皥?bào)表專家”創(chuàng)建新報(bào)表時(shí)調(diào)用“數(shù)據(jù)庫(kù)專家”。或者,要從一個(gè)已經(jīng)使用 ado.net 建立好的報(bào)表中訪問(wèn)“數(shù)據(jù)庫(kù)專家”,請(qǐng)?jiān)?report designer 中右擊,指向“數(shù)據(jù)庫(kù)”,然后單擊“添加/刪除數(shù)據(jù)庫(kù)”。將報(bào)表連接到 ado.net 數(shù)據(jù)集對(duì)象 1. 在“數(shù)據(jù)庫(kù)專家”中,展開(kāi)“項(xiàng)
34、目數(shù)據(jù)”文件夾。 2. 展開(kāi)“ado.net 數(shù)據(jù)集”文件夾。 3. 選擇所需數(shù)據(jù)集對(duì)象。 例如,如果當(dāng)時(shí)使用的是從項(xiàng)目“windowsapplication1”的架構(gòu)文件“dataset1.xsd”中生成的數(shù)據(jù)集對(duì)象,則應(yīng)該選擇“windowsapplication1.dataset1”。 4. 選擇要向報(bào)表中添加的表,和使用其他數(shù)據(jù)源一樣。 五、動(dòng)態(tài)改變數(shù)據(jù)源的代碼 dim dsdataset as new dataset() dim orpt as new rptclient() '已建立的報(bào)表rptclient 請(qǐng)讀者自行填充數(shù)據(jù)集dsdataset '使用“報(bào)表引擎”
35、對(duì)象模型將填充的數(shù)據(jù)集,傳遞給報(bào)表 orpt.setdatasource(dsdataset.tables(0) ' 將帶有數(shù)據(jù)的報(bào)表對(duì)象綁定到 windows 窗體查看器,rptvew(crystalreportviewer控件) rptvew.reportsource = orpt注意 filldataset 方法可連接到指定的數(shù)據(jù)庫(kù),提取數(shù)據(jù),然后斷開(kāi)數(shù)據(jù)庫(kù)連接。如果您希望將數(shù)據(jù)庫(kù)中的多個(gè)表添加到報(bào)表中,請(qǐng)使用 sql join 語(yǔ)句將這些表聯(lián)接在一起;然后在 filldataset 方法中指定一個(gè)結(jié)果表六、創(chuàng)建主從報(bào)表在報(bào)表中,有許多報(bào)表是主從表結(jié)構(gòu),比如訂單與訂單商品明細(xì),訂
36、單是一個(gè)表中的一條記錄,而分錄是另一個(gè)表中的多條記錄,兩個(gè)表通過(guò)一個(gè)字段關(guān)聯(lián)起來(lái),這種報(bào)表可利用其分組功能實(shí)現(xiàn),1. 新建一個(gè)工程2. 往form1中添加一個(gè)crystalreportviewer控件3. 在服務(wù)噐資源管理器中連接到sql server 2000上的northwind數(shù)據(jù)庫(kù)4. 添加一個(gè)數(shù)據(jù)集dataset1,將服務(wù)器資源管理器中的orders和 order details加入到數(shù)據(jù)集中。5. 添加一個(gè)水晶報(bào)表,使用報(bào)表專家,在項(xiàng)目數(shù)據(jù)中選擇“ado.net數(shù)據(jù)集”,插入表orders和 order details,“鏈接”中是關(guān)聯(lián)字段的鏈接,在“字段”中選擇要顯示的主表和明細(xì)
37、表的字段,組中選擇分組依據(jù)為orders表ordersid字段,總計(jì),圖表,選擇(可進(jìn)行篩選),樣式(可設(shè)置報(bào)表標(biāo)題),可自行設(shè)置。設(shè)置完后,點(diǎn)擊完成。6. 在報(bào)表設(shè)計(jì)器中調(diào)整需要顯示的字段的位置、寬度等。7. 在窗口中添加代碼。 private sub form1_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load dim orpt as new crystalreport1() dim dsdataset as new dataset1() dim cn as new da
38、ta.sqlclient.sqlconnection("data source=pmserver;initial catalog=northwind;user id=sa;password=sa") cn.open() dim daorders as new data.sqlclient.sqldataadapter("select * from orders", cn) daorders.fill(dsdataset, "orders") dim dadetails as new data.sqlclient.sqldataadap
39、ter("select * from order details", cn) dadetails.fill(dsdataset, "order details") '使用“報(bào)表引擎”對(duì)象模型將填充的數(shù)據(jù)集,傳遞給報(bào)表 orpt.setdatasource(dsdataset) crystalreportviewer1.reportsource = orpt end sub8、運(yùn)行程序 七、用程序改變報(bào)表中text的文本代碼如下: dim gettextobject as textobject ' 按名稱獲取 reportobject,將其
40、轉(zhuǎn)換為 textobject,并返回此對(duì)象。 gettextobject = orpt.reportdefinition.reportobjects.item("text13") gettextobject.text = "xxxx系統(tǒng)" 總結(jié):水晶報(bào)表具有非常強(qiáng)大的功能,還可進(jìn)行導(dǎo)出word、excel、rtf等文件,還可生成復(fù)雜、漂亮圖表,是進(jìn)行web和windows報(bào)表開(kāi)發(fā)的利器。 (此文部分資料來(lái)自msdn)author:李洪根e-mail:lihonggen0 -csdn - 專家門診 - .net技術(shù) asp.net問(wèn)題 回復(fù) | 推薦 |
41、收藏 | 專題 | 公告 | 管理 | 保存 | 關(guān)閉窗口 主題: 有關(guān)水晶報(bào)表的使用經(jīng)驗(yàn)和資料總結(jié),歡迎各位使用過(guò)水晶報(bào)表的同仁把自己在使用過(guò)程中的總結(jié)、經(jīng)驗(yàn)、體會(huì)同大家共享! 作者: foxtoo (阿里巴巴和四十大盜) 等級(jí): 信 譽(yù) 值: 100 所屬論壇: .net技術(shù) asp.net 問(wèn)題點(diǎn)數(shù): 0 回復(fù)次數(shù): 56 發(fā)表時(shí)間: 2003-6-10 23:04:39 資料:asp.net中使用水晶報(bào)表(上) 2002-9-6 dotnet吧html在我們對(duì)vs.net中的水晶報(bào)表(crystal reports)進(jìn)行研究之前,我和我朋友對(duì)如何將這個(gè)復(fù)雜的東東加入我們的web應(yīng)用有著
42、非常的好奇心。一周以后,在閱讀了大量的“howto”文檔之后,我們成功地將一些簡(jiǎn)單的報(bào)告加入到了我們的a程序中,并得到了一些小決竅。 這篇文章教你如何在.net web應(yīng)用中使用水晶報(bào)表,也可以讓你在學(xué)習(xí)過(guò)程中少走一些彎路。為了得到最好的效果,讀者最好需要有一些基礎(chǔ)的asp.net訪問(wèn)數(shù)據(jù)庫(kù)的知識(shí)以及使用vs.net的開(kāi)發(fā)經(jīng)驗(yàn)。 簡(jiǎn)介 水晶報(bào)表可以由很多的方法得到,其中一個(gè)就是使用vs.net來(lái)創(chuàng)建,它提供了非常豐富模型以使我們能夠在運(yùn)行時(shí)操作屬性和方法。如果你正在使用vs.net開(kāi)發(fā).net程序,那么你就不需要再安裝其它軟件了,因?yàn)樗呀?jīng)內(nèi)嵌在vs.net中了。 優(yōu)點(diǎn): vs.net水晶報(bào)表
43、有下面一些主要的優(yōu)點(diǎn): 快速的報(bào)表開(kāi)發(fā) 能夠?qū)С龀蔀閺?fù)雜的交互性圖表 可以與其它控件一起在webform中使用 能夠動(dòng)態(tài)地將報(bào)表導(dǎo)出成為.pdf,.doc,xls,html,rtf等多種格式 結(jié)構(gòu): 一些組件組成了水晶報(bào)表的二層結(jié)構(gòu),需要的web應(yīng)用有: 客戶端 : 客戶端僅需要一個(gè)可以訪問(wèn)嵌入aspx頁(yè)面報(bào)表的游覽器就可以了 服務(wù)器 : - 水晶報(bào)表引擎(crystal report engine (crengine.dll)) 通過(guò)它可以完成一些任務(wù),如在報(bào)告文件中合并數(shù)據(jù),轉(zhuǎn)換報(bào)告為其它格式等。也正是因?yàn)閳?bào)告引擎的作用,才可以將asp.net中的水晶報(bào)表轉(zhuǎn)換成為普通html格式 - 水晶
44、報(bào)表設(shè)計(jì)器(crystal report designer (crdesigner.dll)) 水晶報(bào)表就是在設(shè)計(jì)器中創(chuàng)建的,在設(shè)計(jì)器中你可以設(shè)計(jì)標(biāo)題,插入數(shù)據(jù),公式,圖表,子報(bào)表等。 - .rpt報(bào)表文件 執(zhí)行報(bào)表中的第一步就是在水晶報(bào)表設(shè)計(jì)器接口創(chuàng)建此報(bào)表,在默認(rèn)安裝中微軟已經(jīng)提供了一些現(xiàn)成的.rpt例子。 - data source .rpt文件取得數(shù)據(jù)庫(kù)的方法取決于你方法的選擇,你能選擇讓水晶報(bào)表自己選擇數(shù)據(jù)而不使用任何代碼或者也可以選擇手動(dòng)的組裝dataset,然后再將其傳送到報(bào)表文件。 - 水晶報(bào)表查看控件(crystal report viewer web form contro
45、l (crwebformviewer.dll)) 水晶報(bào)表查看控件是一個(gè)webform控件,可以將它看成是一個(gè)在.aspx頁(yè)面中存放報(bào)表的容器。 注意:在一些復(fù)雜的操作中,報(bào)表服務(wù)器與web服務(wù)器可能不在同一物理主機(jī)上,web服務(wù)器將http請(qǐng)求傳送到報(bào)表服務(wù)器上去。水晶報(bào)表也可以當(dāng)做webservice來(lái)執(zhí)行。 執(zhí)行模式 水晶報(bào)表取數(shù)據(jù)可以使用下面的方法實(shí)現(xiàn): - pull 模式: 被請(qǐng)求時(shí),水晶報(bào)表直接根據(jù)指定的驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)然后組裝這些數(shù)據(jù)。 - push 模式 : 此時(shí)開(kāi)發(fā)表不得不自己編寫代碼連接數(shù)據(jù)并組裝dataset,同時(shí)將它傳送至報(bào)表。在些這種情況下,通過(guò)使用連接共享以及限制記錄
46、集合的大小,可以使用報(bào)表性能最大化。 報(bào)表類型: 水晶報(bào)表設(shè)計(jì)器能夠直接包含報(bào)表至工程也能夠使用獨(dú)立的報(bào)表對(duì)象。 - strongly-typed 報(bào)表 : 當(dāng)你將報(bào)表文件加入到項(xiàng)目中去時(shí),它就變成了一個(gè)了“ strongly-typed“報(bào)表。在這些情況下,你將擁有直接創(chuàng)建報(bào)表的對(duì)象的權(quán)力,這將減少一些代碼并且能夠提供一些性能。 - un-typed 報(bào)表 : 這里的報(bào)表并不直接包含在項(xiàng)目中,因此稱為un-typed 報(bào)表。在這種情況下,你不得不使用水晶報(bào)表的”reportdocuemt“對(duì)象建立一個(gè)實(shí)例,并且”手動(dòng)“地凋用報(bào)表。 其它注意事項(xiàng) - 盡管水晶報(bào)表查看器擁有一些很酷的功能,如縮
47、放、頁(yè)面導(dǎo)航等。但是他不提供打印功能,你不得不調(diào)用游覽器的打印功能。 - vs.net中的水晶報(bào)表如果沒(méi)有注冊(cè),那么它只能使用30次,30次后,”保存“功能就不能再使用了。為了避免這個(gè),你不是不在 (好像不是這樣子的,不注冊(cè)也好像能用很長(zhǎng)的時(shí)間,只是不能提供支持) - 默認(rèn)安裝的水晶報(bào)表只能支持5個(gè)用戶,為了支持更多的用戶,你不得不在 讓我們感受一下在a中使用一個(gè)現(xiàn)成的水晶報(bào)表文件 1) 從webform工具欄中拖動(dòng)水晶報(bào)表查看器控件(crystal report viewer)至.aspx頁(yè)面中。 2) 調(diào)出水晶報(bào)表查看器控件的屬性窗口 3) 點(diǎn)擊.按鈕查看"data bindin
48、g"屬性,并彈出了databinding窗口。4) 從左邊的"bindable屬性”區(qū)中選擇“report source”5) 選中"自定義綁定表達(dá)式"單選按鈕,在右邊的底部的窗口中指定.rpt文件的文件名和路徑,例如:"c:program filesmicrosoft visual studio.netcrystal reportssamplesreportsgeneral businessworld sales report.rpt",然后”確定“ 注意:文件”world sales report.rpt“文件是在vs.net安裝
49、時(shí)創(chuàng)建的。如果你在安裝過(guò)程中指定了其它目錄,此時(shí)你最好確認(rèn)一下路徑的正確性。 上面的步驟中實(shí)際上是插入了下面這些代碼至asp.net文件中: 以及: id="crystalreportviewer1" runat="server" width="350px" height="50px" reportsource=''> 注意:在飛刀我的vs.net正式版中自動(dòng)生成的代碼中reportsource產(chǎn)生的樣式不是這樣子的,它是: reportsource="" 這樣是錯(cuò)誤的,會(huì)
50、出現(xiàn)錯(cuò)誤信息,有兩處錯(cuò)誤: 必須按照使用本文介紹的格式來(lái)手動(dòng)修改,這也算是vs.net的一個(gè)bug吧。 6) 在page_load方法中調(diào)用databind方法。(代碼為vb.net) private sub page_load(byval sender as system.object, byval e as system.eventargs) databind() end sub 7)保存并編譯你的頁(yè)面。 現(xiàn)在,你就有一個(gè)內(nèi)嵌水晶報(bào)表的webform頁(yè)面了。 注意:實(shí)際開(kāi)發(fā)中,一開(kāi)始會(huì)出現(xiàn)無(wú)法訪問(wèn)inetsrv目錄的錯(cuò)誤,解決的辦法是改變其目錄的安全屬性,使user用戶有可寫的權(quán)限。飛刀我
51、發(fā)現(xiàn).net系統(tǒng)自已給出的解決方法是沒(méi)有用的,也可能是我使用的是windows.net操作系統(tǒng)的原因。 /html 回復(fù)人: foxtoo(阿里巴巴和四十大盜) ( ) 信譽(yù):100 2003-6-10 23:04:53 得分:0 asp.net中使用水晶報(bào)表(中) 2002-9-6 dotnet吧html使用pull模式我們將通過(guò)下面的這些步驟來(lái)通過(guò)pull模式來(lái)執(zhí)行水晶報(bào)表 1.首先創(chuàng)建rpt文件,并使用水晶報(bào)表設(shè)計(jì)接口設(shè)置一些必須的數(shù)據(jù)連接。 2.拖放一個(gè) crystalreportviewer控件至aspx頁(yè)面,設(shè)置它的屬性指定我們上一步創(chuàng)建的.rpt文件。 3. 在代碼中調(diào)用data
52、bind方法。創(chuàng)建 .rpt 文件:1) 在右擊”解決方案游覽器“,在彈出的菜單中選擇”添加“”添加新項(xiàng)“>”crystal report” 2) 在”crystal report 庫(kù)”中選擇”作為空白報(bào)表“單選按鈕,最后單擊“確定“。 3)這里將彈出水晶報(bào)表設(shè)計(jì)器。 4) 右擊報(bào)表中的”詳細(xì)資料區(qū)”,選擇“數(shù)據(jù)庫(kù)”>“添加/刪除數(shù)據(jù)庫(kù)."5) 在彈出的”數(shù)據(jù)庫(kù)專家“中,擴(kuò)展”ole db(ado)“選項(xiàng),此時(shí)會(huì)彈出另外一個(gè)”ole db(ado)“窗口。6) 在 "ole db (ado)" 彈出窗口中,選擇 "microsoft ole db provider for sql server" 然后 "next" 7) 指定連接的信息服務(wù)器 : aspcn (您的機(jī)器是什么名字就寫什么) 用戶 id: sa密碼:數(shù)據(jù)庫(kù) : pubs8) 單擊”next“,最后單擊”finish“按鈕。9) 這時(shí)你就能在”數(shù)據(jù)庫(kù)專家
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生院勞動(dòng)合同模板
- 勞動(dòng)合同變更協(xié)議書
- 酒水銷售協(xié)議合同范本
- 物理真題:2024年高考遼寧卷物理真題
- 2024年中考物理(長(zhǎng)沙卷)真題詳細(xì)解讀及評(píng)析
- 進(jìn)戶門購(gòu)銷合同
- 2025標(biāo)準(zhǔn)網(wǎng)站開(kāi)發(fā)合同
- 2025軟件購(gòu)買合同
- 育兒嫂家政服務(wù)勞動(dòng)合同協(xié)議
- 技能培訓(xùn)對(duì)員工職業(yè)素質(zhì)的影響
- 醫(yī)院6s管理成果匯報(bào)護(hù)理課件
- 微整培訓(xùn)課件
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 第19章 一次函數(shù) 單元整體教學(xué)設(shè)計(jì) 【 學(xué)情分析指導(dǎo) 】 人教版八年級(jí)數(shù)學(xué)下冊(cè)
- 電梯結(jié)構(gòu)與原理-第2版-全套課件
- IEC-62368-1-差異分享解讀
- 2022-2023學(xué)年廣東省佛山市順德區(qū)高三(下)模擬英語(yǔ)試卷
- 節(jié)后復(fù)工培訓(xùn)內(nèi)容五篇
- GB/T 33322-2016橡膠增塑劑芳香基礦物油
- GA 1051-2013槍支彈藥專用保險(xiǎn)柜
- 某水毀公路維修工程施工方案
評(píng)論
0/150
提交評(píng)論