使用ActiveReport for net 進行報表開發(fā)_第1頁
使用ActiveReport for net 進行報表開發(fā)_第2頁
使用ActiveReport for net 進行報表開發(fā)_第3頁
使用ActiveReport for net 進行報表開發(fā)_第4頁
使用ActiveReport for net 進行報表開發(fā)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

使用ActiveR進行報表開發(fā)(一)—開始ActiveReport是.net下的一個出色的報表開發(fā)程序,雖然和水晶報表相比,名氣不那么大,甚至有很多人不知道它的存在,但是并不妨礙它在.net報表開發(fā)中的出色表現(xiàn),本文將一步一步地介紹如何使用它和VS2005開發(fā).net報表。1.安裝:你可以從DataDynamics的網(wǎng)站上下載最新的ActiveR2,你可以免費使用,但是在生成的報表最下邊有水印,不過不影響報表的整體美觀。下載后直接安裝就可以了。安裝完后會看到開始-程序菜單里的DataDynamics的目錄,里面包括了,幫助,例子程序等。第一個Winform報表程序。在安裝完成后,啟動VS2005,會看到啟動界面上有ActiveReport的圖標,進入后新建一個工程,并且給工程添加新文件,在文件類型中就可以看到ActiveReport文件的圖標。給報表文件命名為ActiveReport1,確定后會看到項目中有一個ActiveReportl.rpx文件,這個就是報表文件了。打開文件,就是報表的設計界面,在這里可以看到三部分,PageHeader(表頭),Detail(明細),PageFooter(表尾)。打開工具箱,給Detail部分隨便添加一個Label。下面就要顯示這個報表了,在Form上添加一個Viewer控件,如果工具箱里沒有,可以通過配置工具箱來找到它。Viewer添加完后,在Form中寫代碼:ActiveReports1rpt=newActiveReports1();rpt.Run();this.viewer1.Document=rpt.Document;然后F5運行,就可以看到在Viewer控件中顯示報表了。要注意的是,項目名稱不要命名為ActiveReport,否則會提示找不到ActiveReport.rpx文件。第一個web報表程序。Web方式的報表開發(fā)方式和winform的差不多,不同的是,web方式下需要作一些配置,配置過程不再累述,可以在幫助里搜索“ManuallyConfiguringWebSamples",按照里面的步驟對IIS作配置。要注意的是,如果使用的是VS2005,那么可以不作配置,只要在創(chuàng)建Web項目的時候文件位置選項設置為“文件系統(tǒng)”就可以直接運行了。還要注意的是,在web方式下,需要在web.config文件中添加下面這段:<httpHandlers><addverb="*"path="*.rpx"type="DataDynamics.ActiveReports.Web.Handlers.RpxHandler,ActiveReports.Web,Version=238,Culture=neutral,PublicKeyToken=cc4967777c49a3ff"/><addverb="*"path="*.ActiveReport"type="DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler,ActiveReports.Web,Version=238,Culture=neutral,PublicKeyToken=cc4967777c49a3ff"/><addverb="*"path="*.ArCacheItem"type="DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler,ActiveReports.Web,Version=238,Culture=neutral,PublicKeyToken=cc4967777c49a3ff"/></httpHandlers>如果是VS2005,系統(tǒng)會自動添加。接下來的就和winform下的差不多了,不同的是,要在解決方案中新增一個“類庫”項目,在這個項目中新建報表文件,然后在Web項目中添加對類庫項目的引用,然后在頁面上添加WebViewer控件,然后編寫代碼:this.WebViewer1.Report=newYourNamespace.ActiveReports1();然后運行界面,就可以看到在WebViewer中加載的報表了。你可以通過WebViewer的ViewType屬性來設置在頁面上如何顯示,例如,如果選擇了AcrobatReader,就會給報表生成一個PDF文檔在頁面上嵌入顯示。下次我們將演示如何在報表上加載和顯示數(shù)據(jù)使用ActiveR進行報表開發(fā)(二)--綁定數(shù)據(jù)源在上篇隨筆中寫了一個使用ActiveR的最簡單的例子,本文將演示在ActiveReport中如何綁定數(shù)據(jù)源先建一個表chartingTable,有兩個字段,OnlineUserCount,Project,通過向?qū)蒁ataSet,并拖放生成TableAdapter。接下來在報表設計器中設計顯示格式,在PageHeader中放置兩個label,分別為“項目”和“在線人數(shù)"。再在Detail區(qū)方式兩個對應的Label,分別設置DataFiled為Project和OnlineUserCount,在運行的時候?qū)吹竭@兩個Label顯示的是對應字段中的內(nèi)容??梢越o報表指定DataSet或DataView作為數(shù)據(jù)源,下面演示給報表設置數(shù)據(jù)源:使用DataSet:this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable);rpt.DataSource=this.dataSet1;rpt.DataMember=this.dataSet1.ChartingTable.TableName;rpt.Run();this.viewer1.Document=rpt.Document;使用DataView:this.chartingTableTableAdapter.Fill(this.dataSet1.ChartingTable);DataViewdv=this.dataSet1.ChartingTable.DefaultView;;rpt.DataSource=dv;dv.RowFilter="project='1'";rpt.Run();this.viewer1.Document=rpt.Document;我們還可以通過報表設計器來給報表指定數(shù)據(jù)源。在報表設計器的Detail部分的頭部,有一個數(shù)據(jù)庫一樣的小圖標,點擊它后會出現(xiàn)向?qū)?按照向?qū)б徊讲竭B接數(shù)據(jù)庫,并定義查詢就可以了。上面演示的是使用數(shù)據(jù)集作為數(shù)據(jù)源進行綁定,但是實際項目中經(jīng)常會用到使用對象集合作為數(shù)據(jù)源顯示,下一次我們將演示如何在報表上顯示一個對象集合中的數(shù)據(jù)。使用ActiveR進行報表開發(fā)(三)—顯示對象集合中的數(shù)據(jù)上篇隨筆演示了在ActiveR中如何綁定數(shù)據(jù)源,例女廿DataSet,DataView。本文將通過一些示例代碼繼續(xù)演示如何綁定對象集合以及如何從對象集合或列表中提取數(shù)據(jù)。直接綁定:我們可以自己定義一個Collection,從IList繼承,并使其中的每個對象都是一個實體,例如:Customer和CustomerCollection。然后給ActiveReport報表的DataSource直接賦值為CustomerCollection的實例就可以了。這種綁定方法在ActiveR自帶的例子里有完整的演示。手工加載顯示對象的數(shù)據(jù):在這里要用到兩個事件:DataInitialize和FetchData。DataInitialize用來定義字段列表,獲取數(shù)據(jù)等工作,F(xiàn)etchData用來指定每個字段的值。我們簡單定義一個Customer類publicclassCustomer{publicintID;publicstringName;publicstringAddress;}再給報表定義一個Customer數(shù)組,用來保存要顯示的數(shù)據(jù),比如:publicCustomer[]customers;還需要一個值來保存當前記錄的索引:privateintindex=0;接下來在DataInitialize中定義報表有那些字段:this.Fields.Add("Name");this.Fields.Add("Address");然后在FetchData事件中添加以下代碼:if(this.index>=this.customers.Length){eArgs.EOF=true;return;}else{eArgs.EOF=false;}this.Fields["Name"].Value=customers[this.index].Name;this.Fields["Address"].Value=customers[this.index].Address;this.index+=1;這段代碼的含義就是將Customer數(shù)組中的每個Customer實例的Name和Address屬性值賦給報表的Name和Address字段。代碼中的第一個if分支是判斷是否已經(jīng)加載到了最后一條數(shù)據(jù),如果是,設置eArgs.EOF為ture,并返回,否則繼續(xù)加載下一條數(shù)據(jù)。然后我們可以將要顯示的數(shù)據(jù)放在Customers數(shù)組中,并啟動顯示報表:Customer[]customers=newCustomer[2];Customerc=newCustomer();c.Name="James";c.Address="Noljadfallsjf";Customerc2=newCustomer();c2.Name="Joe";c2.Address="adfaafadf";customers[0]=c;customers[1]=c2;rpt.customers=customers;rpt.Run();this.viewer1.Document=rpt.Document;通過上面的示例可以看到,第二種方式雖然比較煩瑣,需要程序員自己處理很多東西,但是這樣程序員擁有完全的操控能力,特別是需要對取出的數(shù)據(jù)作很多復雜的處理時,這樣的操控能力是非常重要的。在下一篇隨筆中,將展示如何使用子報表來作顯示主從表。使用ActiveR進行報表開發(fā)(四)—顯示主從表上篇隨筆演示了在ActiveR中如何從對象集合中提取數(shù)據(jù)。本文簡單介紹如何使用子報表來顯示主從表中的數(shù)據(jù)。在需要顯示主從表中的數(shù)據(jù)時,使用子報表能夠提供很大的靈活性,一般就是把主表的信息顯示在detail中,如果要每頁的上方都要顯示主表,就可以放在PageHeader中。再把子表的信息放在Detail中,然后把子報表中的控件直接綁定到數(shù)據(jù)源上或者使用上篇隨筆中的提到的方式從對象集合中提取數(shù)據(jù)。使用子報表:新建報表,然后在工具箱上可以看到SubReport控件,拖放一個控件到Detail部分,用此控件來加載子報表。再新建一個報表,命名為SubReport1,接下來在主報表中寫代碼,在頁面設計器上選中Detail部分,在屬性窗口切換到事件欄,雙擊Format,將會產(chǎn)生Detail_Format事件,下面就要在這個事件里指定子報表控件所要加載的報表。由于Detail部分會進行重復顯示的,所以,只能指定一次報表源,在這里,我們按照下面的例子:ActiveReportsub=null;privatevoidDetail_Format(objectsender,System.EventArgseArgs)if(sub==null){sub=newActiveReports2();this.SubReport.Report=sub;}}先定義一個全局的子報表,然后在Detail_Format事件中對其進行初始化。還有要注意的一點是,在使用完子報表后要將其釋放,銷毀掉,具體的代碼放在主報表的ReportEnd事件中,例如:privatevoidActiveReports1_ReportEnd(objectsender,System.EventArgseArgs){sub.Document.Dispose();sub.Dispose();sub=null;}下面剩下的工作就是擺放控件并設置顯示的字段了,加載數(shù)據(jù)等等了,前面的隨筆都有介紹。下篇隨筆中將介紹如何使用ActiveR開發(fā)交叉報表。進行報表開發(fā)(五)使用ActiveR—交叉報表進行報表開發(fā)(五)交叉報表是一種常見的報表類型,而且開發(fā)起來也是比較煩瑣的一種報表,在ActiveReport中,對交叉報表提供了足夠的靈活性,使你能夠應對各種復雜的業(yè)務邏輯。在上篇隨筆演示了顯示主從表后,本篇隨筆簡單介紹如何制作交叉報表。交叉報表的一個常見應用就是用作顯示銷售額的報表上,例如,顯示多個連鎖店一年內(nèi)每個月的銷售額,常把月份作為列來顯示,每個店用一行來表示:店名1月2月3月4月AC5002001000050000BC511852454545124578但是在數(shù)據(jù)庫中的存儲常常采用下面的方式SalesMonthShop123121AB2434232AB3232323AB12313121BC12322BC這樣就需要在顯示前對數(shù)據(jù)進行處理,把銷售額和月份轉(zhuǎn)換到列上,我們可以在取數(shù)據(jù)時使用sql來進行這些操作,在這里,為了演示在activeReport中的使用,把轉(zhuǎn)換放到報表里來作,為了簡化例子,我們只顯示第一個季度每月的銷售額。取數(shù)據(jù):使用SelectSales,Month,ShopfromCrossReportOrderbyShop這樣的sql直接取數(shù)據(jù),不作任何合計或轉(zhuǎn)換處理。轉(zhuǎn)換:我們來定義一個簡單的對象來表示最終要顯示的記錄:publicclassSale{publicdecimalmoney1;//一月publicdecimalmoney2;//二月publicdecimalmoney3;//三月publicstringshopname;}同時在定義一個Sale的集合sales,來保存轉(zhuǎn)換后的數(shù)據(jù)。由于在表中每個店會對應多條記錄,為了把多條記錄合并為一條,要進行下面的轉(zhuǎn)換動作//用來保存已經(jīng)計算過的店鋪,保證每個店鋪只有一條記錄ArrayListshopname=newArrayList();while(dr.Read()){if(!shopname.Contains(dr.GetString(2)))//該店鋪的第一條記錄{Sales=newSale();s.shopname=dr.GetString(2);//取店名shopname.Add(s.shopname);if(dr.GetInt32(1)==1)//一月{s.money1=dr.GetDecimal(0);}elseif(dr.GetInt32(1)==2)//二月{s.money2=dr.GetDecimal(0);}elseif(dr.GetInt32(1)==3)//三月{s.money3=dr.GetDecimal(0);}sales.Add(s);}else//不是該店鋪的第一條記錄{Sales=(Sale)sale[sales.Count-1];if(dr.GetInt32(1)==1){s.money1=dr.GetDecimal(0);}elseif(dr.GetInt32(1)==2){s.money2=dr.GetDecimal(0);}elseif(dr.GetInt32(1)==3){s.money3=dr.GetDecimal(0)}}}3. 表示:上面是對從數(shù)據(jù)庫中取出的記錄作轉(zhuǎn)換,將其變成在報表上要顯示的格式。接下來就要在報表上顯示Sales集合中的數(shù)據(jù)了。我們可以按照前幾篇隨筆中介紹的方法來作:在界面上擺放控件,并設置其FiledName字段在報表的Datalnitialize事件中設置Filed集合,取出數(shù)據(jù):this.Fields.Add("money1");this.Fields.Add("money2");this.Fields.Add("money3");this.Fields.Add("shopname");this.GetReportData();//取數(shù)據(jù)并作轉(zhuǎn)換設置一個標記來表示是否顯示到了最后一條記錄:intindex=0;在FetchData事件中顯示Sales集合中的數(shù)據(jù):if(index==sales.Count)//如果到了最后一條記錄,就跳出{eArgs.EOF=true;return;}else{eArgs.EOF=false;}Sales=(Sale)sales[index];this.Fields["shopname"].Value=s.shopname;this.Fields["money1"].Value=s.money1;this.Fields["money2"].Value=s.money2;this.Fields["money3"].Value=s.money3;index+=1;按照上面的步驟,主要的代碼都完成了,當然要在窗體上顯示,還要加一個Viewer,然后指定加載的報表:ActiveReports1rpt=newActiveReports1();rpt.Run();this.viewer1.Document=rpt.Document;如果你不滿意顯示的效果,可以給報表加上線框,讓其顯示成表格總結(jié):例子中的代碼有重復,但是為了說明轉(zhuǎn)換的過程,沒有作優(yōu)化,另外,也可以看到,代碼中使用了ArrayList,出現(xiàn)了裝箱,拆箱的動作,所以性能還有優(yōu)化的空間。從表數(shù)據(jù)到顯示用數(shù)據(jù)的轉(zhuǎn)換可以在Sql中作,但是業(yè)務邏輯較復雜的時候,Sql就顯得力不從心,例如,顯示每月的數(shù)據(jù),而且還有收入,支出,如果再加上稅收,折扣,損耗,租金,和上年同期的比較等等無法預測的業(yè)務邏輯,如果把SQL寫在代碼中,調(diào)試成問題,如果寫成存儲過程,有破壞了封裝。所以相比之下,在代碼中進行的轉(zhuǎn)換工作雖然較復雜,但是還是具有靈活的優(yōu)勢的。使用ActiveR進行報表開發(fā)(六)--導出報表ActiveReport提供了多種文件格式的導出,包括:Html,Pdf,Text,Rtf,Xls,Tiff,這幾種格式中,Pdf是效果最好,因為有了抗鋸齒,線條和字體看起來都光滑的多,而且是完全的所見即所得,加上很多Web項目都采用Pdf作為報表顯示的文件格式,導出Pdf應該是首選。由于是把報表直接生成了圖片,Tiff格式的導出也是所見即所得的。其他的文件格式的限制都比較多,每種文件格式的限制可以在ActiveReport的幫助中搜索“LimitationsinExportFormats",其中有詳細的列表。將報表導出的步驟也很簡單,先要在工具欄上添加導出要用的控件,這組控件有:HtmlExport,PdfExport,RtfExport,TextExport,TiffExport,XlsExport六種。這里以PdfExport為例:拖放一個PdfExport控件到窗體上,就可以進行導出操作了,代碼很簡單,我們假設有一個報表文件和一個Viewer:窗體加載的時候:ActiveReports1rpt=newActiveReports1();rpt.Run();this.viewer1.Document=rpt.Document;在一個Button的Click中:this.pdfExport1.Export(this.viewer1.Document,@"z:\123.pdf");很簡單吧,其他格式的導出也一樣,例如Excel格式:this.xlsExport1.Export(this.viewer1.Document,@"z:\123.xls");在生成Pdf的時候要注意,有時頁面設置不當,控件的大小可能會超出范圍,導致報表有一部分無法打印出來,在使用AcrobatReader預覽的時候,要在Print窗口,通過調(diào)整PageScaling為None,看看右邊Preview部分,有沒有發(fā)生超出打印范圍的情況。另外在作表格的時候要放大后看,因為經(jīng)常會出現(xiàn)線條沒有對齊或完全連接的情況,在預覽的時候看不出來,但是在打印后會看到線條錯位等情況。進行報表開發(fā)(七)使用ActiveR進行報表開發(fā)(七)--事件上篇隨筆介紹了在ActievReport中導出報表,本篇隨筆簡單介紹ActiveReport中的重要事件。只觸發(fā)一次的事件:ReportStart:在報表啟動時觸發(fā)。該事件在Datalnitialize之前,在這里可以整個報表都要用到的對象或變量作初始化,也可以設置子報表。DataInitialize:這個事件在前面的幾篇隨筆中經(jīng)常出現(xiàn),經(jīng)常在這里取數(shù)據(jù),綁定數(shù)據(jù)源,設置報表的Fileds屬性等。ReportEnd:在報表加載完成后觸發(fā)。多次觸發(fā)的事件:FetchData:在處理每一條數(shù)據(jù)時都會觸發(fā),如果是采用綁定數(shù)據(jù)源的方式,就不需要再作對Fields中每個Field的Value賦值。如果是從自定義的對象集合中提取數(shù)據(jù),就要在這里給Fields賦值。而且,使用自定義集合的時候要自己設置事件的eArgs參數(shù)的EOF屬性,該屬性用來判斷是否顯示到了最后一條記錄,如果是,就設置為true,并且直接返回。具體的代碼可以參看以前的隨筆。PageStart:在報表的每頁生成的時候觸發(fā),在這里作針對每個頁的處理,最常見的就是顯示頁碼。PageEnd:在報表的每也生成完成的時候觸發(fā)。區(qū)域的事件:每個區(qū)域(PageHeader,Detail,PageFooter)都有Format,BeforePrint和AfterPrint事件。最好不要在這幾個事件中操作報表的Fields集合,而應該在DataInitialize和FetchData中進行。Format:在數(shù)據(jù)加載并綁定后觸發(fā),只有在這里才可以設置某個區(qū)域的高度。BeforePrint:在區(qū)域被生成前觸發(fā),在這里如果設置區(qū)域的高度是不會有效果的,而且不要在這里操作數(shù)據(jù)源。AfterPrint:在區(qū)域已經(jīng)被生成并描畫出后發(fā)生,可以在該事件里直接在畫布上進行描畫操作。使用ActiveR進行報表開發(fā)(八)--顯示合計在報表開發(fā)中我們常常要顯示合計,比如銷售記錄,要顯示單價,售出件數(shù),合計金額等。我們可以在從數(shù)據(jù)庫中提取數(shù)據(jù)的時候就使用SQL來產(chǎn)生一個合計字段,也可以在ActiveReport中進行,有兩種方法可以使用。使用ActiveReport中的Label或TextBox控件的DataField屬性。例如,要使一個TextBox顯示合計,它的值是由單價和售出件數(shù)的乘積。設置TextBox的DataField值為“=單價*售出件數(shù)”。然后編寫代碼,加載數(shù)據(jù),設置Field集合,然后在FetchData事件中給Field賦值,就可以完成了,例如:this.Fields["ProductName"].Value=ductName;this.Fields["UnitPrice"].Value=row.unitPrice;this.Fields["Quantity"].Value=row.quantity;不對DataField屬性使用表達式,而是直接在FetchData中進行計算,例如:doublequantity=Convert.ToDouble(this.Fields["Quantity"].Value);doubleunitPrice=Convert.ToDouble(this.Fields["UnitPrice"].Value);this.Fields["ExtendedPrice"].Value=quantity*unitPrice;當然要在報表上顯示要設置Label或TextBox的DataField屬性為ExtendedPrice使用ActiveR進行報表開發(fā)(九)--EndUser我們在使用ActiveRepots的時候,通常都是在工程里建一個.rpx文件,然后自動會有一個對應的代碼文件,我們就把代碼和處理邏輯寫在代碼文件里。但是,能不能脫離代碼文件,只使用.rpx文件來生成報表呢?答案是可以的,ActiveReports提供的EndUser功能可以做到這一點。ActiveRepots自帶的示例代碼中包括了兩個EndUser功能的例子:DiamondReports和EndUserDesigner,前者的功能齊備些,后者比較簡單,但是對于學習使用EndUser功能,比較直觀,下面說說在winform和web環(huán)境下如何使用。運行EndUserDesigner示例程序,會看到一個在VS.net中的報表設計界面非常相似的界面。有工具欄,有字段列表,有報表布局,有屬性,等。實際上最主要的兩個控件是ardMain和ardReportExplorer,ardMain就是用來顯示報表布局的,ardReportExplorer用來顯示當前ardMain的數(shù)據(jù)源的字段列表和布局的各個部分。使用EndUser主要有兩個步驟:設定數(shù)據(jù)源,設計報表布局。設定數(shù)據(jù)源可以通過點擊布局部分Detail字樣前的圖標,會彈出一個對話框,在這里可以設置數(shù)據(jù)源類型,連接串,sql語句。完成后會在字段列表部分顯示出通過sql語句得到的字段,然后就可以設計報表布局了。你可以把字段列表中的某一項拖放到布局上,會自動生成控件并綁定DataField。在Winform下,設計完成后就可以通過EndUserDesigner菜單上的“預覽”看到你的報表了。然后可以用SaveLayout菜單將報表保存為一個.rpx文件。要在web環(huán)境下使用剛才設計的報表,步驟要復雜些:按照上面的步驟設計.rpx文件。在web項目中包括.rpx文件。配置web.config文件,為了能在瀏覽器中直接顯示報表,需要對Web.config文件作一些設置,在system.web標記里添加以下內(nèi)容:<httpHandlers><!--**********ActiveReportsHttpHandlerConfiguration**********--><addverb="*"path="*.rpx"type="DataDynamics.ActiveReports.Web.Handlers.RpxHandler,ActiveReports.Web,Version=052,Culture=neutral,PublicKeyToken=cc4967777c49a3ff"/><addverb="*"path="*.ActiveReport"type="DataDynamics.ActiveReports.Web.Handlers.CompiledReportHandler,ActiveReports.Web,Version=052,Culture=neutral,PublicKeyToken=cc4967777c49a3ff"/><addverb="*"path="*.ArCacheItem"type="DataDynamics.ActiveReports.Web.Handlers.WebCacheAccessHandler,ActiveReports.Web,Version=052,Culture=neutral,PublicKeyToken=cc4967777c49a3ff"/></httpHandlers>這里的Version和PublicKeyToken都必須正確,如果你不清楚,可以通過管理工具里的.netframework配置工具來查看這些屬性。在ActiveReports的文檔里說在VS2005中如果不是使用IIS就可以不用配置,在VS2003里是必須的。但是我在VS2005中,如果不加這段配置還是不行。在頁面上使用,例如:<ahref="YourReport.rpx?OutputFormat=pdf">Sample</a>注意這里傳入的參數(shù)OutputFormat二pdf,這樣會使在瀏覽器里打開報表生成的pdf文件。目前ActiveReports只支持pdf和html兩種格式,如果你使用excel或者rtf,是沒有效果的,都會按照html格式顯示。上面說了基本的操作,但是如果在sql語句里有參數(shù)怎么作呢?怎樣向sql語句傳遞值來取得指定的數(shù)據(jù)呢?首先要在sql語句里嵌入?yún)?shù)的表達形式,例如:Select*fromCustomersWHERECountry='<%Country%>'是不是有些像CodeSmith的代碼生成腳本?下面要作的就是傳參數(shù)值了,在web下比較簡單,使用QueryString,例如,我們把Url寫成這樣:YourReport.rpx?OutputFormat二pdf&Country二China,—切就OK了。在Winform下,不用自己傳參數(shù)值,只要你在運行報表的時候,ActiveReports會自己解析Sql語句,分析出有哪些參數(shù),然后會彈出一個對話框,列出參數(shù),要求你輸入值??梢钥闯觯褂肊ndUser功能是很簡單的,但是它一樣也有局限,就是適合較簡單的業(yè)務,雖然設計一個報表很簡單,甚至可以把一部分工作交給客戶自己完成,但是不要指望客戶能作多么復雜的東西,客戶寧可打個電話要求開發(fā)者幫忙義務勞動下,維護的工作量最終還是在程序員身上。使用ActiveR進行報表開發(fā)(十)--交叉變換背景在報表中使每條記錄按照不同的背景色顯示能夠增加報表的美觀,數(shù)據(jù)的顯示更清晰,這樣的效果在報表開發(fā)中是很常見的,在ActiveReports中要實現(xiàn)起來也很簡單的??梢韵駧椭锏睦右粯樱篵oolchangeColor=false;privatevoidDetail_Format(objectsender,System.EventArgseArgs){if(changeColor){changeColor=false;this.Detail.BackColor=System.Drawing.Color.DarkOrange;}else{this.Detail.BackColor=System.Drawing.Color.Transparent;changeColor=true;}}也可以在每條記錄的下面放一個Shape,設置其不顯示邊框,將其置于最后面,然后按照上面的代碼方式設置這個Shape的顏色。使用ActiveR進行報表開發(fā)(十一)--遷移到3.0在這里先介紹下ActiveReports。ActiveReports是.net下出色的報表開發(fā)工具,我最喜歡它的地方就是提供了單獨的代碼文件,你能夠操作數(shù)據(jù)源,也可以控制報表的顯示等等,很靈活。但是可能由于宣傳不足,國內(nèi)用的比較少,這兩天用上了最新的ActiveR3.0,發(fā)現(xiàn)比起2.0,變化是比較大的,要從2.0遷移到3.0,還要費一點功夫。下面說說升級后的主要區(qū)別和要注意的幾個地方,其中包含了一些朋友在本系列前面的隨筆的評論中提到的問題。安裝:我的安裝過程可謂是一波三折。先卸載掉了2.0,安裝3.0后發(fā)現(xiàn)VS2005每次啟動后都提示“包加載錯誤”,要求使用“devenv/resetskippkgs”重新加載的提示。所有的窗體都無法打開設計器,而且給項目添加新項的時候也沒有顯示ActiveReports的文件。根據(jù)提示在網(wǎng)上搜了一遍,按照微軟提供的資料也無法解決,無奈之下只好修復VS2005,完成后窗體設計器可以打開了,這才松了口氣,重新安裝ActiveReports,這次沒有出現(xiàn)什么問題,一次0K。安裝完了,第一件事就是打開幫助看看有什么新的變化,但是很不幸,幫助無法打開,只好又執(zhí)行了一次幫助安裝目錄下的H2Reg.exe/r,才把幫助搞

溫馨提示

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

評論

0/150

提交評論