日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

FastReport Studio 和 FastReport.net 用法

 .PG 2011-04-05

FastReport Studio 和 FastReport.net 用法 [圖片]

 
我個(gè)人理解FastReport Studio 和 FastReport.net 區(qū)別在于:
a、前者是獨(dú)立的報(bào)表工具,可通過com接口基于.net的WinForm的程序開發(fā):
1、首先在Studio中設(shè)計(jì)模板
2、在vs中引入com
3、在vs里調(diào)用并整理數(shù)據(jù)源bind
b、后者是基于.net web開發(fā)的控件使用和Delphi中的frx差不多

****************下面轉(zhuǎn)載具體操作步驟******

使用FastReport Studio開發(fā)報(bào)表

Fr報(bào)表是俄羅斯人開發(fā)的一套報(bào)表工具,我開始接觸是在Delphi中,免費(fèi)開源,報(bào)表生成可以使用設(shè)置好的模板,也可以在運(yùn)行過程中由代碼直接生成。使用模板報(bào)表在一定程度上解決了一個(gè)中國式報(bào)表的復(fù)雜性問題,如果用戶使用感覺某一項(xiàng)不合適,可以在使用過程中對模板直接修改。國內(nèi)有不少商業(yè)軟件中就使用了此控件,盡管有些一直不承認(rèn)。
現(xiàn)在的Fr已經(jīng)升級為FastReport Studio,已經(jīng)是一個(gè)商業(yè)的控件了,適用的開發(fā)環(huán)境不僅僅是Delphi及CB,也包括了VS,查了一下報(bào)價(jià),價(jià)格不菲。下載了一個(gè)Demo版本后進(jìn)行了測試,感覺不錯(cuò),應(yīng)該是最新版了吧,4.4.60。從官方下載的控件有限制,聲稱最多可顯示5頁,并有未注冊的標(biāo)記。
Fr報(bào)表的操作主要分為兩大步:1、設(shè)置報(bào)表模板;2、在開發(fā)環(huán)境的代碼中引用。我的開發(fā)環(huán)境為VS2005,使用C#,庫文件為Oracle,僅做測試。所使用的表只有一個(gè)Grade,數(shù)據(jù)很少:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

一、設(shè)置報(bào)表的模板
在安裝完成下載的控件后,在開始菜單中,啟動(dòng)FastReport Studio的設(shè)計(jì)器。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
在此窗口中,基本上所有的功能都顯示出來。在本程序中,報(bào)表所需要的按鈕只有兩個(gè),一個(gè)是Insert Band,另一個(gè)是Text Object,前者是在頁面上劃分區(qū)域,后者則是設(shè)置在區(qū)域中顯示的數(shù)據(jù)。在一個(gè)頁面上可劃分為多個(gè)區(qū)域,如表頭、頁首、頁尾、主數(shù)據(jù)、明細(xì)數(shù)據(jù)、合計(jì)區(qū)等,我在此頁面上只分三個(gè)區(qū):頁的標(biāo)題,顯示標(biāo)題及打印時(shí)間、頁碼等;頁首,顯示數(shù)據(jù)的字段名稱;主數(shù)據(jù)區(qū)則顯示從庫中讀取出的數(shù)據(jù)。設(shè)計(jì)完成后的頁面如下圖所示:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
在此報(bào)表中的ReportTitle、PageHeader及MasterData均可在Insert Band中找到。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
頁面的總體設(shè)計(jì)如邊距等和Word文檔類似,顯示的標(biāo)題等控件則是Text Object了,如果是直接顯示的文本,可直接雙擊此控件后輸入,其它功能則要在雙擊后出現(xiàn)的窗口內(nèi)選擇,如行號(hào)Line#、頁碼Page#等。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

在顯示外部數(shù)據(jù)列時(shí),輸入的數(shù)據(jù)有固定的格式:
1、數(shù)據(jù)分為兩部分,中間有圓點(diǎn)隔開,前面為數(shù)據(jù)集的名稱,后面為字段名,字段名必須用雙引號(hào)。
2、此數(shù)據(jù)必須用方括號(hào),方括號(hào)的意思類似于變量。
在此報(bào)表中,程序調(diào)用時(shí)需要記住的三點(diǎn):保存的報(bào)表名、所設(shè)置的數(shù)據(jù)集名及列名。

二、在開發(fā)環(huán)境的代碼中使用
在C#中新建一個(gè)WinForm項(xiàng)目,并在工具欄中引用FastReport Studio的Com庫,選擇其中的預(yù)案控件,并將其拖放到窗口上。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

在FastReport Studio的安裝路徑的例子程序中,將FrxDataTable復(fù)制到程序中并加入。程序代碼如下:

1FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然        private void Form1_Load(object sender, EventArgs e)
2FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然        {
3FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             TfrxReportClass report = new TfrxReportClass();
4FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            //為報(bào)表指定模板文件
5FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             report.LoadReportFromFile(Application.StartupPath + "\\demo.fr3");
6FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
7FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            //此處的Class為報(bào)表中設(shè)計(jì)時(shí)所使用的數(shù)據(jù)集名稱
8FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             FrxDataTable datatable = new FrxDataTable("class");
9FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
10FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            //設(shè)置列
11FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             datatable.Columns.Add("id"typeof(int));
12FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             datatable.Columns.Add("name"typeof(string));
13FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
14FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            string connString = "Data Source=master;Persist Security Info=True;User ID=l;pwd=1;Unicode=True";
15FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             OracleConnection conn = new OracleConnection(connString);
16FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             OracleCommand command = new OracleCommand("SELECT t.id,t.name FROM grade t", conn);
17FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            try
18FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            {
19FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                 conn.Open();
20FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
21FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                //賦值
22FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                using (OracleDataReader rdr = command.ExecuteReader())
23FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                {
24FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                    while (rdr.Read())
25FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                    {
26FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                         datatable.Rows.Add(new object[] { rdr.GetInt32(0), rdr.GetString(1) });
27FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                     }

28FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                     datatable.AcceptChanges();
29FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                 }

30FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             }

31FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            finally
32FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            {
33FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然                 conn.Close();
34FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             }

35FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            //綁定
36FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             datatable.AssignToReport(true, report);
37FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             datatable.AssignToDataBand("MasterData1", report);
38FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
39FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然            this.axTfrxPreviewX1.Report = report;
40FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然             report.ShowReport();
41FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然         }

42FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

運(yùn)行程序顯示結(jié)果:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

關(guān)于報(bào)表的導(dǎo)出:

報(bào)表的導(dǎo)出是一件很麻煩的事,因?yàn)樗枰母袷讲煌?,用戶的要求也不一樣。FastReport Studio提供了轉(zhuǎn)換的方法,不需要再自己費(fèi)力,還不一定討好??梢允褂玫母袷接卸喾N:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
如果需要送至打印機(jī)上,那就更簡單了:
     report.print();


FastReport.NET使用示例


1 下載FastReport.NET。網(wǎng)上搜索一下,下載資源一大把,這是收費(fèi)的,所以我使用了demo版;

  注意:FastReport.NET 和FastReport Studio不是同一個(gè)東西,別下錯(cuò)了;

  FR.NET只支持VS2005/2008;

  官網(wǎng):http://ns./en/,有說明文檔使用手冊下載,論壇也很不錯(cuò),問題解答的很詳細(xì);

2  先在本機(jī)上安裝好VS2005/2008(我試驗(yàn)的時(shí)候使用的是2008),再安裝FR.NET,啟動(dòng)VS,新建一個(gè)ASP.NET WEB應(yīng)用程序項(xiàng)目;

3  頁面設(shè)計(jì):在VS中設(shè)計(jì)Default.aspx頁面時(shí),可直接在工具箱中拖出一個(gè) WebReport控件放置于頁面上:

 

   

                                                  圖一

4 數(shù)據(jù)源指定:FR支持多種數(shù)據(jù)源(詳見其說明),可以在aspx頁面上選定數(shù)據(jù)源,或者進(jìn)入FR設(shè)計(jì)器中再指定;

  拖放一個(gè)SqlDataSouce控件到頁面上,設(shè)定好,在測試連接的時(shí)候最好預(yù)覽下數(shù)據(jù),確保數(shù)據(jù)源能正常使用;

  選定WebReport控件,如圖一,會(huì)有一個(gè)“>”標(biāo)記按鈕出現(xiàn),點(diǎn)擊,會(huì)出現(xiàn)如圖二所示對話框:

                                                          

                        圖二

  點(diǎn)擊“Select Data Source”,彈出一個(gè)對話框,選擇剛剛配置好的SqlDataSouce;

5 設(shè)計(jì):點(diǎn)擊圖二中的“Design Report...”就會(huì)打開FR設(shè)計(jì)器,如圖三所示:

  

                    圖三

  在設(shè)計(jì)器里,大家可以盡情地發(fā)揮,設(shè)計(jì)出你最喜歡(多數(shù)時(shí)候得老板喜歡)的樣式,F(xiàn)R已經(jīng)提供了很多模板,很漂亮,大家稍微改動(dòng)

  一下就能得到自己的模板(.frx文件)。我這里只是簡單的拖放了幾個(gè)文本控件,然后將它們綁定到了前面選定好的datasouce上,大家可以自己

  動(dòng)手點(diǎn)點(diǎn)看,這一點(diǎn)很簡單,也許你是第一次用,但憑猜想你也可以做出來。

6 codding/運(yùn)行:設(shè)計(jì)好后點(diǎn)保存,然后關(guān)掉設(shè)計(jì)器(必須關(guān)掉,因?yàn)樗且灾庙斪哟绑w彈出來的,不關(guān)掉不能操作VS)。

  在aspx頁面上選中webreport控件,查看它的事件,為它添加上StartReport事件,寫上幾行代碼就OK了,如圖四:

       

  

                                               圖四

注意:在Page_load事件中也有一行代碼,我這里的webreport控件的名字就叫“WebReport1”;

保存,運(yùn)行,大家就可以看到效果了~

到此,這個(gè)簡單示例就完成了;剛開始使用FR千萬記得查看用戶手冊,你的很多疑問在這里可以找到答案;

 

另:很多人在問FastReport如何從頁面?zhèn)鬟f參數(shù)的問題,我在這里簡單說下吧:

  FR的參數(shù)分兩種,Query Parameter 和Report Parameter;

  Query Parameter (查詢參數(shù)):是在FR中用向?qū)гO(shè)定DataSouce時(shí),可以用帶參數(shù)的SQl文來指定,形如:

    select * from table where country = @parameterName

    對于這種參數(shù),在用向?qū)?chuàng)建DataSouce時(shí),會(huì)彈出一個(gè)窗口來讓你對參數(shù)進(jìn)行編輯,如圖五:

                  圖五

查詢參數(shù)的名字是  qparam1,大家需要給它指定表達(dá)式 ,Expression屬性中 “[param1]”就是一個(gè)表達(dá)式,param1是一個(gè)報(bào)表參數(shù)

Report Parameter。這意思就是,在運(yùn)行時(shí),qparam1的值將會(huì)和param1一致;

Report Parameter(報(bào)表參數(shù)):它的值你可以在FR的腳本中指定,也可以在aspx頁面的cs代碼中指定(參見圖四中被注釋掉的代碼);看圖三設(shè)計(jì)器界面圖,在右邊的窗口里,你可以找到參數(shù)這一項(xiàng),你可以在這里新建/編輯一個(gè)報(bào)表參數(shù);

現(xiàn)在大家應(yīng)該明白如何從頁面?zhèn)鬟f參數(shù)的值,并把它用于SQl查詢中了;

但實(shí)際上還有一個(gè)問題,使用Query Parameter 時(shí),它只能是一個(gè)簡單值,不能是復(fù)雜的字符串,比如這樣的SQL文:

select * from table where country in ('en','cn')

如果你想把('en','cn') 這整個(gè)部分設(shè)定為一個(gè)參數(shù)那是不行的,向?qū)?huì)報(bào)錯(cuò),這時(shí)如何解決?

在FR設(shè)計(jì)器中,大家可以看到它是有自己的腳本的(C#語言),在其中添加上_StartReport事件,代碼如下所示:

 

FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然Code

 

    再結(jié)合圖四中被注釋掉的傳參代碼,大家應(yīng)該全明白了……ok,就到這里吧。


其它未盡事宜,想起來就加點(diǎn)兒:

運(yùn)行時(shí)更改報(bào)表模板:
FastReport Studio在顯示報(bào)表時(shí),先讀取報(bào)表的模板,然后再從數(shù)據(jù)集內(nèi)取得數(shù)據(jù)寫入模板中,最后合并顯示。所以在需要更改報(bào)表的格式時(shí),只要將報(bào)表模板文件更改就可以了。
        private void button1_Click(object sender, EventArgs e)
        
{
            TfrxReportClass report 
= new TfrxReportClass();
            report.LoadReportFromFile(Application.StartupPath 
+ "\\demo.fr3");
            report.DesignReport();
        }


 以上的方式只能更改報(bào)表的格式,而不能增刪字段,因?yàn)樽侄我呀?jīng)在代碼固定,增加字段時(shí)需要更改代碼賦值,刪除時(shí)僅可將顯示的列設(shè)置為非顯示。這和在Delphi中的不同,原來給的是數(shù)據(jù)集,只要給的數(shù)據(jù)集中字段足夠,就可以在報(bào)表中任意增刪了。也許控件已經(jīng)提供了這種功能,只是我還沒有體會(huì)到。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多