首页 > 范文大全 > 正文

计算机报表指令设计新思路――数据表化指令

开篇:润墨网以专业的文秘视角,为您筛选了一篇计算机报表指令设计新思路――数据表化指令范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

一、数据表指令的理论基础――三库理论

报表模块而言,“三库”即“三表”,即数据表、指令表和指标表。数据表是提供编表所需数据源的表文件,主要是中央数据表,凭证月表有时也可以作为少数报表的数据源表,报表模块可从中采集数据编表,而不必另行加工;指令表是编制会计报表的方法,表结构固定有七个字段,其记录就是编表指令,实现编表指令数据表化,以增强指令的可读性和可扩充性,指令可自行定义和编辑;指标表提供报表上的指标数据,是报表模块加工产生的目的数据,其表结构和记录均由用户自己定义和编辑。其中,数据表不必另行设计,只要设计指令表和指标表。为利于编表指令的定义、编辑和检错,每一个报表分别设计两个表文件,即一个指令表和一个指标表。

报表指令的数据表化设计思路,就是运用“三库理论”将编表指令存放在指令表中,使指令独立于指标,同时又独立于编表过程。所有报表的编制过程都是相同的,即所有报表的编制都执行一个编表程序。数据表化指令认为,各种报表结构上的差异体现在各自的指标表中,而编制方法上的差异则体现在指令上,其编制过程是完全相同的。因此,可以开发出全通用的报表模块。

二、数据表化指令的工作原理和设计原则

指令表有七个字段,即“要求”、“类型”、“找数条件”、“源表字段”、“计算”、“报表记录号”和“报表栏目”,分别反映打开源表、采集数据方法、运算方法和填表位置。

无论是到源表还是到指标表本身采集数据,都相当于执行了一条SUM命令,“找数条件”字段将提供SUM命令中FOR条件短语的参数,而“源表字段”则提供了SUM命令中被求和的N型字段名。即:

SUM ALL源表字段TO TBSI FOR找数条件

根据指令的填表位置参数将产生填表行动,相当于执行了一条REPLACE命令,“报表记录号”字段提供了指标表记录指针移动的准确位置,“报表栏目”则提供了REPLACE命令指定的N型操作字段,采集的数据还提供了REPLACE命令中的表达式。即:

GOTO报表记录号

REPLACE报表栏目WITH TBSI

可以看出,这七个字段相互配合可实现很强的编表功能,编制高难度会计报表;可完成费用分配、成本计算等;还可配合采用表格输入法进行凭证数据的自动录入;上级主管部门甚至可以对所属单位同结构的报表汇总;还可利用表中指令执行命令或运行自定义函数采集数据编表,这实际上包括了程序化指令的设计思路。数据表化指令的可读性较强,用户可以自行定义和编辑,自主扩充新的报表编制。相对传统报表指令设计思路,数据表化指令在指令的可读性、可扩充性等方面较为优越。

指令设计必须遵循三大原则:一是指令要独立,不能与程序或函数代码混在一起,也不能存放在其他数据表中;二是指令要有赖以表达的附着物,该附着物要十分有利于指令的定义、编辑、检错、执行和阅读,凭证表、命令程序和自定义函数等都不是理想的附着物;三是指令要具有高度的可读性,使用户容易看懂,从而掌握灵活运用报表模块的主动权。

三、指令表结构设计

(1)“要求”字段。类型为N,宽度为2.0,赋值范围是数值0到14.各数值代表的含义如下:“0”表示无要求;“1到12”是指定月份才使用的指令;“13”是每次填表都要使用的指令;“14”字段指定打开源表,表名放入“源表字段”,如源表是余额表,可放人余额样板表“YE.DBF”,其“找数条件”字段可增加对源表进行筛选的逻辑条件;利“I”类型的Visual FoxPro的拷贝命令生成新的源表,然后再用要求14将其打开,从中取数填表,以提高编表速度。

(2)“类型”字段。类型为C,宽度为l,赋值范围为A/B/C/D/E/F/G/H/I/J十种填表类型。各填表类型的含义如下:

A――对指标表中指定的填列字段清零,即清除表中上次填列的数值,以便本次重新填列;

B――要求14指定打开的源表中采集数据填表,主要用于指标表中那些原始填列项目;

C――到指标表本身采集数据填表,主要用于指标表中那些以表填表的填列项目;

D――将指标表中已经填上去年的数值变号,相当于乘以-1;

E――对指标表进行平衡或相等检查;

F――对指标表的某些填列字段进行横向求和,主要用于需要横向计算填列的项目;

G――将数值表达式的值填到指标表的指定位置,主要用于配合调用自定义函数编表;

H――将指标表指定字段的上期数据累加本期数据,然后填入本期指标表;

I――执行Visual FoxPro命令,如GOTO、COPY等,可用该类型调用自定义函数;

J――填列指标表中的上年同期数据。

(3)“找数条件”字段。类型为C,宽度为30,赋值逻辑表达式或“*”号开头的注释内容。B类型的逻辑条件针对源表;A/C/D/E类的逻辑条件针对指标表本身;F类型和G类型的逻辑条件中为一个数值表达式;I类型的逻辑条件为一条VFP的命令。逻辑条件可用分号作续行标志;还可用“*”号开头作注释。

(4)“源表字段”字段。类型为C,宽度为12,赋值提供数据的N型字段名。B类型的源表字段是打开源表中的一个数值型字段;C类型的源表字段是指标表本身的一个数值型字段变量,其余类型可不赋值。

(5)“计算”字段。类型为C,宽度为1,赋值范围是“+”、“-”、“*”、“/”或“=”运算符,表示上一条指令找到的数将与本指令找到的数进行计算,默认计算为“+”。上一条指令采集的数是被减数或被除数,本指令采集的数是减数或除数;或本指令找到的数要与指标表中指定的数据相等。检查E类型指令相等用“=”。可用若干指令连续进行计算,再将最终计算结果填入表中。

(6)“报表记录号”字段。类型为N,宽度为4.0,赋值指标表中的一个记录号,用来指定填表的记录号位置。当指定的报表记录号大于零时,就产生一次填表行动,填到“报表栏目”指定的字段;等于零时则不填表,并配合“计算”进行运算,为后面的填表指令作准备。

(7)“报表栏目”字段。类型为C,宽度为12,赋值指标表中的一个数值型字段变量,用于指定填表的字段位置。“报表记录号”和“报表栏目”相配合可唯一指定指标表中的一个填表位置。

每一个报表指令表中的记录一般都比较多,这些指令在表中的存放位置具有一定的规则,报表项目的相互依存性决定了指令记录的存放顺序。一般而言,以“*”号开头的注释指令可放在表中的任意位置;要求“14”要放在有关指令之前;要求“1”到“13”一般按顺序存放;在此基础上再按A、B、C、D、E等类型指令排列。总的原则是:先填数或先操作的指令要放在先,后填数或后操作的指令要放在后,一个指令表只存放一个指标表的编表指令。

四、数据表化指令工作流程

数据表化指令在执行时一般使用三个工作区:一号工作区打开指令表,以便顺序执行表中的所有指令,执行时会跳过注释指令;根据要求“14”指令,在二号工作区打开源表,为采集数据作好准备;执行指令采集数据,填在三号工作区打开的指标表内。对某些需要填列上年同期数的报表,还可在四号工作区打开上年同期的指标表,该指标表是在编制上年同期报表时由系统自动生成,然后从中采集数据填到三号工作区的指标表中。