现在的Fr已经升级为FastReport Studio,已经是一个商业的控件了,适用的开发环境不仅仅是Delphi及CB,也包括了VS,查了一下报价,价格不菲。下载了一个Demo版本后进 行了测试,感觉不错,应该是最新版了吧,4.4.60。从官方下载的控件有限制,声称最多可显示5页,并有未注册的标记。
Fr报表的操作主要分为两大步:1、设置报表模板;2、在开发环境的代码中引用。我的开发环境为VS2005,使用C#,库文件为Oracle,仅做测试。所使用的表只有一个Grade,数据很少:

一、设置报表的模板
在安装完成下载的控件后,在开始菜单中,启动FastReport Studio的设计器。

在 此窗口中,基本上所有的功能都显示出来。在本程序中,报表所需要的按钮只有两个,一个是Insert Band,另一个是Text Object,前者是在页面上划分区域,后者则是设置在区域中显示的数据。在一个页面上可划分为多个区域,如表头、页首、页尾、主数据、明细数据、合计区 等,我在此页面上只分三个区:页的标题,显示标题及打印时间、页码等;页首,显示数据的字段名称;主数据区则显示从库中读取出的数据。设计完成后的页面如 下图所示:

在此报表中的ReportTitle、PageHeader及MasterData均可在Insert Band中找到。

页面的总体设计如边距等和Word文档类似,显示的标题等控件则是Text Object了,如果是直接显示的文本,可直接双击此控件后输入,其它功能则要在双击后出现的窗口内选择,如行号Line#、页码Page#等。

在显示外部数据列时,输入的数据有固定的格式:
1、数据分为两部分,中间有圆点隔开,前面为数据集的名称,后面为字段名,字段名必须用双引号。
2、此数据必须用方括号,方括号的意思类似于变量。
在此报表中,程序调用时需要记住的三点:保存的报表名、所设置的数据集名及列名。
在C#中新建一个WinForm项目,并在工具栏中引用FastReport Studio的Com库,选择其中的预案控件,并将其拖放到窗口上。

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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

运行程序显示结果:

报表的导出是一件很麻烦的事,因为所需要的格式不同,用户的要求也不一样。FastReport Studio提供了转换的方法,不需要再自己费力,还不一定讨好。可以使用的格式有多种:

如果需要送至打印机上,那就更简单了:
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事件,代码如下所示:

再结合图四中被注释掉的传参代码,大家应该全明白了……ok,就到这里吧。
运行时更改报表模板:
FastReport Studio在显示报表时,先读取报表的模板,然后再从数据集内取得数据写入模板中,最后合并显示。所以在需要更改报表的格式时,只要将报表模板文件更改就可以了。







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