
在取报表格式之前,应该先把数据集对象放好,这样才能保证在报表控件在取格式文件后,安置报表对象时,可以拿到数据对象,如果 *** 作顺序搞反了,则报表对象就无法拿到数据对象,在预览数据时,就会产生“没有数据集”的错误了!!
var
tmpDataSet: T数据集;
DataSource: TDataSource;
frxDBDataSet: TfrxDBDataset;
begin
tmpDataSet:=T数据集Create(Self);
DataSource:=TDataSourceCreate(Self);
frxDBDataSet:=TfrxDBDatasetCreate(Self);
DataSourceDataSet:=tmpDataSet;
frxDBDataSetDataSource:=DataSource;
//frxDBDataSetDataSet:=tmpDataSet; //这条语句与上一条都可用,我也不知道区别在哪
frxDBDataSetUserName:='数据项名称'; //好用在于可以用中文名
frxReport1DataSetsAdd(frxDBDataSet);
-------------注意:在把报表格式LoadFromFile或LoadFromStream之前,必须完成上面这几条语句的程序
公司需要,我写的delphi程序需要产生包括页小计,合计报表的程序,这里我们用到fast report还蛮好用的,现在介绍一下。
首先你要插入报表控件TfrxReport,双击进去后,选择Report->data就可以选择在介面里报表外的TfrxDataset(可以连table、query,up to you)
1关键还是学会使用band
在fast report里面band是个很重要的区域单位,里面包括header/footer/masterdata/detaildata etc 在最右边的工具栏里有insert band,好好地利用它
1合计
其实蛮简单的,加个footer band,往里面丢memo就可以了。不过值得注意的是使用sum()和数据变量,数据结构为<frxdbdtst1"T$pltu">,在合计那里我们通常是用sum(<frxdbdtst1"T$pltu">),但是显示的不是数据,是sum(frx,必需还要加上[],但这还不行,这只能显示“600060001200"把所有数据连接起来的字符串,所以正解是
[sum(strtofloat(<frxdbdtst1"T$pltu">))]
用strtofloat 告诉电脑<frxdbdtst1"T$pltu">作为数字使用。这样就能得出13200正确合计啦。
2小计
经过本人吐血测试,发现只需在page那里加上pagefooter band,往里面丢memo就可以了,每页底下就有小计,无需设置,简单易用。不过它的sum()格式有点不同
[sum(strtofloat(<frxdbdtst1"T$pltu">),detaildata1)]
请大家注意
1 单据中有多行数据,但预览时只显示部分内容,或者打印内容行与行之间有间隔
FASTREPOR属性中:设置RowCount=0,Start New Page为False;Stretched为True
说明:
RowCount:控制总共打印几行;RowCount=0是打印全部;
Start New Page:打印前先跳页;每页打印一行;
Stretch:表身自动伸缩根据表身内容;
2 在打印中设置金额或数量的小数位数
FASTREPOR属性中:使用DisplayFormat(数据显示格式)——数字——123450
%20f:以整数形式显示;
%22f:显示两位小数;
%23f:显示三位小数位,可根据情况进行调整。
3 在打印中设置日期/时间的格式
FASTREPOR属性中:使用DisplayFormat(数据显示格式)——日期/时间——11282002
mmddyyyy:显示月日年
mmdd:显示月日
mm:显示两位的月
4 当栏位的值为零时显示为空
FASTREPOR属性中:设置HideZeros(数字前面的0是否显示)为True
5 自动换行
1)选择数据单元进行群组;
2)StretchMode为smMaxHtight;WordWrap为True;Stretched为True
说明:
StretchMode:对象伸缩的行为;
WordWrap:文本是否自动换行;
6 合计
[SUM(<进/销/退/折表身档"AMTN_NET">,MasterData2)]
7 每页合计
将定义好的合计函数放到‘栏尾’中即可。
8 全表合计
将定义好的合计函数放到‘报表合计’中即可。
9 金额大写
在报表设计中使用函数:ConbertNumToChinese()
合计金额大写:[ConvertNumToChinese(SUM(<进/销/退/折表身档"AMTN_NET">,MasterData2))]
负数合计金额大写:[ConvertNumToChinese(Abs(SUM(<进/销/退/折表身档"AMTN_NET">,MasterData2)))]
10 报表中打印行数
在报表设计中使用变量——系统变量Line#
11 连打
1) 单据——速查,查出要打印的单据;
2)打印——查询数据——预览——打印,选择多张单据进行连打。
12 连打打到同一页
打印——设计——页面设置——勾选“打印至前一页”,“伸展至打印区”
13 打印固定行数,不足补空白行代码(语言:PascalScript)
var
PageLine: integer;
PageMaxRow: integer=5; //每页打印的行数
procedure Footer1OnBeforePrint(Sender: TfrxComponent);
var
i: integer;
begin
i := iif(PageLine=0, PageMaxRow, PageLine);
while i < PageMaxRow do begin
i := i + 1;
EngineShowBand(Child1); //印空白表格
end;
end;
procedure MasterData2OnBeforePrint(Sender: TfrxComponent);
begin
PageLine := <line> mod PageMaxRow;
if (PageLine = 1) and (<line> > 1) then
Enginenewpage;
end;
begin
end
在你showband的时候,加入的判断条件似乎少了 高度的判断啊,为什么要用记录来判断显示空行?而不是直接用高度来判断??这样可以实现每页都可以加入空行,而不是只有最后一页加空行。如果你想只在最后加空行,加入页码判断就行了,你把事情搞复杂了呀
FRF(fastreport)报表修改
一、Delphi
Delphi 已出至70 简体中文版。
Delphi是Borland公司推出的一个占全球编程市场70%的可视化、面向对象的快速应用程序开发工具,以其快速高效的开发方式和强大的编译功能得到软件开发商和程序员的亲睐和欢迎,现已成为使用最广泛的强力开发工具。
1安装Delphi
2安装fastreport246或25,总之不能安装30的。fastreport20生成的报表文件是frr格式(后缀),30生成的是fr3格式(后缀),而且fastreport不能向下兼容。
3在Delphi7中安装控件包,在出现的安装控件包界面里点Add,出现对话框,定位到fastreport246或25的安装目录,找到fr7bpl后确定。之后可以看到fastreport25控件已安装进入delphi程序,
然后在delphi中打开工程,点击fastrepot的控件放到工程窗口,双击该控件,即可打开fastreport报表编辑器,再在编辑器里打开文件,选择好要编辑的frf文件,即可编辑,当然也能编辑frd文件。
二、Microsoft SQL Server
安装SQLServer2000这个软件,可以打开frf的文件,在资源管理器中直接打开frf文件进行编辑。双击frf文件,window会问“打开方式”,选择ReportDesignerexe,并选中“以后都用这个程序打开”,以后就直接双击frf文件,会自动显示在delphi里一样的界面。
SQL Server2000只有个人版能在任何WIN平台下运行,其他版本只能在基于NT的服务器运行。
“Microsoft SQL
Server2000 Personal Edition”表示个人版,
“Microsoft SQL Server2000 Standard
Edition”表示标准版,
“Microsoft SQL Server2000 Enterprise
Edition”表示企业版。
还需要安装Microsoft SQL server 2000 SP4,这是微软官方补丁。解压后的文件名是
SQL2000-KB884525-SP4-x86-CHSEXE,运行的第一步只是解压文件,要安装还需要到解压的目录下运行setupbat。
以上就是关于如何在FastReport报表中动态添加数据集全部的内容,包括:如何在FastReport报表中动态添加数据集、用Fast report做报表怎样在表的最后统计合计值。若有几张表也只在最后一页做统计、DELPHI 下fastreport打开指定目录中的报表文件怎么写语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)