1、电算化会计实验指导书实验课程代码:08041030英文名称:Computer Application in Accounting合用对象:管理类本科专业、经济类本科专业学时学分:共64学时,其中理论教学48学时,实验16学时。共4学分,实验1学分。一、实验的地位、作用电算化会计实验作为课程实践性环节之一,是教学过程中必不可少的重要内容。通过计算机实验和实例开发,使学生加深理解、验证巩固课堂教学内容;增强对关系数据库系统VFP、账务解决系统整体的感性结识;掌握系统分析、系统设计及可视化程序设计、应用系统开发的基本方法;培养学生理论与实践相结合的能力。二、实验开设对象本实验开设对象为电算化会计课程
2、的学习者(管理类本科专业、经济类本科专业),实验为必修内容。三、基本原理及课程简介电算化会计是一门培养学生学习和掌握会计电算化系统分析和开发基本技术,并具有一定程序设计和独立完毕简朴应用系统开发能力的专业提高类课程,属于计算机和会计学相结合的边沿类课程,具有很强的操作性和实践性。课程实验教学目的在于使学生从系统操作和软件设计两个方面掌握账务解决系统的基本原理、技术,并通过上机实践进行自己动手进行实例开发,从而巩固提高课程教学质量。本课程规定学生了解系统开发中需要用到的系统调查、分析和设计等基本理论,并在此基础上熟悉一门数据库语言,在掌握数据库语言的基础上,结合实际,进行简朴财务应用软件的设计与
3、开发,并能独立在计算机上进行实现。实验课程不同于理论课程,应充足体现“教师指导下的以学生为中心”的教学模式,以学生为认知主体,充足调动学生的积极性和能动性,重视学生自学能力的培养。实验方式重要为学生上机操作,教师随堂辅导。共开设8个实验项目。实验1为账务解决系统的开发进行原始数据的准备 ,实验2-7为系统中各表单的界面设计与程序设计训练,8为综合性系统开发实验。四、指导教师原则上由关系数据库课程讲授教师负责,并担任重要的实验指导教师,实验室人员配合指导。指导教师应在每次实验前讲清实验目的、基本原理、实验规定等,指导学生在规定的时间内完毕相关课程实验。五、实验设备配置每人配置1台电脑,安装有关系
4、数据库系统 Visual Foxpro 6.0、用友财务软件、Office 97/2023等其他软件系统,可访问内部局域网。六、考核与报告1实验后,学生将实验结果等内容及时存盘,并写出实验报告,符合实验教学的规定,并得到指导教师的认可。2指导教师对学生上机实验结果及时检查,并对每份实验报告进行审阅、评分。3该实验课程的成绩单独评分,并与实验学分挂钩,同时记入课程总成绩。实验一 VFP操作回顾与账务解决系统开发准备一、实验题目1、 回顾关系数据库课程中所学的VFP6.0的相关操作;2、 做建立项目管理账务解决系统开发准备。二、实验课时课内2学时。三、实验目的1、从VFP系统的启动开始,逐步熟悉其
5、界面、辅助设计工具及基本操作,并回顾VFP的相关操作;2、建立系统的控制和管理中心:项目管理器,建立系统文献的存储文献夹。四、实验内容和规定一.项目的建立 1.拟定系统文献夹的途径,建立系统文献夹:D:* 或者 E:*; 2.运用VF6.0新建项目文献:账务解决系统,并将其保存到所建文献夹中。 二.数据初始化 1.将基础数据文献拷贝到系统文献夹下(各种表和数据文献); 2.在项目管理器中建立数据库:总账.dbc; 3.在新建数据库中导入基础数据文献(将表添加到总账数据库); 4练习自行建立“操作人员”表,其它表格通过局域网共享获得。 三.建立系统的门户表单-“系统注册”表单 1、建立“系统注册
6、”表单第一步:通过操作的方式建立一个表单,将其保存,取名为系统注册;第二步:将表单的Caption属性有本来的form1改为“系统注册”。2、建立“系统注册”表单集建立方法:在建立表单集时,我们先建立一个新表单,建立完一个新表单后,VF的主菜单上就会自动增长“表单”这一菜单项,有关表单和表单集的相关操作都可以在这一菜单项中来完毕。建立表单集需要下面三个环节:表单创建表单集添加新表单(移除表单集)。具体环节如下:第一步:创建新表单:图1-1建立表单示意图图1-2建立表单示意图第二步:点击主菜单中的“表单”菜单项,然后点击其下拉菜单中的“创建表单集”;此时,“表单设计器”就变成了“表单集设计器”。
7、图1-3 创建表单集第三步:点击“表单”菜单项下拉菜单中的“添加新表单”和“移除表单”进行表单集中表单个数的增长和减少。图1-4 往表单集中添加新表单图1-5 表单集示意图图1-6 移除表单示意图3、建立“用户”数据表 此数据表中起码涉及:姓名、密码两个字段,用来控制用户的登陆以及用以纪录系统的使用情况。图1-7 用户表结构示意图 4、设立系统数据环境我们在前面已经建立了一个“用户”表,这个表是一个数据库表,存在于我们新建立数据库中,但是这时候他还不能为我们的表单所用。由于数据库和表单是两个独立的事务。所以接下来我们需要将本来在数据库中的表加到我们表单的数据环境中来,这样将会有两个方面的好处:
8、1、这个表现在和表单之间建立了一种关系,可以随时为我们的表单所用了;2、在表单数据环境中的表将会随着表单的打开和关闭而自动的打开和关闭。这样的话我们在操作表单的时候就不用再去紧张或者考虑我们要用到的表是否已经打开或者关闭了。 5、表单界面设计涉及:标签、命令按钮、文本框、组合框和复选框。图1-8 系统注册界面设计示意图6、控件数据捆绑 标签用户名后面的组合框中数据来自于“用户”数据表中的姓名字段,要想实现在表单运营过程中自动显示,在运营之前需要进行数据捆绑和程序控制。(1)数据捆绑图1-9控件捆绑数据示意图(2)程序控制COMBO1.INITpublic yhm,yhmmyhm=yhmm=th
9、is.value=this.list(1)7、表单程序设计FORM1各控件中的程序如下:我们在编程的时候考虑得最多或者说必须要考虑的就是:一方面程序要能实现其应有的功能;此外:就是用户操作的简便性。1、判断用户输入密码是否对的,是否有使用系统的权限:在程序编写过程中是通过判断用户输入密码和系统提供密码是否一致来实现判断的。假如,用户输入的密码对的,那么他就可以进入系统;否则,用户就会被拒之门外。要实现这个功能,我们第一步就是要从系统中取出每个用户所相应的密码;第二步,再用我们取出来的密码跟用户输入的密码进行比较。第三步:根据比较结果进行分支解决。第一步:我们在编程过程中要实现的第一个功能就是取
10、出系统中原先设定的用户密码。这一功能我们是在:组合框中编程实现的。具体程序如下:COMBO1.INITpublic yhm,yhmmyhm=yhmm=this.value=this.list(1)sele 用户yhm=alltrim(姓名)yhmm=alltrim(密码)COMBO1.CLICKsele 用户yhm=alltrim(姓名)yhmm=alltrim(密码)thisform.text1.setfocus 第二步:实现用户输入密码和系统密码的比较,具体程序如下:COMMAND1.CLICKlocal yhsr,xmyhsr=alltrim(thisform.text1.value)i
11、f sys(2023,yhsr)!=sys(2023,yhmm) &第三步:比较之后进行分支解决。 thisform.text1.value= thisform.text1.setfocus =messagebox(密码不对的,请重新输入!,0+48,密码错误) returnelse if thisform.check1.value=1 thisformset.form2.visible=.t. thisformset.form2.activate thisformset.form1.visible=.f. else public zcr zcr=yhm release yhm,yhmm th
12、isformset.release endifendif 在更改密码表单中,进行的是输入新密码、比较输入密码以及进行密码的替换。在输入新密码的时候,我们还要进行一些完善性的措施,由于密码关系到一个系统得安全性,所以我们在更改密码的时候或输入密码时,需要遵循一定的规则。具体如下:(1)用户输入的密码不能为空;(2)用户两次输入的密码必须相等。要想实现上述功能,在FORM2表单中需要编写如下具体程序:COMMAND1.CLICKlocal xmm1,xmm2xmm1=alltrim(thisform.text1.value)xmm2=alltrim(thisform.text2.value)if
13、xmm1= =messagebox(密码不能为空!,0+48,警告) thisform.text1.value= thisform.text1.setfocus returnendifif sys(2023,xmm2)!=sys(2023,xmm1)=messagebox(“密码核对错误,请重新拟定新密码!”,0+48,“警告”) thisform.text2.value= thisform.text2.setfocus returnelse sele 用户 repl 密码 with xmm1 public zcr zcr=yhm release yhm,yhmm thisformset.re
14、lease endif 注意事项:1 在建立完系统文献夹后,千万注意设定当前系统项目管理器文献途径为当前默认途径;2 VFP命令语句不区分字母大小写,但必须是英文格式,需要注意输入时的中、英文切换,避免输入中文符号;3 为防止软盘犯错、内容丢失,除在硬盘上保存外,最佳准备两块软盘备份,保证数据安全。实验二会计科目表单的建立与修改一、实验题目1、进行会计科目表单的建立与修改; 二、实验课时课内2学时三、实验目的通过实例练习,纯熟掌握VFP系统中会计科目表单的建立与修改方法,并完毕相应的数据库、数据表内容,为后续实验做准备。四、实验内容和规定(一).“会计科目”表单设计 1.建立“会计科目”表单
15、2.系统数据环境设立:将“会计科目”表加入到会计科目表单的数据环境,具体环节如下: 第一步:在表单“空白处”(即:无控件处)点击鼠标右键,出现如下图中的数据环境对话框;图2-1 会计科目表单数据环境设立 第二步:在数据环境设计器中单击鼠标右键,出现如图所列示的快捷菜单,点击“添加”快捷菜单; 图2-2 会计科目表单数据表添加第三步:选种需要添加的表“会计科目”表,然后点击如图所示的“添加”按忸即可完毕一个表的添加过程;图2-3会计科目表单数据环境设立第四步:如需添加多个表,反复第三步的操作,所有添加完毕后点击关闭按钮。 3.表单界面设计: 在会计科目表单中,需要用到下面几个控件:表格控件、命令
16、按钮控件、标签控件以及起美化界面作用的形状或容器控件。根据实现表单功能需要将控件摆放完毕后,我们还需要进行控件属性的设立,其中对表格控件的属性修改如下:(1)将Readonly属性值设立为真;(2)将Deletemark属性值设立为假;(3)将RecordMark属性值设立为假;(4)将scrollbars属性值设立为2-垂直(5)同时我们还可以修改表格的布局属性调整表格的行和列宽度,表格表头的宽度和字体等等。图2-4 会计科目表单界面图 4、表格控件数据源的设定表格控件中的列表头,控件中显示的数据均取决于表格控件所捆绑的数据源,因此,对的的捆绑数据源是表格控件对的显示数据和修改数据的前提条件
17、。具体捆绑环节如下:第一步:将鼠标放在表格控件上点击鼠标右键,并在弹出的快捷菜单中选择“生成器”菜单项;第二步:在表格控件生成器中进行数据表以及所用表中字段的拟定;图2-5 表格控件数据捆绑 第三步:在此基础上还可以进行表格生成器中样式、布局和关系等选项卡的设定,所有设定完毕后,点击拟定按钮即可保存设定。5、55、5 dfsadf程序设计 在表单中,用户也许需要实现增长会计科目、修改会计科目或者删除会计科目的操作,为了实现相应的功能,程序需要分别在不同的命令按钮中输入不同的程序加以实现。具体如下:(1)增长命令按钮:Command1.clicksele 会计科目 &选中会计科目表成为当前表in
18、sert blank &插入一条空白纪录,在用insert/pack等命令前必须将表设立成独占打开。 thisform.grid1.readonly=.f.&改变其表格的属性,让表格变成可读写 thisform.refresh &刷新表单 sele 会计科目 thisform.label4.caption=alltrim(str(reccount(),4)thisform.refresh(2)删除命令按钮:Command2.clicksele 会计科目 &选中会计科目表成为当前表delete &将选中的记录打上删除标记。Pack &将打上删除标记的记录彻底删除thisform.grid1.re
19、cordsource=会计科目 &将表格控件重新捆绑数据源thisform.grid1.refreshthisform.refreshsele 会计科目 thisform.label4.caption=alltrim(str(reccount(),4)thisform.refresh(3)控制表格控件中数据是否可修改的修改命令按钮:Command3.clickthisform.grid1.readonly=.f. &改变其表格的属性,让表格变成可读写(4)退出表单命令按钮程序:Command4.clickthisform.grid1.readonly=.t.thisform.release(5
20、)自动显示科目个数程序:label4.initsele 会计科目thisform.label4.caption=alltrim(str(reccount(),4)thisform.refresh规定:1按照会计科目表单图形界面进行界面设计,熟悉表单及表单控件各属性的含义和修改属性的方法。2学习设立表单的数据环境,学习对表格控件等控件进行数据捆绑。3学习使用面向对象的编程方法,在会计科目表单的各个不同控件中进行程序设计。实验三期初余额表单的建立与修改一、实验题目1、进行期初余额表单的建立与修改。二、实验课时课内2学时三、实验目的通过实例练习,纯熟掌握VFP系统中期初余额表单的建立与修改方法,并完
21、毕相应的数据库、数据表内容,为后续实验做准备。四、实验内容和规定(一)、“期初余额”过程设计1、所实现的功能及过程描述任何一个非新建公司,他们都会有一定的期初的资产、负债和权益。我们在做账的过程中用这一公司的期初余额加上这一公司这一段时间的科目发生额,才干获得公司最终的资产、负债等数据。所以,公司期初余额的设定,将关系到公司最终报出报表的准确性和可行度。2、建立“期初余额”表单3、系统数据环境设立:将“期初余额”表加入到期初余额表单的数据环境,具体环节如下:第一步:在表单“空白处”(即:无控件处)点击鼠标右键,出现如下图中的数据环境对话框; 图3-1 期初余额表单数据环境设立 第二步:在数据环
22、境设计器中单击鼠标右键,出现如图所列示的快捷菜单,点击“添加”快捷菜单; 图3-2 期初余额表单数据环境设立第三步:选种需要添加的表“期初余额”表,然后点击如图所示的“添加”按忸即可完毕一个表的添加过程;图3-3 期初余额表单数据环境设立第四步:如需添加多个表,反复第三步的操作,所有添加完毕后点击关闭按钮。 3.表单界面设计: 在期初余额表单中,需要用到下面几个控件:表格控件、命令按钮控件、标签控件以及起美化界面作用的形状或容器控件。根据实现表单功能需要将控件摆放完毕后,我们还需要进行控件属性的设立,其中对表格控件的属性修改如下:(1)将Readonly属性值设立为真;(2)将Deletema
23、rk属性值设立为假;(3)将RecordMark属性值设立为假;(4)将scrollbars属性值设立为2-垂直(5)同时我们还可以修改表格的布局属性调整表格的行和列宽度,表格表头的宽度和字体等等。图4-4 期初余额表单属性设立 4、表格控件数据源的设定表格控件中的列表头,控件中显示的数据均取决于表格控件所捆绑的数据源,因此,对的的捆绑数据源是表格控件对的显示数据和修改数据的前提条件。具体捆绑环节如下:第一步:将鼠标放在表格控件上点击鼠标右键,并在弹出的快捷菜单中选择“生成器”菜单项;第二步:在表格控件生成器中选中期初余额表并拟定表中所用的字段; 图3-5 表格控件数据捆绑第三步:在此基础上还
24、可以进行表格生成器中样式、布局和关系等选项卡的设定,所有设定完毕后,点击拟定按钮即可保存设定。5、55、5 dfsadf程序设计 在表单中,用户也许需要实现增长会计科目、修改会计科目或者删除会计科目的操作,为了实现相应的功能,程序需要分别在不同的命令按钮中输入不同的程序加以实现。具体如下:(1)录入命令按钮程序:Command1.clicksele 期初余额 thisform.grid1.refreshthisform.refresh(2)修改命令按钮程序:Command2.clickthisform.grid1.readonly=.f.&改变其表格的属性,让表格变成可读写(3)退出表单命令按
25、钮程序:Command3.clickthisform.grid1.readonly=.t.thisform.release规定:1按照期初余额表单图形界面进行界面设计,熟悉表单及表单控件各属性的含义和修改属性的方法。2学习设立表单的数据环境,学习对表格控件等控件进行数据捆绑。3学习使用面向对象的编程方法,在会计科目表单的各个不同控件中进行程序设计。实验四填制凭证表单的建立和修改(一)一、实验题目1、再次练习表单集的建立和表单之间的互相调用;2、练习复杂表单界面的设定和各种表单控件生成器的使用。二、实验课时课内2课时三、实验目的1掌握表单集建立的基本思绪和方法,掌握显示、隐藏表单的基本方法;2熟
26、悉复杂表单界面的设定;3熟悉各种表单控件生成器的使用。四、实验内容和规定(一)“填制凭证”表单实现功能及过程描述:“填制凭证”表单作为用户输入凭证数据的交互界面,一方面需要提供应用户一个清楚明了的界面,保证用户可以正常得进行数据输入;然后,将每次填制新凭证时将用户输入的数据先保存到空白的临时凭证库中,并对输入数据的合法性进行检查,假如出现不合法的情况,系统应给予一定的提醒;在检测合法的情况下,将输入或生成的信息先保存到临时凭证库然后统一追加到记账凭证库中。其中,合法性的检查重要是对以下几个方面的检查:1、 借贷方金额合计必须相等;2、 摘要和科目名称不能为空;3、 借方金额和贷方金额不能同时为
27、零或者都不为零。(二)实行环节: 1.建立“填制凭证”表单设立填制凭证表单的时候需要用到:标签、文本框、表格等控件。具体图形如下: 图4-1 填制凭证表单界面设计图 2.系统数据环境设立:将临时凭证库、记账凭证库两个表添加到表单的数据环境中,以实现表单对其的自动调用。添加过程跟前面所讲的“会计科目”表单和“期初余额”表单一致。 3.进行表格控件的数据捆绑和个别其他控件的属性设定:(1)表格控件(Grid)数据捆绑:绑定的数据源是:临时凭证库。图4-2 表格控件数据捆绑附件个数需改成数值型,无边框时间显示可用文本框 实 现(2)进行三个文本框不同格式的认定:此处(0100)乃标签控件,背景颜色为
28、白色。 图4-3 文本框和标签属性设立图4.表单程序设计:(1)凭证初始化:FORM1LOAD事件sele 临时凭证库&(注意“临时凭证库”打开时的属性,必须为独占打开,即:数据环境中“临时凭证库”Excluxive属性为真。) If !isexclusive(临时凭证库)Use Use 临时凭证库 exclusive Endifzap &将临时凭证库清空,只保存表结构append blank &添加一条空白记录set delete onpublic delrecnodelrecno=0TEXT3.INIT事件 凭证号初始设立sele 记账凭证库 go bottom &将记录指针移到最后一条记
29、录this.value=凭证号+1 &取出其凭证号数并加一得到所填新凭证的凭证号TEXT2.INIT事件 凭证日期初始设立This.value=date() &将当前填制凭证日期设定为系统日期LABEL18.INIT事件 显示制单人姓名this.caption=alltrim(zcr) &将此时的系统注册人姓名显示在标签控件上(2)增、删凭证分录COMMAND4.CLICK事件 添加一条分录即在表格中增长一空行local pzgrid &定义一局域变量,并将其赋值为pzgrid=thisform.grid1 &表格控件对象pzgrid.setfocus &使表格控件获得焦点sele 临时凭证库
30、 &在临时凭证库中增长一条空白记录append blank &同时表格控件中相应增长一空行pzgrid.column1.text1.refresh &刷新该空白行各文本框的值pzgrid.column2.text1.refreshpzgrid.column3.text1.refreshpzgrid.column4.text1.refreshpzgrid.setfocus &使表格控件重新获得焦点COMMAND2.CLICK事件 删除一条分录即在表格中删除一行thisform.grid1.setfocus&使表格获得焦点aa=messagebox(拟定删除该分录吗?,4+32,提醒)if aa!
31、=7&拟定删除 sele 临时凭证库 delete&删除当前记录 thisform.grid1.column3.text1.interactivechange append blank&则添加一条空记录 thisform.grid1.setfocus&使表格获得焦点,激活表格 thisform.grid1.column1.text1.refresh&刷新该行各文本框的值 thisform.grid1.column2.text1.refresh thisform.grid1.column3.text1.refresh thisform.grid1.column4.text1.refreshend
32、if(3)更新借方金额与贷方金额的值并计算合计金额编程思绪:当在表格中输入金额时,根据一条会计分录中借贷双方不能都为非零值的规则,假如其借方金额不为零,则将其贷方金额自动置为零,反之,则将借方金额自动置零。同时,不管分录中借方还是贷方金额发生改变,都要重新计算合计金额的值,并显示合计值结果,帮助用户判断当前借贷是否平衡。控制放在GRID1.COLUMN3.TEXT1和 GRID1.COLUMN4.TEXT1的 INTERACTIVECHANGE事件中完毕(说明:当控件的值改变时发生该事件)GRID1.COLUMN3.TEXT1.INTERACTIVECHANGE事件local currenre
33、c,currentvalue &定义局域变量sele 临时凭证库currentrec=recno() &记录当前位置currentvalue=this.value &保存当前的借方金额的值if currentvalue!=0 & 假如借方金额不为零 repl 贷方金额 with 0 &将贷方金额置为零 thisform.grid1.column4.text1.value=0 &将第四列文本框的值置为零endif repl 借方金额 with currentvalue &将当前值存入数据表 local jfhj,dfhj sum 借方金额 to jfhj &计算借方与贷方金额合计值并 sum 贷
34、方金额 to dfhj &将其分别存入变量中thisform.label20.caption=alltrim(str(jfhj,15,2) &将合计金额值显示到标签控件上thisform.label21.caption=alltrim(str(dfhj,15,2) &注意allrim函数的运用。go currentrec &返回初始位置GRID1.COLUMN4.TEXT1.INTERACTIVECHANGE事件local currenrec,currentvaluesele 临时凭证库currentrec=recno()currentvalue=this.valueif currentval
35、ue!=0 repl 借方金额 with 0 thisform.grid1.column3.text1.value=0endif repl 贷方金额 with currentvalue local jfhj,dfhj sum 借方金额 to jfhjsum 贷方金额 to dfhjthisform.label7.caption=str(jfhj,15,2)thisform.label8.caption=str(dfhj,15,2) go currentrec注意事项:1对临时凭证库表进行ZAP操作时,必须保证临时凭证库是独占打开的,即,临时凭证库的Exclusive属性为.T.达成这一目的的方
36、法有两种:(1)是通过数据环境设计器进行数据表属性的设定:图4-4 数据表属性设定(Exclusive属性)(2)是通过程序来进行判断和实现: Sele 临时凭证库 If !isexclusive(临时凭证库)Use Use 临时凭证库 exclusive Endif2注意不同控件属性的设定方法: 例:文本框控件的高级属性设定,一般是通过生成器来实现。比如:设立文本框的数据类型属性,设立文本框的输入数据类型掩码等等。图4-5 文本框属性设定(数据类型)规定:1进行填制凭证表单的界面设计。2进行填制凭证表单的数据表的设定设立数据环境。3进行填制凭证表单的各控件的程序设计。实验五填制凭证表单的建立
37、和修改(二)一、实验题目1继续完善“填制凭证”表单的界面;2学习使用复杂程序的编写。3学习使用同一控件不同事件的编程。二、实验课时课内2课时三、实验目的1继续熟悉复杂表单界面的设定;2继续熟悉各种表单控件生成器的使用;3学习使用控件编程,熟悉不同事件的意义。四、实验内容和规定 “填制凭证”过程设计(续上一实验) (4)凭证的校验凭证校验的基本编程思绪:一方面需要校验的是凭证中是否存在空白栏,即凭证摘要不能为空,科目名称不能为空,借方与贷方金额不能同时为零。由于表格控件各行的内容与临时凭证库中未删除记录相相应,所以可以采用下述方法:一方面计算库中未删除记录的个数,即表格控件中有内容的行数,然后将
38、记录指针移到末尾一条记录即表格中的最后一行,从后往前逐条记录校验,并记下所相应的行数,一旦发现某条记录存在上述情况,就要给出提醒并返回到表格中相应的行列的单元格进行修改。COMMAND1.CLICK 事件 凭证校验程序1sele 临时凭证库go bottom &将记录指针移到表末尾,从后往前检测do while !bof() do case case alltrim(摘要)= messagebox(摘要内容不能为空!,0+16,警告) thisform.grid1.setfocus &激活表格 thisform.grid1.activatecell(currentrow,1) return &
39、返回到当前行相应单元格 case alltrim(科目名称)= messagebox(科目名称不能为空!,0+16,警告) thisform.grid1.setfocus thisform.grid1.activatecell(currentrow,2) return case 借方金额=0.and.贷方金额=0 messagebox(借方金额与贷方金额不能同时为零!,0+16,警告) thisform.grid1.setfocus thisform.grid1.activatecell(currentrow,3) return endcase skip -1 enddo另一方面要校验的是凭证
40、借贷方合计金额是否相等,即借贷是否平衡,校验方法如下:对临时凭证库中,借方金额与贷方金额字段分别进行求和计算,将结果值进行比较,判断是否相等,若相等则通过校验进入下一步,否则需给出提醒,返回修改。COMMAND1.CLICK 事件 凭证校验程序2local jfhj,dfhj&定义保存计算结果的变量sele 临时凭证库 set talk off&关闭对话状态sum 借方金额 to jfhj&对借方金额进行求和sum 贷方金额 to dfhj&对贷方金额进行求和if jfhj!=dfhj&比较若不相等则给出提醒 messagebox(此凭证借贷不平衡!,0+16,警告) returnendif(
41、5)凭证的保存凭证保存的编程思绪:凭证通过校验后即可保存,表格中输入的数据已直接写入临时凭证库,所以只要保存凭证号、制单日期、附件数、制单人等信息。将表单上各相关控件的值先存入变量中,然后用其替换临时凭证库中相应字段的值即可。由于临时凭证库的临时性,最后还要将临时凭证库中保存的所有有效记录转入到记账凭证库中进行最终的保存。具体程序:COMMAND1.CLICK 事件 凭证保存程序local pzh,pzrq,pzyear,pzmonth,pzday,zdr,fjpzh=thisform.text3.value&得到存凭证号pzrq=thisform.text2.value&得到凭证日期pzyear=year(pzrq)&得到会计年pzmonth=month(pzrq) &得到会计期pzday=day(pzrq)&得到日期zdr=alltrim(zcr)&得到制单人fj=thisform.text1.value &得到附件数sele 临时凭证库go topreplace all 凭证日期 with pzrq,凭证号 with pzh,会计年; with pzyear,会计期 with ; 注意“;”的具体运