对会计软件中凭证输入模块的一点看法

** 对会计软件中凭证输入模块的一点看法 ** ** **

武汉华中师大信管系 谢刚

** 摘要: ** ** **

凭证的制作和处理是会计工作中最为重要的一环,特别是对会计电算化来说,就显得更重要了,应用软件来实现传统的会计过程,凭证是其他一切处理的基础。没有了凭证就没有会计软件后面的一切。而就凭证这块来说,最为基础也最为重要的当属凭证的输入。而凭证的输入的第一步就是确定此凭证的凭证编号,在会计软件中应该尽量的避免由人工来获取凭证编号,可实施的软件都应该由程序来自动获得凭证编号,因为前面说过,凭证编号不容错误。本文就凭证编号的获取过程进行以下讨论。使用开发工具:PowerBuilder8.0 + MS SQL-Server2000

** 关键字: ** ** **

会计软件 凭证输入 凭证编号 PowerBuilder8.0 **** SQL-Server2000

** 正文: ** ** **


** ** ** 一.传统方法的探讨: **

通过对目前国内会计软件中凭证输入模块的调查分析,发现大部分软件的凭证输入模块在凭证编号获取上面使用的方法基本一致。使用方法如下:

在一张新的凭证输入之前,必须先确定这张凭证的凭证编号。一般做法为:由程序检查 PPK (日库)记录。如果发现里面有记录,就取其最后一记录的凭证编号,再加上 1 就为正准备输入的这张凭证的编号;如果 PPK 库里面没有记录(说明正准备输入的这张凭证为本工作日的第一张凭证),就必须得访问 pok&rq (当月月库)记录,如果发现里面有记录,同理取其最后一记录的凭证编号,再加上 1 就为正准备输入的这张凭证的凭证编号;如果 POK 库里面没有记录,就说明此天为月初的第一个工作日(但是这种情况一年一共就仅 12 次)。

二.亲自设计过程中的经验:

我在亲自设计凭证输入程序的时候(用 PowerBuilder + MS SQL-Server2000 设计),发现上述方法用语言实现起来具有以下不足:

第一:是在代码设计和维护的时候不方便,

第二:更为重要的是在凭证编号的连续性方便不好,比如:从工资模块转过来的工资凭证就不得不用一个新的凭证机制来存放这些凭证,

第三:还有就是浪费了很多系统资源,比如每次添加凭证的时候都要移动大量的数据库记录,特别是在月初的第一个工作日,在月末也面临同样的问题(月到月末,表中的记录月多,移动的次数就月多) 。

所以,我在实际设计的过程中,摸索出了一种新的思路来解决这个问题,可以很好解决上述三个问题,觉得这个思路有必要拿出来和大家共同商讨,具体实现思路如下:

第一:另外新建一个数据表(表名为 HQPZBH ):

字段名称分别为: ID , PZBH ,字段属性分别为: integer , char 型。建立好后进行附一组值(最好用程序来附值)。 ID 字段附值为 1 , PZBH 字段为 0000 (根据具体的要求进行选择位数,如 000000 等)。

用程序实现代码如下(仅为参考,根据具体的编程语言变换形式):

( 连接数据库语句省略,以下同 )

insert into HQPZBH(hqpzbh.id,hqpzbh.pzbh)

values(1,0000) ;

第二:每次在输入新的凭证之前获取该凭证编号的思路:

数据表 HQPZBH 里面始终只有一条记录, ID 始终为 1 , PZBH 是始终为库里面的最后一张凭证的编号。每次进行输入凭证获取凭证编号的时候就访问此数据表,读取表中 PZBH 字段的值,再加 1 就 OK 了。

用程序实现的代码如下(参考):

integer nowpzbh ;(定义存储准备输入的这张凭证的凭证编号的变量)

// 在表 hqpzbh 中获取 pzbh 字段的值,并放于 nowpzbh 变量中

select hqpzbh.pzbh

into :nowpzbh

from hqpzbh

where hqpzbh.id=1;

// 注意:本表中始终只有一条记录

nowpzbh = nowpzbh+1

// 此值自加 1 后就成为了即将输入的凭证的凭证编号了

第三:保证数据表 HQPZBH 里面的 PZBH 字段的值始终是最后一张凭证的编号。

那么就要求我们在每张凭证输入完毕并经过检验保存的同时,用此凭证编号来替代数据表 HQPZBH 里面的原有的 PZBH 字段的值。

用程序实现的代码如下(参考):

假设存储刚保存的那张凭证的凭证编号的变量为 nowpzbh

update hqpzbh

set hqpzbh.pzbh=:nowpzbh

where hqpzbh.id=1;

// 表中只有一条记录。并且其 id 字段的值始终都为 1

三、总结

我认为这个方法比较好理解和实现,设计和维护代码也比较方便。同时对于那些特殊凭证的处理也极为方便,比如:工资凭证的自动转入凭证库时就不必要再使用传统软件的那种“特定区段的凭证编号”方式了。就可以实现凭证库中凭证编号的真正意义上的连续了。还有就是对数据库中数据量相当大时,这种方式相当占优势,因为它每输入一张凭证只需要访问二次数据库的数据表,更为重要的是这个数据表只有一条数据,访问时不需要任何的移动时间。避免了传统方式的凭证编号的寻找(特别是月初的第一个工作日和月尾的数据大量移动)。大大节约了访问数据库的时间开销和空间开销。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus