FastReport Studio 和 FastReport.net 用法

我个人理解FastReport Studio 和 FastReport.net 区别在于:
a、前者是独立的报表工具,可通过com接口基于.net的WinForm的程序开发:
1、首先在Studio中设计模板
2、在vs中引入com
3、在vs里调用并整理数据源bind
b、后者是基于.net web开发的控件使用和Delphi中的frx差不多

****************下面转载具体操作步骤******

使用FastReport Studio开发报表

Fr 报表是俄罗斯人开发的一套报表工具,我开始接触是在Delphi中,免费开源,报表生成可以使用设置好的模板,也可以在运行过程中由代码直接生成。使用模 板报表在一定程度上解决了一个中国式报表的复杂性问题,如果用户使用感觉某一项不合适,可以在使用过程中对模板直接修改。国内有不少商业软件中就使用了此 控件,尽管有些一直不承认。
现在的Fr已经升级为FastReport Studio,已经是一个商业的控件了,适用的开发环境不仅仅是Delphi及CB,也包括了VS,查了一下报价,价格不菲。下载了一个Demo版本后进 行了测试,感觉不错,应该是最新版了吧,4.4.60。从官方下载的控件有限制,声称最多可显示5页,并有未注册的标记。
Fr报表的操作主要分为两大步:1、设置报表模板;2、在开发环境的代码中引用。我的开发环境为VS2005,使用C#,库文件为Oracle,仅做测试。所使用的表只有一个Grade,数据很少:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

一、设置报表的模板
在安装完成下载的控件后,在开始菜单中,启动FastReport Studio的设计器。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
在 此窗口中,基本上所有的功能都显示出来。在本程序中,报表所需要的按钮只有两个,一个是Insert Band,另一个是Text Object,前者是在页面上划分区域,后者则是设置在区域中显示的数据。在一个页面上可划分为多个区域,如表头、页首、页尾、主数据、明细数据、合计区 等,我在此页面上只分三个区:页的标题,显示标题及打印时间、页码等;页首,显示数据的字段名称;主数据区则显示从库中读取出的数据。设计完成后的页面如 下图所示:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
在此报表中的ReportTitle、PageHeader及MasterData均可在Insert Band中找到。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
页面的总体设计如边距等和Word文档类似,显示的标题等控件则是Text Object了,如果是直接显示的文本,可直接双击此控件后输入,其它功能则要在双击后出现的窗口内选择,如行号Line#、页码Page#等。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

在显示外部数据列时,输入的数据有固定的格式:
1、数据分为两部分,中间有圆点隔开,前面为数据集的名称,后面为字段名,字段名必须用双引号。
2、此数据必须用方括号,方括号的意思类似于变量。
在此报表中,程序调用时需要记住的三点:保存的报表名、所设置的数据集名及列名。

二、在开发环境的代码中使用
在C#中新建一个WinForm项目,并在工具栏中引用FastReport Studio的Com库,选择其中的预案控件,并将其拖放到窗口上。
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

在FastReport Studio的安装路径的例子程序中,将FrxDataTable复制到程序中并加入。程序代码如下:

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

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

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

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

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

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

运行程序显示结果:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然

关于报表的导出:

报表的导出是一件很麻烦的事,因为所需要的格式不同,用户的要求也不一样。FastReport Studio提供了转换的方法,不需要再自己费力,还不一定讨好。可以使用的格式有多种:
FastReport Studio 和 FastReport.net 用法 - Yiraner - 依然、依然
如果需要送至打印机上,那就更简单了:
     report.print();


FastReport.NET使用示例


1 下载FastReport.NET。网上搜索一下,下载资源一大把,这是收费的,所以我使用了demo版;

  注意:FastReport.NET 和FastReport Studio不是同一个东西,别下错了;

  FR.NET只支持VS2005/2008;

  官网:http://ns.fast-report.com/en/ ,有说明文档使用手册下载,论坛也很不错,问题解答的很详细;

2  先在本机上安装好VS2005/2008(我试验的时候使用的是2008),再安装FR.NET,启动VS,新建一个ASP.NET WEB应用程序项目;

3  页面设计:在VS中设计Default.aspx页面时,可直接在工具箱中拖出一个 WebReport控件放置于页面上:

 

   

                                                  图一

4 数据源指定:FR支持多种数据源(详见其说明),可以在aspx页面上选定数据源,或者进入FR设计器中再指定;

  拖放一个SqlDataSouce控件到页面上,设定好,在测试连接的时候最好预览下数据,确保数据源能正常使用;

  选定WebReport控件,如图一,会有一个“>”标记按钮出现,点击,会出现如图二所示对话框:

                                                          

                        图二

  点击“Select Data Source”,弹出一个对话框,选择刚刚配置好的SqlDataSouce;

5 设计:点击图二中的“Design Report...”就会打开FR设计器,如图三所示:

  

                    图三

  在设计器里,大家可以尽情地发挥,设计出你最喜欢(多数时候得老板喜欢)的样式,FR已经提供了很多模板,很漂亮,大家稍微改动

  一下就能得到自己的模板(.frx文件)。我这里只是简单的拖放了几个文本控件,然后将它们绑定到了前面选定好的datasouce上,大家可以自己

  动手点点看,这一点很简单,也许你是第一次用,但凭猜想你也可以做出来。

6 codding/运行:设计好后点保存,然后关掉设计器(必须关掉,因为它是以置顶子窗体弹出来的,不关掉不能操作VS)。

  在aspx页面上选中webreport控件,查看它的事件,为它添加上StartReport事件,写上几行代码就OK了,如图四:

 

  

                                               图四

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

保存,运行,大家就可以看到效果了~

到此,这个简单示例就完成了;刚开始使用FR千万记得查看用户手册,你的很多疑问在这里可以找到答案;

 

另:很多人在问FastReport如何从页面传递参数的问题,我在这里简单说下吧:

  FR的参数分两种,Query Parameter 和Report Parameter;

  Query Parameter (查询参数):是在FR中用向导设定DataSouce时,可以用带参数的SQl文来指定,形如:

    select * from table where country = @parameterName

    对于这种参数,在用向导创建DataSouce时,会弹出一个窗口来让你对参数进行编辑,如图五:

                  图五

查询参数的名字是  qparam1,大家需要给它指定表达式 ,Expression属性中 “[param1]”就是一个表达式,param1是一个报表参数

Report Parameter。这意思就是,在运行时,qparam1的值将会和param1一致;

Report Parameter(报表参数):它的值你可以在FR的脚本中指定,也可以在aspx页面的cs代码中指定(参见图四中被注释掉的代码);看图三设计器界面图,在右边的窗口里,你可以找到参数这一项,你可以在这里新建/编辑一个报表参数;

现在大家应该明白如何从页面传递参数的值,并把它用于SQl查询中了;

但实际上还有一个问题,使用Query Parameter 时,它只能是一个简单值,不能是复杂的字符串,比如这样的SQL文:

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

如果你想把('en','cn') 这整个部分设定为一个参数那是不行的,向导会报错,这时如何解决?

在FR设计器中,大家可以看到它是有自己的脚本的(C#语言),在其中添加上_StartReport事件,代码如下所示:

 

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

 

    再结合图四中被注释掉的传参代码,大家应该全明白了……ok,就到这里吧。

 

其它未尽事宜,想起来就加点儿:

运行时更改报表模板:
FastReport Studio在显示报表时,先读取报表的模板,然后再从数据集内取得数据写入模板中,最后合并显示。所以在需要更改报表的格式时,只要将报表模板文件更改就可以了。
         private   void  button1_Click( object  sender, EventArgs e)
        
{
            TfrxReportClass report 
=   new  TfrxReportClass();
            report.LoadReportFromFile(Application.StartupPath 
+   " //demo.fr3 " );
            report.DesignReport();
        }


 以 上的方式只能更改报表的格式,而不能增删字段,因为字段已经在代码固定,增加字段时需要更改代码赋值,删除时仅可将显示的列设置为非显示。这和在 Delphi中的不同,原来给的是数据集,只要给的数据集中字段足够,就可以在报表中任意增删了。也许控件已经提供了这种功能,只是我还没有体会到。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值