首页技术fastreport3.0(FastReport 3.0 使用自定义函数)

fastreport3.0(FastReport 3.0 使用自定义函数)

编程之家2024-02-04106次浏览

一、如何在FastReport的对象和表达式中使用变量

假设有一个职员表,包括字段N,Nname1,Name2和Name3。字段的名称在不同的时候作用是不一样的,一般用于数据库设计人员。也就是说,需要重新指定一个更有意义的名称用于插入到对象中。当然,变量不仅能用于数据库字段名称,也能用于算术表达式。一个例子就是对数据字段、数值、日期或时间求和。更多的使用变量的例子可以从报表演示的程序代码中找到。

fastreport3.0(FastReport 3.0 使用自定义函数)

从操作一个变量列表,你必须从“文件|数据字典…”菜单中打开一个对话框。

变量列表在屏幕的左边。从这个图像可以看出,这个列表是一个两层结构:它由分类和各分类所包含的一个或多个变量组成。分类仅用于对变量逻辑上进行分组,是不能插入到报表中的。有关这个技术的详细说明参考“设计器”部分。

但是,FastReport数据字典中的变量描述不能单独工作。如果没有定义相关代码,FastReport会按这样的假设查找:

在数据字典中有这样一个变量;

它是一个数据字段;

它是一个类似于Page#,Date,Time或其它类型的专用变量;

fastreport3.0(FastReport 3.0 使用自定义函数)

它是frVariables列表中的变量;

它是一个对象的属性;

它是一个frConsts中的常量;

同样,如果使用控件的OnGetValue事件,它在所有验证之前调用。如果事件处理返回一个值,变量将被初始化,并且不对它做进一步的验证。

这种方法使得报表中的变量赋值方法具有多样性。它推荐为:

当生成过程中将一个不可改变的静态记录值赋值给一个记录时,可以使用一个frVariables,就象这样:

fastreport3.0(FastReport 3.0 使用自定义函数)

frVariables['ReportingPeriod']:='January';

frReport1.ShowReport;

当生成过程中将一个可改变的记录值赋值给一个记录时,你可以使用数据字典或TfrReport.OnGetValue事件处理,就象这样:

procedureTForm1.frReport1GetValue(constParName:String;varParValue:Variant);beginifAnsiCompareText(ParName,'ReportedPeriod')=0then

ParValue:=Table1OtchPeriod.Value;end;也可以通过编程为一个变量列表赋值:

withfrReport1.DictionarydobeginVariables['Number’]:=1;

Variables['Sum']:='0.2*Table1.Summa';

Variables['Date']:=''''+'January'+'''';end;(在这个例子中需要另外说明的是要定义一个字符常量)。

FastReport中指定给数据字典中的变量的字符串,可以作为一个表达式被计算。常常用来使用一个没有在数据字典中定义的变量。

必须记住的是如果你从frVariables列表中使用变量或者你通过OnGetValue事件遍历它们,它们不能放进数据字典。

二、fastreport 小写转大写金额,函数怎么调用

我一般用的是帆软报表FineReport,它只要输入文本函数就可以了,cnmoney(number,unit)返回人名币大写。

unit:单位:“s”“b”“q”“w”“sw”“bw”“qw”“y”“sy”“by”“qy”“wy”分别表示“拾”“佰”“仟”“万”“拾万”“佰万”“仟万”“亿”“拾忆”“佰亿”“仟亿”“万亿”

单位可以为空,如果为空,则直接将number转换为人民币大写,否则先将number与单位的进制相乘,然后再将相乘的结果转换为人民币大写。

示例

CNMONEY(1200)等于壹仟贰佰圆整。

CNMONEY(12.5,"w")等于壹拾贰万伍仟圆整。

CNMONEY(56.3478,"bw")等于伍仟陆佰叁拾肆万柒仟捌佰圆整。

CNMONEY(3.4567,"y")等于叁亿肆仟伍佰陆拾柒万圆整。

三、如何在fastreport中添加我的自定义函数

我最近刚好碰到这个问题,给你简单说一下。在fastreport的事件【onbeforeprint】里面控制。\r\n手动添加要补的空行,其实就是添加回车或者换行符(#13#10)。最好添加【#13】。\r\n这样的话,就必然牵扯的一个问题,再添加空行之前,判读原来的【memo】已经存在多少行了,然后才知道应该添加多少行。这个问题我是这么解决的:在单元unit---【fr_class】中找到里面的自动换行的函数,把他自定义成自己的函数,就是说要提前判断,【memo】中有多少行。\r\n希望你能明白。\r\n\r\n祝你好运!!!

flash8.0序列号(flash8.0激活序列号)中国被黑站点统计(中国被黑站点统计分析报告)