Access报销明细信息.docx

上传人:b****6 文档编号:7196369 上传时间:2023-01-21 格式:DOCX 页数:48 大小:6.88MB
下载 相关 举报
Access报销明细信息.docx_第1页
第1页 / 共48页
Access报销明细信息.docx_第2页
第2页 / 共48页
Access报销明细信息.docx_第3页
第3页 / 共48页
Access报销明细信息.docx_第4页
第4页 / 共48页
Access报销明细信息.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

Access报销明细信息.docx

《Access报销明细信息.docx》由会员分享,可在线阅读,更多相关《Access报销明细信息.docx(48页珍藏版)》请在冰豆网上搜索。

Access报销明细信息.docx

Access报销明细信息

7.5.1查看报销明细信息列表

学习要求:

本节预计学习课时为0.5小时,重点是:

a.创建显示明细信息的子窗体;b.将子窗体应用于快速开发平台。

关于tblBxmx表的手工开发,原理上,与tblCodeyg表完全一致,但是因为结构相对比较复杂一点,所以,我们也将简略进行介绍。

这两个窗体手工开发的最大的不同之处便是,tblCodeyg表只有一个字段需要手工干预,而tblBxmx表,除了第一个自动编号字段将要交由系统来自动维护,还有最后一个在表的建立环节,就已经交由系统生成和维护的【czsj】(即操作时间)字段外,需要人工干预的字段,有多达5个之多,因此,对于初学者来说,这部分开发技术,可能有一点难度,所以,这也是我们要再次介绍相关开发技术的原因。

根据业务需要,我们还是先创建可以查看报销明细的列表窗体,即通常以【_List】为命名后缀的窗体。

首先,我们新建一个窗体,并进入该窗体的设计视图,然后,调出该窗体的属性设置区,进行以下属性设置:

【格式】选项卡:

【默认视图】:

数据表

【数据】选项卡:

【记录源】:

qryBxmx

【记录集类型】:

快照

这些属性设置,在前面的章节中,已经比较详细地讲解过了,所以,在这里,就不再一一详细讲述了。

但是,有一点却需要补充说明,那就是,针对tblCodeyg表和tblCodelb表,其【记录源】,直接选择本表即可,而针对tblBxmx表,由于其可读性不太友好,所以,我们建立了查询,通过数据库的计算,来优化其可读性,所以,这里需要选择qryBxmx查询。

其实,对于我们案例中的tblBxmx表,由于其字段的【字段属性】中【查阅】选项卡中,已经优化了其可读性,所以,这里的【记录源】直接选择tblBxmx表也可以,但是我们这里仍然选择查询,其原因是要让初学者学会一个方案的多种解决方案。

完成上述设置之后,关闭属性设置区,然后,单击工具栏上的

按钮,则如下图所示:

然后,我们按住键盘上【Ctrl】键,依次点选字段列表中的全部字段(只有按住【Ctrl】键,才可以多选),再将其拖拽到窗体的网格设计区域,则如下图所示:

由于该窗体是以数据表视图来显示的,因此,对标签和文本框的布局的优化的工作,根本就无法体现出效果来,因此,凡是以数据库视图的显示的窗体,基本上是不需要进行任何界面美化工作的。

接下来,我们保存窗体设计,在弹出的【另存为】对话框中,将其命名为:

frmBxmx_sg_List,然后,再关闭【字段列表】设置区,切换到【数据库表视图】,则如下图所示:

如上图所示,一切正常。

对于比较细心的学员来说,会发现,原本在前面的章节中,输入的测试数据,明明有3条,为什么这里只剩下2条了呢?

那是因为有关“王五”的代码,我们在前面tblCodeyg表的手工开发环节中,出于测试其修改功能的目的,已经将其删除,因此,“王五”名下的报销条目,已经变成了孤儿数据,系统无法计算出相应的代码所对应的员工姓名,所以,就将其屏蔽,不予显示。

这是默认的数据库关联所决定的计算方式——当然,这是可以修改的,这是以后课程中的内容,在这里,就暂不讲述了。

在这里,之所以要介绍这方面的内容,就是为了强调权限控制的重要性——XX的非法修改,会导致数据出现混乱,因此,这也就更加体现出了平台的优越性。

接下来,关闭当前的frmBxmx_sg_List窗体,然后,再次创建一个新的窗体,并进入其设计视图,然后从工具栏上的控件区拖拽一个【子窗体/子报表】控件,将其放置在窗体的适当的位置,并调节其大小,接下来,删除该【子窗体/子报表】控件所携带的标签,然后调出该该【子窗体/子报表】控件的属性设置区(是【子窗体/子报表】控件的属性设置区,不是窗体的),进行以下属性设置:

【数据】选项卡:

【源对象】:

frmBxmx_sg_List

【其他】选项卡:

【名称】:

frmChild

设置完成之后,关闭【子窗体/子报表】控件的属性设置区,则如下图所示:

然后,保存窗体设计,将其命名为:

frmBxmx_sg_Main,接下来,调出窗体的属性设置区,进行以下属性设置:

【格式】选项卡:

【标题】:

报销明细信息;

【滚动条】:

两者均无;

【记录选定器】:

否;

【导航按钮】:

否;

以上设置完成之后,关闭窗体的属性设置区,保存窗体设计,然后,切换到窗体视图,则如下图所示:

开发到这里,就浏览数据的功能而言,frmBxmx_sg_Main窗体的设计就已经完成了,接下来,就是和平台的整合工作——首先,我们关闭当前所有打开的窗体,然后双击窗体列表中的SysFrmLogin窗体,启动登录界面,待登录完成之后,双击【开发者工具】节点下的【导航菜单编辑器】,则如下图所示:

如上图所示,接下来,我们先选择【编码管理】这个一级节点,然后再单击【添加子节点(C)】的按钮——没错,我们将新建一个从属于【编码管理】这个一级节点的子节点——尽管【报销明细】并不属于编码的范畴,但是,为了教程的需要,我们只是为了演示再次生成一个二级节点,所以,我们才这么操作。

接下来,通过前面章节学习过的知识,录入相关内容,完成之后,如下图所示:

接下来,单击【保存(S)】按钮,则如下图所示:

接下来,关闭【导航菜单编辑器】,然后,再双击【编码管理】节点下的【报销明细管理】子节点,则如下图所示:

如上图所示,一切正常。

接下来,我们接着讲解新增功能的制作。

7.5.2报销明细管理的新增功能

学习要求:

本节预计学习课时为1小时,重点是:

a.创建新增功能的窗体、调节窗体上的控件;b.掌握新增功能的VBA代码。

根据前面的章节,我们已经很熟悉了,为了制作新增功能,我们首先需要制作一个用于录入数据的新增窗体。

接下来,我们关闭当前所有已经打开的窗体,然后,再次新建一个窗体,并进入其设计模式——通过前面的章节的分析,我们已经知道了,虽然tblBxmx表有7个字段,但是需要人工干预的只有5个,所以,我们拖拽5个文本框,放置到窗体设计网格区域的适当位置,并调整其大小和布局,完成之后,如下图所示:

如上图所示,所以要有一个文本框的尺寸比较大,是因为我们的表中,有一个bxzy的字段(即报销摘要)——在表设计说明书中,该字段的【字段大小】就定义的比较大,所以,自然需要一个比较大的文本框才可以容纳。

接下来,我们从上到下,依次将标签命名为:

【报销日期:

】、【类别名称:

】、【员工姓名:

】、【报销金额:

】、【报销摘要:

】,然后,再从上到下,依次将文本框属性对话中【其他选项卡】的【名称】属性命名为:

txtbxrq、txtlbID、txtygID、txtbxje、txtbxzy——这些标签和文本框的对应关系分别是:

报销日期对应txtbxrq文本框、类别名称对应txtlbID文本框、员工姓名对应txtygID文本框、报销金额对应txtbxje文本框、报销摘要对应txtbxzy文本框。

然后,在将新增窗体中录入的数据保存进入数据库的环节,文本框和表中的对应关系分别是:

txtbxrq文本框对应bxrq字段、txtlbID文本框对应lbID字段、txtygID文本框对应ygID字段、txtbxje文本框对应bxje字段、txtbxzy文本框对应bxzy字段。

完成之后,如下图所示:

需要强调的是,这些标签和文本框的对应关系绝对不能混淆,不然,后果不可预计,根本就无法实现新增功能。

至于控件布局调整的办法,前面已经讲过了,主要是右键菜单中的【对齐(A)】和【大小(S)】命令,以及【排列】菜单下的相关命令来进行大小和方位的调整,初学者可以反复测试,以便领会其中的技巧,这些技巧,用文字很难描述,况且,如若详细描述,也会导致教程的篇幅过大。

鉴于txtbxrq文本框(即报销日期)和txtbxje文本框(即报销金额)所对应的表中的字段的【数据类型】有些特殊,所以,需要进行一些属性的调整。

首先,我们调出txtbxrq文本框的属性设置区,切换到【格式】选项卡,然后,在【格式】属性的下拉列表中选择【短日期】,则如下图所示:

然后,我们注意到格式选项卡中有一个【显示日期选取器】的选项——当我们在【格式】属性中,指定该文本框的格式为日期型数据之后,请保持【显示日期选取器】为【为日期】的选项,如此一来,Access2007就提供一个日期选取器的控件,我们就可以直接通过点选来录入日期数据——这也是Access2007的新功能,在Access2003中,我们要么通过输入掩码来控制日期格式,要么独自添加相关控件——无论是哪一种,都没有Access2007的这个新功能来得便捷和简单。

接下来,关闭txtbxrq文本框的属性对话框,然后选择txtbxje文本框,并调出其属性设置区,然后,切换到【格式】选项卡,通过向下拉动垂直滚动条,在【格式】属性的下拉列表中选择【货币】,如下图所示:

然后,关闭txtbxje文本框的属性对话框,保存窗体设计,将窗体命名为:

frmBxmx_sg_Add,接下来,调出窗体的属性设置区,进行以下属性设置:

【格式】选项卡:

【标题】:

报销明细新增;

【滚动条】:

两者均无;

【记录选定器】:

否;

【导航按钮】:

否;

【自动居中】:

是;

【边框样式】:

对话框边框;

【最大化最小化按钮】:

无。

【其他】选项卡:

【弹出方式】:

是。

以上设置完成之后,再次保存窗体设计,然后,切换到窗体视图,则如下图所示:

进行到这里,如若对表中存储的实际的数据,还有印象的话,我们就会明白,比如,如若在txtlbID文本框(txtlbID文本框对应【类别名称:

】标签)中,录入电话费三个汉字,那么,由于我们设计的时候,是将txtlbID文本框对应于lbID字段,而该字段的【字段大小】仅仅为3,是容纳不了三个汉字的,因此,系统必然会报错,因此,我们现在就会发现,如若该窗体就此就算开发完毕的话,那么,要操作员直接录入相关的类别编码(如若录入类别名称,则无法保存),那将又是一个悲剧。

同样,txtygID文本框也是这么一种情况。

因此,我们必需要进行优化,优化的办法,就是将文本框更改为组合框,然后再进行相关的配置,将相关的计算隐藏到后台,也就是说,让普通的操作员,直接选择相应的文本,然后,系统通过计算,直接将相应的文本转换成编码,录入到表中相应的字段之中——相关原理,我们在表的建设环节,已经讲解的十分具体了,这里就不再重复了。

接下来,我们就进行这一步的优化工作。

首先,切换到frmBxmx_sg_Add窗体的设计视图,然后选中txtlbID文本框,在弹出的右键菜单中选择【更改为(H)】命令下的【组合框(C)】命令,如下图所示:

更改完成之后,再调出txtlbID组合框的属性设置区,进行以下属性设置:

【数据】选项卡:

【行来源类型】:

表/查询(默认值);

【行来源】:

tblCodelb(也可以通过【SQL语句生成器】创建一个包含该表两个字段的查询);

【绑定列】:

1;

【限于列表】:

是。

【格式】选项卡:

【列数】:

2;

【列宽】:

0cm;2cm;

【列表行数】:

20。

以上的属性设置,在表的建立环节,已经全部讲过了,所以,这里就不再重复讲述了,如若有不明之处,请参阅前面第5课中【文本框、列表框与组合框】章节的相关内容。

接下来,我们以同样的原理完成txtygID文本框的相关更改、设置工作,完成之后,关闭属性设置区,如下图所示:

接下来,我们保存窗体设计,然后切换到窗体视图,浏览以下实际的效果,如下图所示:

如上图所示,若能出现类似的下拉列表,就证明我们的配置是成功的,如若不对,请仔细检查相关的设置。

接下来,我们关闭所有已打开的窗体,然后打开frmBxmx_sg_Main窗体,并进入该窗体的设计视图——根据前面的经验,我们知道,现在是需要在该窗体的适当位置,添加新增功能所需要的命令按钮——首先,我们在窗体的合适位置,添加一个命令按钮,然后调节其大小,接下来,调出其属性对话框,进行以下属性设置:

【格式】选项卡:

【标题】:

新增(&A)。

【其他】选项卡:

【名称】:

cmdAdd。

以上设置完成之后,则如下图所示:

然后,我们再次调出该命令按钮的属性设置区,切换到【事件】选项卡,选择【单击】事件,然后进入到该【单击】事件的【代码生成器】编辑界面,在鼠标的光标处,录入以下代码:

DoCmd.OpenForm"frmBxmx_sg_Add"

完成之后,如下图所示:

接下来,关闭代码编辑界面,再关闭命令按钮属性设置区,然后保存窗体,接下来,关闭当前已经打开的全部窗体。

然后,在窗体列表中,双击SysFrmLogin窗体,启动登录界面,待登录完成之后,双击【编码管理】节点下的【报销明细管理】子节点,则如下图所示:

接下来,单击【新增(A)】按钮,则如下图所示:

如上图所示,看起来,一切正常,只是新增窗体虽然能如设计时所预料的那样弹出来,但是,【报销明细新增】窗体上的保存按钮和关闭按钮,却还没有制作,接下来,我们就完成这部分工作。

如上图所示,直接在【报销明细新增】窗体上鼠标右键,在右键菜单中,选择【设计视图(D)】命令,切换到该窗体的设计视图,然后,在适当的位置添加一左一右两个命令按钮,并调整其大小,然后,调出左侧的命令按钮的属性设置区,进行以下属性设置:

【格式】选项卡:

【标题】:

保存(&S)

【其他】选项卡:

【名称】:

cmdSave

然后,关闭左侧按钮的属性设置区,再调出右侧命令按钮的属性设置区,进行以下属性设置:

【格式】选项卡:

【标题】:

关闭(&C)

【其他】选项卡:

【名称】:

cmdClose

以上设置完成之后,关闭属性对话框,则如下图所示:

现在,外形虽然已经设计好了,但是,仍然是徒有其表,接下来,我们就为这两个命令按钮,编写相应的执行代码。

首先,我们选择【关闭(C)】按钮,然后调出其属性设置区,切换到【事件】选项卡,选择【单击】事件,并进入到该【单击】事件的【代码生成器】编辑界面,然后,在鼠标的光标处,录入以下代码:

DoCmd.CloseacForm,"frmBxmx_sg_Add"

录入完成之后,则如下图所示:

然后,关闭代码编辑页面,再关闭【关闭(C)】按钮的属性设置区,然后,选择【保存(S)】按钮,再调出其属性设置区,切换到【事件】选项卡,选择【单击】事件,并进入到该【单击】事件的【代码生成器】编辑界面,然后,在鼠标的光标处,录入以下代码:

DimrstAsObject

DimstrSQLAsString

DimMaxIDAsString

DimcurrentIDAsString

DimmontholdAsString

DimmonthNowAsString

DimstrFrmAsString

IfIsNull(Me.txtbxrq)Then

MsgBox"请输入报销日期!

",vbCritical,"提示"

Me.txtbxrq.SetFocus

ExitSub

EndIf

IfIsNull(Me.txtlbID)Then

MsgBox"请输入类别名称!

",vbCritical,"提示"

Me.txtlbID.SetFocus

ExitSub

EndIf

IfIsNull(Me.txtygID)Then

MsgBox"请输入员工姓名!

",vbCritical,"提示"

Me.txtygID.SetFocus

ExitSub

EndIf

IfIsNull(Me.txtbxje)Then

MsgBox"请输入报销金额!

",vbCritical,"提示"

Me.txtbxje.SetFocus

ExitSub

EndIf

MaxID=DMax("[mxID]","tblBxmx")

monthold=Mid(Left(MaxID,7),2)

monthNow=Format(Date,"YYYYMM")

Ifmonthold=monthNowThen

currentID="M"&monthold&Format(Val(Right$(MaxID,4)+1),"0000")

Else

currentID="M"&monthNow&"0001"

EndIf

strSQL="select*fromtblBxmx"

Setrst=CurrentDb.OpenRecordset(strSQL,dbOpenDynaset)

rst.AddNew

rst!

mxID=currentID

rst!

bxrq=Me.txtbxrq

rst!

lbID=Me.txtlbID

rst!

ygID=Me.txtygID

rst!

bxje=Me.txtbxje

rst!

bxzy=Me.txtbxzy

rst.Update

rst.Close

Setrst=Nothing

Me.txtbxrq=Null

Me.txtlbID=Null

Me.txtygID=Null

Me.txtbxje=Null

Me.txtbxzy=Null

DoEvents

strFrm=Form_frmBxmx_sg_Main!

frmChild.SourceObject

Form_frmBxmx_sg_Main!

frmChild.SourceObject=strFrm

MsgBox"您录入的数据保存已成功!

",vbInformation,"消息"

录入完成之后,则如下图所示:

接下来,关闭代码编辑页面,再关闭【保存(S)】按钮的属性设置区,然后,保存窗体设计,接下来,关闭当前已经打开的所有窗体,然后,在窗体列表中,打开frmBxmx_sg_Main窗体,并切换到窗体视图,则如下图所示:

然后单击【新增(A)】按钮,然后,在新增窗体中录入以下数据,则如下图所示:

然后,单击【保存(S)】按钮,则如下图所示:

如上图所示,我们单击【确定】按钮,然后再关闭【报销明细新增】窗体,就可以发现我们刚才录入的那条记录,已经被刷新到前台界面中来,如下图所示:

好了,进行到这里,新增功能的手工开发,就已经正式完成了,接下来,我们就进行修改功能的手工开发。

7.5.3报销明细管理的修改功能

学习要求:

本节预计学习课时为1小时,重点是:

a.创建修改功能的窗体、调节窗体上的控件;b.掌握修改功能的VBA代码。

有关修改窗体的设计原理,我们在前面的章节已经讲解了,这里就不再重复了,虽然字段多少不一,但是原理别无二致。

与前面的新增窗体一样,我们知道,由于不允许用户直接在数据表中修改数据,所以,为了实现修改功能,必须先制作用于修改数据的修改窗体。

从功能上来说,修改窗体和新增窗体完全不一样,但是从外观上来说,其外形却极为相似——同理,也是5个文本框的架构(其中2个组合框),接下来,我们就将来制作修改窗体。

首先,我们创建一个窗体,并进入该窗体的设计视图,然后,往窗体的网格设计区域,添加5个文本框,并调整其大小和位置,使其布局显得比较美观,完成之后,如下图所示:

接下来的操作,和新增的窗体一样,不妨再复述一下:

如上图所示,从上到下,依次将标签命名为:

【报销日期:

】、【类别名称:

】、【员工姓名:

】、【报销金额:

】、【报销摘要:

】,然后,再从上到下,依次将文本框属性对话中【其他选项卡】的【名称】属性命名为:

txtbxrq、txtlbID、txtygID、txtbxje、txtbxzy——这些标签和文本框的对应关系分别是:

报销日期对应txtbxrq文本框、类别名称对应txtlbID文本框、员工姓名对应txtygID文本框、报销金额对应txtbxje文本框、报销摘要对应txtbxzy文本框。

然后,在将修改好数据保存进入数据库的环节,文本框和表中的对应关系分别是:

txtbxrq文本框对应bxrq字段、txtlbID文本框对应lbID字段、txtygID文本框对应ygID字段、txtbxje文本框对应bxje字段、txtbxzy文本框对应bxzy字段。

完成之后,如下图所示:

以上的这些环节的工作,修改窗体与新增窗体,是别无二致的,完全一样,从下面的环节开始,才开始逐渐有所差别,乃至完全不一样。

接下来,我们保存窗体设计,将窗体命名为:

frmBxmx_sg_Edit,然后,再调出窗体的属性对话框,进行以下属性设置:

【格式】选项卡:

【标题】:

报销明细修改;

【滚动条】:

两者均无;

【记录选定器】:

否;

【导航按钮】:

否;

【自动居中】:

是;

【边框样式】:

对话框边框;

【最大化最小化按钮】:

无。

【其他】选项卡:

【弹出方式】:

是。

以上设置完成之后,再次保存窗体设计——然后,还有什么工作没有做呢?

没错,与新增窗体一样,还有四个文本框的设置需要调整,两个需要更改格式,两个需要将文本框改为组合框,并进行一系列的属性调整,这些方面,是新增窗体的相关设置,完全一样,照搬过来就可以了,因此,这里就不再重复了,全部设置完成之后,如下图所示:

接下来的工作,我们就轻车熟路了——无非是还有三个命令按钮的工作没有完成,分别是frmBxmx_sg_Main窗体的【修改】按钮,以及frmBxmx_sg_Edit窗体上【保存】和【关闭】按钮。

只是修改窗体的原理和新增窗体的原理大不一样,所以,我们还是按照比较容易理解的流程来进行开发——先行制作frmBxmx_sg_Main窗体的【修改】按钮。

接下来,先行关闭所有已经打开的窗体,然后打开frmBxmx_sg_Main窗体,并进入其设计视图,然后在【新增(A)】按钮右侧的适当位置添加一个命令按钮,并调整其大小,然后调出其属性设置区,进行以下属性设置:

【格式】选项卡:

【标题】:

修改(&E)

【其他】选项卡:

【名称】:

cmdEdit

以上设置完成之后,如下图所示:

然后,再次调出【修改(E)】按钮的属性设置区,切换到【事件】选项卡,选择【单击】事件,并进入到该【单击】事件的【代码生成器】编辑界面,则如下图所示:

然后,在鼠标光标处录入以下代码:

DoCmd.OpenForm"frmBxmx_sg_Edit"

录入完成之后,如下图所示:

接下来,关闭代码编辑界面,再关闭【命令按钮】的属性设置区,然后,保存窗体设计,接下来,切换到窗体视图,选中第3条记录,如下图所示:

然后,单击【修改(E)】按钮,则如下图所示:

如上图所示,这个界面,明显不正常,为什么呢?

当前既然选择了第3条记录,那么,我们在选择第3条记录并单击【修改(E)】按钮的情况下,系统应该将当前记录的相关值读取到当前窗体相应的文本框、组合框中,以便提供给用户用于修改——但是现在任何数据都没有,如何修改呢?

如若读者对前面手工开发的修改窗体的环节还有印象,那么,就知道,需要在添加【保存】和【关闭】按钮之前,先要为【报销明细修改】窗体添加一个加载事件。

接下来,直接在【报销明细修改】窗体上鼠标右键,在弹出的右键菜单中,选择【窗体设计(D)】命令,切换到该窗体的设计视图,然后,调出该窗体的属性设置区,切换到【事件】选项卡,然后,选择【加载】事件,并进入到该【加载】事件的【代码生成器】编辑页面,则如下图所示:

然后,在鼠标的光标处,录入以下代码:

DimrstAsObject

DimstrSQLAsString

DimcurrentIDAsString

curr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1