版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Crystal水晶報(bào)表基礎(chǔ)知識(shí)匯總(一)制作B/S的朋友肯定對(duì)Crystal Report絕不陌生 功能強(qiáng)大,方便 我在網(wǎng)上查找了許多關(guān)于 CrystalReport的資料 對(duì)其做了整理、調(diào)試 在自己學(xué)習(xí)的同時(shí),也希望拿岀來與大家分享不足之處請(qǐng)多指教、Crystal報(bào)表的建立水晶報(bào)表在應(yīng)用時(shí)分兩種方法,分別是 拉模式(PULL )、推模式(PUSH )拉模式:在水晶報(bào)表生成時(shí)的數(shù)據(jù)源是從水晶報(bào)表文件中的SQL語句從數(shù)據(jù)庫(kù)中提取的,在編程時(shí)不用重寫SQL語句,但要加上登錄信息推模式:在水晶報(bào)表生成時(shí)的數(shù)據(jù)源,是用編程時(shí)重寫水晶報(bào)表中SQL語句而生成的dataset對(duì)像也就是說,推模式是用 dat
2、aset組裝水晶報(bào)表水晶報(bào)表組件介紹:水晶報(bào)表在VS2005中有兩種組件:WEB 項(xiàng)目中分別是 CrystalReportSource , CrystalReportViewerFORM 項(xiàng)目里是分別是 CrystalReport ,CrystalReportViewerCrystalReportSource,crystalReport是水晶報(bào)表的數(shù)據(jù)提供者;CrystalReportViewer是水晶報(bào)表的瀏覽器另外還要介紹一下水的報(bào)表的文件是以rpt為擴(kuò)展名的文件,該文件可以用VS2005生成WINFORM中的建立:1. 首先建立一個(gè)新的項(xiàng)目工程,在項(xiàng)目中添加一個(gè) Crystal報(bào)表 在報(bào)
3、表的創(chuàng)建向?qū)е形覀儎?chuàng)建一個(gè)新的OLE DB(ADO )連接,以便于我們對(duì) SQL數(shù)據(jù)庫(kù)中表的連接2. 在彈出的連接類型窗口內(nèi),選擇Microsoft OLE DB Provider for SQL Server一項(xiàng),以確立報(bào)表的數(shù)據(jù)連接為SQL服務(wù)類3. 在連接信息當(dāng)中選擇所需使用的服務(wù)器名,并輸入相應(yīng)用戶ID和密碼,選擇好報(bào)表所要連接的數(shù)據(jù)庫(kù)后,新的數(shù)據(jù)庫(kù)連接便建立完成此時(shí),我們可以從報(bào)表數(shù)據(jù)連接窗口中看到我們所創(chuàng)建的報(bào)表,并選擇需要的表,進(jìn)行數(shù)據(jù)連接4. 此后,我們可以根據(jù)報(bào)表向?qū)нM(jìn)行表間關(guān)聯(lián)、排序索引設(shè)置、;樣式選擇等表的初始化設(shè)置完成Crystal報(bào)表與SQL服務(wù)器內(nèi)數(shù)據(jù)連接以后,我們
4、可以在報(bào)表中預(yù)覽所創(chuàng)建的報(bào)表樣5 對(duì) Crystal 報(bào)表進(jìn)行保存后, 在 WINFORM 的窗口中建立 CrystalReportViewer 控件, 生成水晶報(bào)表的預(yù)覽窗口 在建立中,我們可以根據(jù)需要對(duì)該控件的添加項(xiàng)進(jìn)行篩選,包括顯示工具欄、顯示組樹、顯示狀態(tài)欄三項(xiàng)6 在 WINFORM 窗口中添加 ReportDocument 控件,并為該控件選擇一個(gè)需要進(jìn)行類型化的 Report 表單WEBFORM 中的建立:建立方法與 WINFORM方式基本相同,但不需要建立 ReportDocument在建立過程中一定注意,在.aspx 設(shè)計(jì)器中建立 CrystalReportViewer 與 C
5、rystalReportsource 兩個(gè)控件,前者用作水晶報(bào)表的預(yù)覽,后者起到 報(bào)表與預(yù)覽連接的作用,負(fù)責(zé)建立 CrystalReportViewer 與 Crystal 報(bào)表間的連接二、 報(bào)表數(shù)據(jù)的連接拉模式( PULL ):WINFORM 中建立連接:方式一:如果該頁(yè)面只調(diào)用固定的一個(gè) Crystal 報(bào)表,可以直接在 CrystalReportViewer 中進(jìn)行選擇報(bào)表,將 Crystal 報(bào)表與其進(jìn)行綁定方式二:如果頁(yè)面需根據(jù)具體要求,調(diào)用不同的報(bào)表進(jìn)行顯示,那么我們就需要通過對(duì)報(bào)表的連接的設(shè)置來完成這一功能程序如下:/CrystalReport1.rpt 是水晶報(bào)表文件的名稱;
6、CrystalReport11 是從工具箱加到頁(yè)面上的 CrystalDocumentcrystalReport11.Load( Application .StartupPath + "CrystalReport1.rpt" );/ 運(yùn)用 CrystalDocument 讀取所需 Crystal 表單路徑;crystalReport11.SetDatabaseLogon("sa", "" , "BENQ-JAY" , "Userdatabase" );/進(jìn)行 CrystalDocument 連接
7、服務(wù)器的設(shè)置,其中第一參數(shù):用戶名;第二參數(shù):密碼;第三參 數(shù):服務(wù)器名;第四參數(shù):數(shù)據(jù)庫(kù)名crystalReportViewer1.ReportSource = crystalReport11;/ 將 CrystalReportViewer 的報(bào)表源指向 CrystalDocumentWEBFORM 中建立連接: 方式一:在 CrystalReportSource 中直接對(duì)表單源進(jìn)行配置,選擇需要宣示的表單 在 CrystalReportViewer 中將報(bào)表源指定為 CrystalReportSource ,即可在該網(wǎng)頁(yè)中生成指定報(bào)表的水晶報(bào)表 方式二:通過程序進(jìn)行具體配置,將所需 Cry
8、stal 報(bào)表與預(yù)覽頁(yè)面進(jìn)行連接 實(shí)現(xiàn)報(bào)表的靈活性選擇 程序如下:/ CrystalReport.rpt 是水晶報(bào)表文件的名稱; CrystalReportSource1 是從工具箱加到頁(yè)面上的水晶報(bào)表數(shù)據(jù)源 對(duì)像CrystalReportSource1.ReportDocument.Load(Server.MapPath( "CrystalReport.rpt" );/ 讀取 Crystal 表單所在路徑,將其與 CrystalReportSource 進(jìn)行綁定CrystalReportSource1.ReportDocument.SetDatabaseLogon(&qu
9、ot;sa", "", "BENQ-JAY" , "UserDatabase" );/進(jìn)行數(shù)據(jù)庫(kù)連接,參數(shù)一:用戶名;參數(shù)二:密碼;參數(shù)三:服務(wù)器名;參數(shù)四:數(shù)據(jù)庫(kù)名 CrystalReportSource1.DataBind();/ 對(duì) CrystalReportSource 進(jìn)行數(shù)據(jù)綁定CrystalReportViewer1.ReportSource = CrystalReportSource1;/ 將預(yù)覽源指定為 CrystalReportSourceCrystalReportViewer1.DataBind();/
10、 對(duì) CrystalReportViewer 進(jìn)行數(shù)據(jù)綁定推模式( PUSH ):在推模式下,必須建立DataSet數(shù)據(jù)集,用來進(jìn)行數(shù)據(jù)源填充 在推模式中編程組裝的 DataSet里的SQL 語句中的字段要與水晶報(bào)表里的 SQL 語句字段一致WINFORM 中建立連接:程序如下:string sql = "select * from UserInfor" ;string conn = "server=BENQ-JAY;Database=UserDatabase;uid=Sa;Pwd=;" ;DataSet ds = new DataSet();SqlCo
11、nnection con1 = new SqlConnection (conn);SqlCommand cmd1 = new SqlCommand (sql, con1);SqlDataAdapter sqlad = new SqlDataAdapter ();sqlad.SelectCommand = cmd1;/ 獲得一個(gè) TRANSACT-SQL 存儲(chǔ)過程,用于在數(shù)據(jù)源中選擇記錄sqlad.Fill(ds, "sql" );/ 填充 SQL 命令所指定的行crystalReport11.Load( Application .StartupPath + "Cr
12、ystalReport1.rpt" ); crystalReport11.SetDataSource(ds.Tables"sql" );crystalReportViewer1.ReportSource = crystalReport11;WEBFORM 中建立連接:程序如下:string sql = "select * from UserInfor" ;string con1 = "server=BENQ-JAY;Database=UserDatabase;uid=sa;pwd=;" ;DataSet ds = new D
13、ataSet();SqlConnection con = new SqlConnection (con1);SqlCommand com = new SqlCommand (sql, con);SqlDataAdapter sqlad = new SqlDataAdapter ();sqlad.SelectCommand = com;sqlad.Fill(ds, "sql" );CrystalReportSource1.ReportDocument.Load(Server.MapPath( "CrystalReport.rpt" ); CrystalRe
14、portSource1.ReportDocument.SetDataSource(ds.Tables"sql" );CrystalReportSource1.DataBind();CrystalReportViewer1.ReportSource = CrystalReportSource1;CrystalReportViewer1.DataBind();三、 報(bào)表打印水晶報(bào)表的 CrystalReportViewer 中默認(rèn)配備的工具欄可實(shí)現(xiàn)打印功能,但其功能比較單 無法進(jìn)行打印機(jī)選擇。我們可以用代碼設(shè)置的方法進(jìn)行Crystal 表單的打印功能。WINFORM 中的打印:
15、代碼如下:private void print_Click(object sender, EventArgs e)try CrystalDecisions.CrystalReports.Engine.ReportDocument rd = new CrystalDecisions.CrystalReports.Engine.ReportDocument();/ 加載表格的打印屬性rd.Load("E:Projectstest1test1CrystalReport1.rpt");/ 設(shè)定表格路徑 rd.PrintOptions.PrinterName = printerLis
16、t.Text.ToString();/ 添加打印機(jī) rd.PrintToPrinter(1, true, 0, 0);/ 設(shè)置打印參數(shù)catch (Exception ex)MessageBox.Show(ex.Message.ToString();private void Form1_Load(object sender, EventArgs e)tryPrintDocument prtdoc = new PrintDocument();string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;/ 獲取默認(rèn)的 打印機(jī)名fore
17、ach (String strPrinter in PrinterSettings.InstalledPrinters)/ 在列表框中列出所有的打印機(jī) , printerList.Items.Add(strPrinter);if (strPrinter = strDefaultPrinter)/ 把默認(rèn)打印機(jī)設(shè)為缺省值 printerList.SelectedIndex = printerList.Items.IndexOf(strPrinter);crystalReport11.Load(Application.StartupPath + "CrystalReport1.rpt&q
18、uot;);/ 設(shè)置 報(bào)表路徑crystalReport11.SetDatabaseLogon("sa", "", "BENQ-JAY", "Userdatabase");/ 設(shè)置服務(wù)器連接信息crystalReportViewer1.ReportSource = crystalReport11;/ 綁定報(bào)表catch (Exception ex)MessageBox.Show(ex.Message.ToString();代碼中, 我們實(shí)現(xiàn)了水晶報(bào)表的選擇, 在進(jìn)行水晶報(bào)表的添加后, 我們可以從水晶報(bào)表窗口 中看到
19、我們添加的頁(yè)面信息,從而實(shí)現(xiàn)打印預(yù)覽。此外,我們?cè)谝粋€(gè) combobox 中實(shí)現(xiàn)了對(duì) 本地打印機(jī)的枚舉, 在進(jìn)行頁(yè)面打印之前, 可以先對(duì)打印機(jī)進(jìn)行選擇。 從而使打印更加靈活。WEBFORM中的打印:在 WEBFORM中實(shí)現(xiàn)頁(yè)面加載與打印選擇的方式與WINFORM中基本相同。不同之處在于:文件路徑的選擇方法上采用 server.mappath() 方法。在枚舉打印機(jī)時(shí), 我們使用 DropDownList 進(jìn)行顯示。代碼如下: protected void Page_Load(object sender, EventArgs e)tryCrystalReportSource1.ReportDoc
20、ument.Load(Server.MapPath("CrystalReport.rpt");CrystalReportSource1.ReportDocument.SetDatabaseLogon("sa", "", "BENQ-JAY", "UserDatabase");CrystalReportSource1.DataBind();CrystalReportViewer1.ReportSource = CrystalReportSource1; CrystalReportViewer1.D
21、ataBind();PrintDocument prtdoc = new PrintDocument();string strDefaultPrinter = prtdoc.PrinterSettings.PrinterName;/ 獲取默認(rèn)的打印 機(jī)名foreach (String strPrinter in PrinterSettings.InstalledPrinters)/ 在列表框中列出所有的打印機(jī) ,DropDownList1.Items.Add(strPrinter);/ 使用 DropDownList 進(jìn)行打印機(jī)枚舉catch (Exception ex)this.Respon
22、se.Write("<script>alert('" + ex.ToString() + "')</script>");protected void Button1_Click(object sender, EventArgs e)CrystalDecisions.CrystalReports.Engine.ReportDocumentrd=newCrystalDecisions.CrystalReports.Engine.ReportDocument();rd.Load(Server.MapPath("
23、CrystalReport.rpt"); 從 WEB服務(wù)器上獲取文件物理位置 rd.PrintOptions.PrinterName = DropDownList1.Text.ToString();rd.PrintToPrinter(1, true, 0, 0);四、 數(shù)據(jù)導(dǎo)出水晶報(bào)表在 C/S 中的 CrystalReportViewer 控件可以實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)出功能。包括PDF、XLS、DOC以及RTF格式。在B/S中則無法實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出的多樣化。為此,我們通過對(duì)參數(shù)的設(shè)置,完成對(duì)水晶報(bào)表的數(shù)據(jù)導(dǎo)出。程序如下:private void ExportCrv(CrystalReport cr, string strType, string strPath)DiskFileDestionOptions dOpt=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 祖國(guó)在我心中話題演講稿(32篇)
- 小學(xué)科學(xué)教學(xué)工作總結(jié)13篇
- 就業(yè)前景的調(diào)研報(bào)告范文8篇
- 安徽省合肥市2025屆高三上學(xué)期教學(xué)診斷檢測(cè)(四)數(shù)學(xué)含答案
- 2024年金屬基超硬材料項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 陜西省榆林市(2024年-2025年小學(xué)五年級(jí)語文)統(tǒng)編版專題練習(xí)(上學(xué)期)試卷及答案
- 湖北省武漢市(2024年-2025年小學(xué)五年級(jí)語文)人教版期末考試((上下)學(xué)期)試卷及答案
- 2024年飲料、酒及酒精專用原輔料項(xiàng)目投資申請(qǐng)報(bào)告代可行性研究報(bào)告
- 高考生物一輪專題突破練專題一細(xì)胞的分子組成和結(jié)構(gòu)功能教案
- 上海市市轄區(qū)(2024年-2025年小學(xué)五年級(jí)語文)人教版摸底考試((上下)學(xué)期)試卷及答案
- 《短視頻拍攝與制作》課件-3短視頻中期拍攝
- (正式版)JBT 11517-2024 刮板取料機(jī)
- 湘少版英語五年級(jí)下冊(cè)全冊(cè)教案(教學(xué)設(shè)計(jì))
- 2024醫(yī)院消防培訓(xùn)
- 上海中心大廈綠色結(jié)構(gòu)設(shè)計(jì)關(guān)鍵技術(shù)
- 1960年文教群英會(huì)表彰名單
- 我們的太陽系兒童故事
- 智聯(lián)招聘題庫(kù)國(guó)企筆試題型
- “文明交通-安全出行”主題班會(huì)
- 非車險(xiǎn)新人培訓(xùn)課件
- 老舊小區(qū)物業(yè)管理方案
評(píng)論
0/150
提交評(píng)論