fastreport or

FastReport 交叉报表是怎么做的

没用过fastreport做报表,一直用FineReport,在FineReport的帮助文档里面搜了一下交叉表教程,大概如下,可借鉴一下思路:

  1.  概述

交叉表,也是常见的基本报表类型,分组报表只是从上到下将数据分组显示,而交叉表则是从上到下、从左到右都将数据分组的报表,如下图:

FineReport天然支持行列对称,设计交叉表的方法也很简单。

2. 制作步骤

2.1 新建工作簿,添加数据集

新建工作薄,添加数据集ds1,SQL语句为SELECT * FROM [销量]。

2.2 制作交叉表

设计好表样后,将数据列拖入对应单元格:

纵表头:地区与销售员默认纵向扩展实现从上到下分组;

横表头:将产品类型与产品设置为从左到右扩展,让产品横向分组,实现横表头;

数据:根据父子格的概念,销量会以销售员为左父格,产品为上父格,自动匹配出销售员与产品对应的销量。

预览即可看到上图交叉表。

注:此处销售员与产品对应的销量是唯一的,因此,直接将销量拖入单元格即可。

另:若销售员与产品对应的销量不唯一,则将销量数据列的显示方式设为汇总-求和,详细请查看数据显示方式。

2.3 其他设置

排序、突出显示以及字体颜色调整参考具体章节

2.4保存发布

C#如何调用Fastreport

引用:FastReport.dll,FastReport.Bars.dll,FastReport.Editor.dll
设计好**.frx 文件
代码:
DataSet FDataSet = new DataSet();
DataTable table = new DataTable();
table.TableName = “Items“;
FDataSet.Tables.Add(table);
table.Columns.Add(“id“, typeof(int));
table.Columns.Add(“aaa“, typeof(string));
table.Rows.Add(0,“ab“);
table.Rows.Add(1,“abc“);
FastReport.Report report1 = new FastReport.Report();
try
{
// load the existing report
report1.Load(“***.frx“);
// register the dataset
report1.RegisterData(FDataSet);
report1.GetDataSource(“Items“).Enabled = true;
// run the report
report1.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “Error“, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
// free resources used by report
report1.Dispose();
}

如何安装FastReport控件

FastReport的安装可以选择自动或手动。 自动安装:用FastReport中自带的recompile.exe。 1. 选择编译器:C++Builder6
2. 选择FastReport的版本:Professional
3. 选择Teechart的版本:根据你的机器上安装的,如果没有升级过TeeChart,就选择TeeChartStd
4. 我建议选择recompile all packages 然后进行编译,一般在没有升级TeeChart的时候编译成功率比较高。如果升级了TeeChart,需要多几个步骤才行。 手动安装:安装新版本前,如果以前安装过FastReport,最好将旧的版本卸载。 将压缩包中的文件解压到某目录,如D:\ccrun\vcl\FastReport,建议使用一个固定目录,不要放在临时文件夹中,因为以后可能经常用这个组件的时候,需要包含头文件用。临时目录可能哪天忘了就清除了。 下载FastReport v4.2 Full Source(完整源码版),解压缩。 1. 打开FastReport\FastScript\fs6.bpk–》编译(Compile)–》安装(Install) 2. 打开FastReport\FastScript\fsDB6.bpk–》编译(Compile)–》安装(Install) 3. 打开FastReport\FastQB\fqb60.bpk–》编译(Compile) 4. 新建一个FastReport\LibBCB6目录,复制FastReport\Source\*.*到这个LibBCB6目录 5. 如果需要中文的设计器,复制FastReport\Res\Chinese\*.*到FastReport\LibBCB6目录,覆盖同名文件。 6. 打开FastReport\LibBCB6\frx6.bpk–》编译(Compile)–》安装(Install) 7. 打开FastReport\LibBCB6\frxDB6.bpk–》编译(Compile)–》安装(Install) 如果需要TeeChart的支持,就把Tee6相关的bpk也编译并安装。 FastReport需要FastScript的支持。 另外,在BDS2006下的安装: 运行recompile.exe,关掉打开的BCB或Delphi或BDE程序。在recompile窗口上,Compiler选择D2006(Delphi,C++),FR3 Version选择Professional,TeeChart Version选择TeeChartStd,然后选择Recompile all packages,最后Compile。等待编译完成后打开C++Builder2006,此时组件列表并没有显示FastReport组件,因为相应的bpl还没有安装进来。 C++Builder2006窗口菜单中选择Component–》Install Packages–》Add–》找到刚才FastReport目录下LibD10下的dclfrx10.bpl,添加进来就OK了。

在C#中FastReport怎么用

引用:FastReport.dll,FastReport.Bars.dll,FastReport.Editor.dll
设计好**.frx 文件
CS代码:
DataSet FDataSet = new DataSet();
DataTable table = new DataTable();
table.TableName = “Items“;
FDataSet.Tables.Add(table);
table.Columns.Add(“id“, typeof(int));
table.Columns.Add(“aaa“, typeof(string));
table.Rows.Add(0,“ab“);
table.Rows.Add(1,“abc“);
FastReport.Report report1 = new FastReport.Report();
try
{
// load the existing report
report1.Load(“***.frx“);
// register the dataset
report1.RegisterData(FDataSet);
report1.GetDataSource(“Items“).Enabled = true;
// run the report
report1.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, “Error“, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
// free resources used by report
report1.Dispose();
}

如何制作报表fastreport

1、创建报表

我们做一个在运行其使用这些组件建立一个简单报表的示范。在delphi环境中创建一个新的工程,并加入以下组件:TfrxADOComponents,Tbutton,TfrxReport,TfrxDesigner,TfrxDialogControls,TADOConnection。

2、设置属性

ADOConnection1:

LoginPrompt = False

frxADOComponents1:

DefaultDatabase = ADOConnection1

双击设计按钮,定义一个事件函数:

procedure TForm1.Button1Click(Sender: TObject);

begin

frxReport1.DesignReport;

end;

运行delphi,点击设计按钮,进入报表设计器。

3、简单的列表式报表

在设计器环境中点击新报表,并且换到data页,放置一个ADOTable组件到页面上

4、注意database属性已经连结到了数据库。并选择数据表名称:

TableName = ’Customer’

到报表设计页,连接Master band数据源,并在数据树中将数据源字段托到band上合适的位置,调整大小。界面如下:

设计完毕,点击预览按钮,浏览结果。

同为比较常用的报表工具,个人觉得finereport的创建报表步骤可能更加简单易懂,它具有类excel界面。

如何在FastReport报表中动态添加数据集

我用的一直都是FineReport,它比较方便,不过既然楼主问的是fastreport,这里我就不谈FineReport了。要创建fastreport的主从报表,需要建立两个数据集。一个是主表的数据集,另外一个是一个明细表的数据集;根据下面的截图来创建fastreport报表。首先,运行报表设计器,创建一个空白报表。为了添加一个明细的数据集,需要调用 “Configure Bands“ 窗口。点击 “Configure Bands“ 按钮便可实现调用,如图所示,也可以通过“Report|Configure Bands…“ 菜单项来调用“Configure Bands“窗口。配置窗口中展示了数据集结构:选择“Data“ 数据集,如图所示,单击鼠标右键以显示上下文菜单,并选择”data“band,接下来,嵌套数据便被添加到所选择的数据集中。按“close”按钮关闭窗口。你会发现报表模版便成下面的样子;将band与相应的数据源连接,并将数据列置于bands上。我们将使用两个数据源:分类和产品。运行报表通过这种方法,你可以创建一个带有无线嵌套数据的主从报表类型。

如何用FastReport制作动态报表

没有用fastreport做过,倒是用finereport做过动态表,同为java报表软件,原理上应该是差不多的吧。

在定义数据集时,通过if函数来判断参数的值从而来实现调用不同的数据表,如直接将SQL语言定义成:SELECT * FROM ${if(aa=1,’订单’,’订单1’)},即若参数aa=1时,查询的是订单表,若aa!=1时,查询的是订单1表。

1、打开模板

2、修改数据集

将数据集修改为SELECT * FROM 订单 ${Condition} 

3、修改参数界面

将参数界面的控件名称修改为condition即可

4、效果查看

保存模板点击分页预览,输入动态的查询条件如:where 货主地区=’西南’,便可以获取货主地区为西南的数据了,效果如下图:

如何利用FastReport创建交叉报表

本文我们将创建一个交叉报表,用于显示员工四年中的工资。要创建交叉报表,我们需要使用到FastReport “DEMOS\MAIN” 文件夹中的“crosstest”表。“crosstest”表包含几下几种类型的数据:
FastReport,报表,Report,交叉报表
在Delphi中创建一个新项目,将“TTable”,“TfrxDBDataSet”和“TfrxReport”组件置于窗体上,并对它们进行如下设置:
Table1:
DatabaseName = ’c:\Program Files\FastReport 4\Demos\Main’
TableName = ’crosstest.db’
DatabaseName属性值必须与你的FastReport安装文件夹路径一致:
frxDBDataSet1:
DataSet = Table1
UserName = ’SimpleCross’
对于交叉报表的设计,你需要使用 FastReport调色板上的“TfrxCrossObject”组件 。将“TfrxCrossObject”组件组件放置到Delphi窗体中,无需进行任何设置。同时,包含了所有必要功能的“frxCross”部件,将被添加到“uses“ 列表。
进入报表设计模式。首先,使用 “Report|Data…“菜单链接数据源。从列表中选择“DB cross-tab”对象FastReport,报表,Report,交叉报表:点击设计页面以放置对象:
FastReport,报表,Report,交叉报表
使用对象编辑器指定所有设置。双击对象上调用它:
FastReport,报表,Report,交叉报表
编辑器项目中的6项数字分别表示:
1、带有数据源的下列列表
2、所选定的数据源的字段列表。该列表中的字段可以拖动到 “3,” “4,” and “5” 列表中。
3、字段列表(生成(行),表头)
4、字段列表(生成列标题)
5、字段列表生(成表格单元格)
6、表结构预览
7、该结构选项可以指定是否需要显示标题和汇总
在编辑器中只能通过鼠标进行修改。在本文的演示中,你可以将列表“2” 中的字段拖动到列表“3,” “4,”和 “5”中。接着,点击 “ok”按钮关闭编辑器。

如何在fastreport中使用数据筛选

首先打开FastReport软件,在数据目录中右键点击,新建一个数据源;根据向导提示填写完数据库的连接信息。
物理数据源新建完成之后如下图所示,有一个之前选择数据表的目录,然后可以通过这些数据表来在page页面里面绑定数据和布局
可以在page的startpage事件中自定义数据的连接与过滤条件,这些数据库连接(strConnection)与过滤条件(strSql)可以是从外部作为参数传入进来的。
绑定之后一定要记得调用Init()方法,不然表格就没有数据加载!
如果在同一个report里面有多个地方使用这个表格(或者是循环使用,比如在for循环里面,只是过滤条件不一样),都是按上面的GetReportDataSource方法来获取表格并初始化,表格里面的数据其实是每次循环使用过滤条件得到结果的并集,就是每次操作的结果都会加入到表格中,那么结果可能就不是我们想要的了!
这时我们在获取数据表,并自定义绑定数据连接和过滤条件后,进行初始化之前就需要设置表格的ForceLoadData属性为true;如下图所示:
步骤阅读
6
通过官方的帮助文档可以知道设置了这个属性,在每次初始化时都会清空之前的数据,重新加载数据。如果调用次数多也会影响加载速度,所以默认值是false