论文部分内容阅读
[摘要] 在大量的财务资料整理过程中,作者把电子数据处理的重复操作流程和方法加以归纳、加工,形成标准化的数据处理模型;据此,利用VFP语言编写的数据转换通用程序,经多年的实际应用,效果极为显著,对规模较大、数据处理频繁单位的财务管理工作,具有重要的参考与应用价值。
[关键词] VFP语言程序 数据表转换 设计与实现
一、 应用分析
在网络经济时代,大型数据库系统以其优异性能,占据大部分市场份额。但并非说,单用户的中小型数据库系统无用武之地了。中小型数据库系统,由于操作简便、命令与函数易掌握,被广泛用来解决日常数据的整理事务,成为重要的财务管理工具之一。
通常情况下,财务人员所取得的外部电子数据与实际需求之间可能存在偏差,为此而进行的合并、分解、筛选等数据整理工作不可缺少。在规模较大单位,会计核算、工资管理和固定资产管理前后的数据整理工作非常庞杂;有些数据处理,如采取简单的查找方式去解决,不仅费时、费力、易出错和难度大,而且处理结果也不太理想,有时更无从着手。其实,我们只要找出当中规律,问题就简单多了。
对经常使用的数据处理方法,不妨借助于某些工具软件,设计成标准化程序。本文基于VFP语言应用,提供的数据转换通用程序,能大幅度提高财务管理者的工作效率和质量。
二、基础条件
1.电子数据的来源和输出格式必须是Excel(*.XLS)、标准文本(*.TXT)和数据表(*.DBF)等三种类型中的一种
2.计算机上预先安装有专用数据库软件VFP6.0及微软公司的办公操作系统(其中包括Excel)
3.财务人员能熟练掌握上述两种应用系统,否则软件制作会非常吃劲
三、设计方案关键部件说明
1.基表(changebase.dbf)定义,基表是数据交换的关键表,用于设置表与表之间对照关系的表;由程序员预先定义,在数据交换对照关系控件中调用。应具备以下四个字段:
2.制作数据转换程序表单
在启动VFP6.0后,选择“文件”、“新建(N)”,点击“表单”,如采用“新建文件”,则在屏幕左上角窗口出现空白表单;在空白表单的属性窗口,将“CAPTION”属性修改为“财务数据交换表单”,“NAME”属性修改为“CHANGE”,“ICON”属性选择“CHANGE.ICO”图标;然后在空白表单中添加相应控件(如下图所示)。
下图列示了数据交换表单的控件功能及名称。
当然,数据交换表单的制作还有其他方式。
3.主要功能介绍与实现
限于篇幅,本文只提供其中的数据转换关键程序。【开始数据交换】控件(cmd_startchange_tables)click过程代码如下:
local importtable,exporttable,crepl,cfind,cvalue
select 0
use (thisform.text_importtable.value) shared alias aaa/*打开源表并命名为 aaa
select 0
use (thisform.text_exporttable.value) shared alias bbb /*打开导出表并命名为 bbb
select changebase
set filter to !empty(item_out)/*筛选基表中导出表达式
go top
if thisform.Check_clearitem_data.value=1/*执行源表数据的清除过程
select changebase
scan/*循环基表,检查源表数据类型,由此设置清除表达式
do case
case item_type='N'/*如为数值型字段,则设置为零处理
crepl='repl all '+alltrim(item_in)+' with0'
case item_type='D'/*如为日期型字段,则设置为空的日期格式
crepl='repl all '+alltrim(item_in)+' withCTOD("-- ")'
case item_type='C' OR item_type='M' /*如为字符型或备注型字段,则设置为空
crepl='repl all '+alltrim(item_in)+' with""'
other/其他類型的字段,则不设置任何表达式
crepl=''
endcase
select aaa
&crepl /*根据上述设置清除源表数据
select changebase/*回归基表循环,执行下一字段的操作过程
endscan
endif
select aaa
go top
do while !eof()/*开始源表的数据循环过程
cvalue1=alltrim(thisform.combo_importtable_selectkey.value)
cvalue=&cvalue1 /*将源表关联字的值赋给 cvalue 变量
cvalue=alltrim(cvalue)
select bbb
cfind='loca for alltrim('+;alltrim(thisform.combo_exporttable_selectkey.value)+')=="'+alltrim(cvalue)+'"'
&cfind/*查找满足导出表关联字的记录
if found()/*如导出表记录存在
select changebase
scan/*在基表中循环提取导出表达式
cvalue1=alltrim(item_out)
select bbb
cvalue=&cvalue1 /*将导出表达式的计算结果赋给 cvalue 变量
select aaa
if empty(changebase.nosum)
/*如基表设置中源表字段为替换状态,则在此定义替换命令
do case
case type('cvalue')='N'/*cvalue变量为数值型数据的替换命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with '+alltrim(str(cvalue,16,2))
case type('cvalue')='D' /*cvalue变量为日期型数据的替换命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with CTOD("'+DTOC(cvalue)+'")'
other/*cvalue变量除上述类型数据外的替换命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with "'+alltrim(cvalue)+'"'
endcase
&cvalue3/*根据上述设置,将导出表的计算结果替换到源表相应字段
else/*如基表设置中源表字段为累加状态,则设置累加命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with '+alltrim(changebase.item_in)+'+'+alltrim(str(cvalue,16,2))
&cvalue3 /*将累加结果写入源表相应字段
endif
select changebase/*进入基表下一循环过程
endscan
endif
select aaa/*进入源表下一记录的查找过程
skip
enddo
select aaa /*数据交换完毕,关闭源表和导出表
use
select bbb
use
select changebase
set filter to /*消除基表筛选状态
thisform.list_changestatus_eventresult.additem('数据交换完毕!')
thisform.refresh/*刷新当前表单,完成数据交换过程
四、 实例解析
1.外部文件转换
在财务数据处理过程中,会计人员所取得的关于人员工号、身份证号码和所属部门的信息资料,常见于Excel或数据表形式;与银行的信息交换资料,多为标准文本文件。文本文件和Excel文件如何转化为DBF格式文件?
Excel文件的第一行为表头,作为文件的内容属性,通过表头便知数据的存放意义。打开Excel文件后,选择“文件”、“另存为”,确定保存位置后,选择保存类型为“dbf 3”等,点击保存即可。用户须注意表头:列名不宜太长,避免重名。
标准文本转换成DBF文件的方法较多。本文主要介绍两种:
(1)在Excel空白文档中选择文本文件打开,在表的第一行插入一空白行,根据列内容写入表头,然后“另存为”DBF文件。
(2)先建立一DBF格式的空白表,表头宽度与类型对应于文本文件中的数据;然后使用“append from ”命令,将文本文件追加到DBF表中。
2.数据交换步骤
在启动数据交换表单后,点击(源表)【查找】,提取学生表;或在文本框中输入“student.dbf”后回车。如要修改学生表结构,则点击(源表)【修改字段】,字段修改完毕保存。此时在数据交换关系中显示源表字段和类型,在(源表)关联中显示字符型字段。
選择(源表)【关联】,找出与导出表连接的关联字。
在导出表行,重复上述两步,提取银行信息表和选择导出表关联字。
如要清除源表中有导出表达式的数据,则点击【清除源表关联项的数值型数据】;如数值型数据需要累加,则点击【累加切换】;如源表与导出表字段需自动匹配,则点击【自动匹配】;如已设置的导出表达式存在问题,必须全部清除后才能重新设置,则点击【清除全部表达式】。
在采用手工设置导出表达式时,可直接在导出表达式列表中输入,或点击“导出表字段选择”列表控件,引导表达式输入。
数据交换工作准备完毕,点击【开始数据交换】,执行数据交换过程。
3.以高校学生收费为例,介绍数据转换功能的应用
(1)资料及其制作。财务部门取得来自教务部门的关于学生学号、姓名、性别、班级、专业、系、学院和身份证号码等Excel格式文件,从银行取得关于学生姓名、身份证和银行卡等文本文件,以及财务部门拥有的关于班级编码、专业学费标准和住宿费标准的DBF文件。
通过Excel,将学生信息另存为student.dbf,并根据实际需要添加或修改部分字段;将银行信息制作成bankcard.dbf。
(2)实例操作。学生信息表整理,关联:班级名称(dname)。具体操作见下图:
4.解析
实际财务管理工作所面临的数据处理情况,远比实例要复杂得多。本文提供的数据转换程序,解决了两表或多表间有一项关联的数据交换问题,而撇开了数据的多项关联、读入和输出。读者不妨尝试制作,让该程序扩充成完整的数据处理系统。这样,对财务工作的帮助会更大。
五、价值实现
经十多年的使用与完善,该数据交换功能在笔者所在学校的职工工资、校内津贴、职工医疗费报销、学生奖助学金发放和贷款抵扣等银行打卡转账资料的制作中发挥了极其重要作用。据不完全估计,2006年处理的资金量就达7千万元。财政部关于《行政事业单位工资和津贴补贴有关会计核算办法》(财库[2006]48 号)规定,单位应以银行卡形式向职工发放工资(离退休费)和地方(部门)津贴补贴,中央和省级单位一律以银行卡形式发放,不得发放现金。数据转换功能,为单位财会人员处理银行卡业务,提供了极为重要的交换工具。
数据转换功能作用不在经济效益,主要体现在它的实际利用效果上,既节省了工作时间、减轻了劳动强度,又降低了手工处理的出错率,提高了财务工作效率和质量。笔者所在学校每年新生约6千人,学生表有70多个数据项目。若使用目前流行的、财务人员较熟悉的Excel,采用拖放修改方式去制作学生信息表,即使是一位熟练的操作员,一周时间很难结束;而借助于该功能,辅以VFP命令与函数,包括学生收费初始化在内的工作,一天时间就能轻松完成。我们也试用于部门预算关于职工信息表(1300员工)的整理中,写好数据对照关系,十分钟之内便实现了数据的比对与转换。
时下,全国的机关事业单位正紧锣密鼓地抓紧资产清理工作,在电子数据比较完备的单位,其中实物帐的处理工作,由该功能实现,其效果会更加明显。
参考文献:
[1]陈宗兴:中文版Visual FoxPro 6.0中文版程序设计,北京:中国铁道出版社,1999年
[2]吴克杰等:中文Visual FoxPro 6.0属性 事件 控件及方法,北京:北京航空航天大学出版社,1998年
[3]周予滨:Visual FoxPro 5.0中文版命令与函数大全,北京:中国水利水电出版社,1998年
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
[关键词] VFP语言程序 数据表转换 设计与实现
一、 应用分析
在网络经济时代,大型数据库系统以其优异性能,占据大部分市场份额。但并非说,单用户的中小型数据库系统无用武之地了。中小型数据库系统,由于操作简便、命令与函数易掌握,被广泛用来解决日常数据的整理事务,成为重要的财务管理工具之一。
通常情况下,财务人员所取得的外部电子数据与实际需求之间可能存在偏差,为此而进行的合并、分解、筛选等数据整理工作不可缺少。在规模较大单位,会计核算、工资管理和固定资产管理前后的数据整理工作非常庞杂;有些数据处理,如采取简单的查找方式去解决,不仅费时、费力、易出错和难度大,而且处理结果也不太理想,有时更无从着手。其实,我们只要找出当中规律,问题就简单多了。
对经常使用的数据处理方法,不妨借助于某些工具软件,设计成标准化程序。本文基于VFP语言应用,提供的数据转换通用程序,能大幅度提高财务管理者的工作效率和质量。
二、基础条件
1.电子数据的来源和输出格式必须是Excel(*.XLS)、标准文本(*.TXT)和数据表(*.DBF)等三种类型中的一种
2.计算机上预先安装有专用数据库软件VFP6.0及微软公司的办公操作系统(其中包括Excel)
3.财务人员能熟练掌握上述两种应用系统,否则软件制作会非常吃劲
三、设计方案关键部件说明
1.基表(changebase.dbf)定义,基表是数据交换的关键表,用于设置表与表之间对照关系的表;由程序员预先定义,在数据交换对照关系控件中调用。应具备以下四个字段:
2.制作数据转换程序表单
在启动VFP6.0后,选择“文件”、“新建(N)”,点击“表单”,如采用“新建文件”,则在屏幕左上角窗口出现空白表单;在空白表单的属性窗口,将“CAPTION”属性修改为“财务数据交换表单”,“NAME”属性修改为“CHANGE”,“ICON”属性选择“CHANGE.ICO”图标;然后在空白表单中添加相应控件(如下图所示)。
下图列示了数据交换表单的控件功能及名称。
当然,数据交换表单的制作还有其他方式。
3.主要功能介绍与实现
限于篇幅,本文只提供其中的数据转换关键程序。【开始数据交换】控件(cmd_startchange_tables)click过程代码如下:
local importtable,exporttable,crepl,cfind,cvalue
select 0
use (thisform.text_importtable.value) shared alias aaa/*打开源表并命名为 aaa
select 0
use (thisform.text_exporttable.value) shared alias bbb /*打开导出表并命名为 bbb
select changebase
set filter to !empty(item_out)/*筛选基表中导出表达式
go top
if thisform.Check_clearitem_data.value=1/*执行源表数据的清除过程
select changebase
scan/*循环基表,检查源表数据类型,由此设置清除表达式
do case
case item_type='N'/*如为数值型字段,则设置为零处理
crepl='repl all '+alltrim(item_in)+' with0'
case item_type='D'/*如为日期型字段,则设置为空的日期格式
crepl='repl all '+alltrim(item_in)+' withCTOD("-- ")'
case item_type='C' OR item_type='M' /*如为字符型或备注型字段,则设置为空
crepl='repl all '+alltrim(item_in)+' with""'
other/其他類型的字段,则不设置任何表达式
crepl=''
endcase
select aaa
&crepl /*根据上述设置清除源表数据
select changebase/*回归基表循环,执行下一字段的操作过程
endscan
endif
select aaa
go top
do while !eof()/*开始源表的数据循环过程
cvalue1=alltrim(thisform.combo_importtable_selectkey.value)
cvalue=&cvalue1 /*将源表关联字的值赋给 cvalue 变量
cvalue=alltrim(cvalue)
select bbb
cfind='loca for alltrim('+;alltrim(thisform.combo_exporttable_selectkey.value)+')=="'+alltrim(cvalue)+'"'
&cfind/*查找满足导出表关联字的记录
if found()/*如导出表记录存在
select changebase
scan/*在基表中循环提取导出表达式
cvalue1=alltrim(item_out)
select bbb
cvalue=&cvalue1 /*将导出表达式的计算结果赋给 cvalue 变量
select aaa
if empty(changebase.nosum)
/*如基表设置中源表字段为替换状态,则在此定义替换命令
do case
case type('cvalue')='N'/*cvalue变量为数值型数据的替换命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with '+alltrim(str(cvalue,16,2))
case type('cvalue')='D' /*cvalue变量为日期型数据的替换命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with CTOD("'+DTOC(cvalue)+'")'
other/*cvalue变量除上述类型数据外的替换命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with "'+alltrim(cvalue)+'"'
endcase
&cvalue3/*根据上述设置,将导出表的计算结果替换到源表相应字段
else/*如基表设置中源表字段为累加状态,则设置累加命令
cvalue3='repl '+alltrim(changebase.item_in)+;
' with '+alltrim(changebase.item_in)+'+'+alltrim(str(cvalue,16,2))
&cvalue3 /*将累加结果写入源表相应字段
endif
select changebase/*进入基表下一循环过程
endscan
endif
select aaa/*进入源表下一记录的查找过程
skip
enddo
select aaa /*数据交换完毕,关闭源表和导出表
use
select bbb
use
select changebase
set filter to /*消除基表筛选状态
thisform.list_changestatus_eventresult.additem('数据交换完毕!')
thisform.refresh/*刷新当前表单,完成数据交换过程
四、 实例解析
1.外部文件转换
在财务数据处理过程中,会计人员所取得的关于人员工号、身份证号码和所属部门的信息资料,常见于Excel或数据表形式;与银行的信息交换资料,多为标准文本文件。文本文件和Excel文件如何转化为DBF格式文件?
Excel文件的第一行为表头,作为文件的内容属性,通过表头便知数据的存放意义。打开Excel文件后,选择“文件”、“另存为”,确定保存位置后,选择保存类型为“dbf 3”等,点击保存即可。用户须注意表头:列名不宜太长,避免重名。
标准文本转换成DBF文件的方法较多。本文主要介绍两种:
(1)在Excel空白文档中选择文本文件打开,在表的第一行插入一空白行,根据列内容写入表头,然后“另存为”DBF文件。
(2)先建立一DBF格式的空白表,表头宽度与类型对应于文本文件中的数据;然后使用“append from ”命令,将文本文件追加到DBF表中。
2.数据交换步骤
在启动数据交换表单后,点击(源表)【查找】,提取学生表;或在文本框中输入“student.dbf”后回车。如要修改学生表结构,则点击(源表)【修改字段】,字段修改完毕保存。此时在数据交换关系中显示源表字段和类型,在(源表)关联中显示字符型字段。
選择(源表)【关联】,找出与导出表连接的关联字。
在导出表行,重复上述两步,提取银行信息表和选择导出表关联字。
如要清除源表中有导出表达式的数据,则点击【清除源表关联项的数值型数据】;如数值型数据需要累加,则点击【累加切换】;如源表与导出表字段需自动匹配,则点击【自动匹配】;如已设置的导出表达式存在问题,必须全部清除后才能重新设置,则点击【清除全部表达式】。
在采用手工设置导出表达式时,可直接在导出表达式列表中输入,或点击“导出表字段选择”列表控件,引导表达式输入。
数据交换工作准备完毕,点击【开始数据交换】,执行数据交换过程。
3.以高校学生收费为例,介绍数据转换功能的应用
(1)资料及其制作。财务部门取得来自教务部门的关于学生学号、姓名、性别、班级、专业、系、学院和身份证号码等Excel格式文件,从银行取得关于学生姓名、身份证和银行卡等文本文件,以及财务部门拥有的关于班级编码、专业学费标准和住宿费标准的DBF文件。
通过Excel,将学生信息另存为student.dbf,并根据实际需要添加或修改部分字段;将银行信息制作成bankcard.dbf。
(2)实例操作。学生信息表整理,关联:班级名称(dname)。具体操作见下图:
4.解析
实际财务管理工作所面临的数据处理情况,远比实例要复杂得多。本文提供的数据转换程序,解决了两表或多表间有一项关联的数据交换问题,而撇开了数据的多项关联、读入和输出。读者不妨尝试制作,让该程序扩充成完整的数据处理系统。这样,对财务工作的帮助会更大。
五、价值实现
经十多年的使用与完善,该数据交换功能在笔者所在学校的职工工资、校内津贴、职工医疗费报销、学生奖助学金发放和贷款抵扣等银行打卡转账资料的制作中发挥了极其重要作用。据不完全估计,2006年处理的资金量就达7千万元。财政部关于《行政事业单位工资和津贴补贴有关会计核算办法》(财库[2006]48 号)规定,单位应以银行卡形式向职工发放工资(离退休费)和地方(部门)津贴补贴,中央和省级单位一律以银行卡形式发放,不得发放现金。数据转换功能,为单位财会人员处理银行卡业务,提供了极为重要的交换工具。
数据转换功能作用不在经济效益,主要体现在它的实际利用效果上,既节省了工作时间、减轻了劳动强度,又降低了手工处理的出错率,提高了财务工作效率和质量。笔者所在学校每年新生约6千人,学生表有70多个数据项目。若使用目前流行的、财务人员较熟悉的Excel,采用拖放修改方式去制作学生信息表,即使是一位熟练的操作员,一周时间很难结束;而借助于该功能,辅以VFP命令与函数,包括学生收费初始化在内的工作,一天时间就能轻松完成。我们也试用于部门预算关于职工信息表(1300员工)的整理中,写好数据对照关系,十分钟之内便实现了数据的比对与转换。
时下,全国的机关事业单位正紧锣密鼓地抓紧资产清理工作,在电子数据比较完备的单位,其中实物帐的处理工作,由该功能实现,其效果会更加明显。
参考文献:
[1]陈宗兴:中文版Visual FoxPro 6.0中文版程序设计,北京:中国铁道出版社,1999年
[2]吴克杰等:中文Visual FoxPro 6.0属性 事件 控件及方法,北京:北京航空航天大学出版社,1998年
[3]周予滨:Visual FoxPro 5.0中文版命令与函数大全,北京:中国水利水电出版社,1998年
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。