如何在FastReport的对象和表达式中使用变量
1个回答
2016-12-26
展开全部
假设有一个职员表,包括字段N,Nname1,Name2和Name3。字段的名称在不同的时候作用是不一样的,一般用于数据库设计人员。也就是说,需要重新指定一个更有意义的名称用于插入到对象中。当然,变量不仅能用于数据库字段名称,也能用于算术表达式。一个例子就是对数据字段、数值、日期或时间求和。更多的使用变量的例子可以从报表演示的程序代码中找到。
从操作一个变量列表,你必须从“文件|数据字典…”菜单中打开一个对话框。
变量列表在屏幕的左边。从这个图像可以看出,这个列表是一个两层结构:它由分类和各分类所包含的一个或多个变量组成。分类仅用于对变量逻辑上进行分组,是不能插入到报表中的。有关这个技术的详细说明参考“设计器”部分。
但是,FastReport数据字典中的变量描述不能单独工作。如果没有定义相关代码,FastReport会按这样的假设查找:
在数据字典中有这样一个变量;
它是一个数据字段;
它是一个类似于Page#,Date,Time或其它类型的专用变量;
它是frVariables列表中的变量;
它是一个对象的属性;
它是一个frConsts中的常量;
同样,如果使用控件的OnGetValue事件,它在所有验证之前调用。如果事件处理返回一个值,变量将被初始化,并且不对它做进一步的验证。
这种方法使得报表中的变量赋值方法具有多样性。它推荐为:
当生成过程中将一个不可改变的静态记录值赋值给一个记录时,可以使用一个frVariables,就象这样:
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数据字典中的变量描述不能单独工作。如果没有定义相关代码,FastReport会按这样的假设查找:
在数据字典中有这样一个变量;
它是一个数据字段;
它是一个类似于Page#,Date,Time或其它类型的专用变量;
它是frVariables列表中的变量;
它是一个对象的属性;
它是一个frConsts中的常量;
同样,如果使用控件的OnGetValue事件,它在所有验证之前调用。如果事件处理返回一个值,变量将被初始化,并且不对它做进一步的验证。
这种方法使得报表中的变量赋值方法具有多样性。它推荐为:
当生成过程中将一个不可改变的静态记录值赋值给一个记录时,可以使用一个frVariables,就象这样:
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事件遍历它们,它们不能放进数据字典。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询