Access报销明细信息Word下载.docx
《Access报销明细信息Word下载.docx》由会员分享,可在线阅读,更多相关《Access报销明细信息Word下载.docx(48页珍藏版)》请在冰豆网上搜索。
由于该窗体是以数据表视图来显示的,因此,对标签和文本框的布局的优化的工作,根本就无法体现出效果来,因此,凡是以数据库视图的显示的窗体,基本上是不需要进行任何界面美化工作的。
接下来,我们保存窗体设计,在弹出的【另存为】对话框中,将其命名为:
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,"
录入完成之后,则如下图所示:
然后,关闭代码编辑页面,再关闭【关闭(C)】按钮的属性设置区,然后,选择【保存(S)】按钮,再调出其属性设置区,切换到【事件】选项卡,选择【单击】事件,并进入到该【单击】事件的【代码生成器】编辑界面,然后,在鼠标的光标处,录入以下代码:
DimrstAsObject
DimstrSQLAsString
DimMaxIDAsString
DimcurrentIDAsString
DimmontholdAsString
DimmonthNowAsString
DimstrFrmAsString
IfIsNull(Me.txtbxrq)Then
MsgBox"
请输入报销日期!
"
vbCritical,"
提示"
Me.txtbxrq.SetFocus
ExitSub
EndIf
IfIsNull(Me.txtlbID)Then
请输入类别名称!
Me.txtlbID.SetFocus
IfIsNull(Me.txtygID)Then
请输入员工姓名!
Me.txtygID.SetFocus
IfIsNull(Me.txtbxje)Then
请输入报销金额!
Me.txtbxje.SetFocus
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
monthNow&
"
0001"
strSQL="
select*fromtblBxmx"
Setrst=CurrentDb.OpenRecordset(strSQL,dbOpenDynaset)
rst.AddNew
rst!
mxID=currentID
bxrq=Me.txtbxrq
lbID=Me.txtlbID
ygID=Me.txtygID
bxje=Me.txtbxje
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报销明细管理的修改功能
a.创建修改功能的窗体、调节窗体上的控件;
b.掌握修改功能的VBA代码。
有关修改窗体的设计原理,我们在前面的章节已经讲解了,这里就不再重复了,虽然字段多少不一,但是原理别无二致。
与前面的新增窗体一样,我们知道,由于不允许用户直接在数据表中修改数据,所以,为了实现修改功能,必须先制作用于修改数据的修改窗体。
从功能上来说,修改窗体和新增窗体完全不一样,但是从外观上来说,其外形却极为相似——同理,也是5个文本框的架构(其中2个组合框),接下来,我们就将来制作修改窗体。
首先,我们创建一个窗体,并进入该窗体的设计视图,然后,往窗体的网格设计区域,添加5个文本框,并调整其大小和位置,使其布局显得比较美观,完成之后,如下图所示:
接下来的操作,和新增的窗体一样,不妨再复述一下:
如上图所示,从上到下,依次将标签命名为:
然后,在将修改好数据保存进入数据库的环节,文本框和表中的对应关系分别是:
以上的这些环节的工作,修改窗体与新增窗体,是别无二致的,完全一样,从下面的环节开始,才开始逐渐有所差别,乃至完全不一样。
接下来,我们保存窗体设计,将窗体命名为:
frmBxmx_sg_Edit,然后,再调出窗体的属性对话框,进行以下属性设置:
报销明细修改;
以上设置完成之后,再次保存窗体设计——然后,还有什么工作没有做呢?
没错,与新增窗体一样,还有四个文本框的设置需要调整,两个需要更改格式,两个需要将文本框改为组合框,并进行一系列的属性调整,这些方面,是新增窗体的相关设置,完全一样,照搬过来就可以了,因此,这里就不再重复了,全部设置完成之后,如下图所示:
接下来的工作,我们就轻车熟路了——无非是还有三个命令按钮的工作没有完成,分别是frmBxmx_sg_Main窗体的【修改】按钮,以及frmBxmx_sg_Edit窗体上【保存】和【关闭】按钮。
只是修改窗体的原理和新增窗体的原理大不一样,所以,我们还是按照比较容易理解的流程来进行开发——先行制作frmBxmx_sg_Main窗体的【修改】按钮。
接下来,先行关闭所有已经打开的窗体,然后打开frmBxmx_sg_Main窗体,并进入其设计视图,然后在【新增(A)】按钮右侧的适当位置添加一个命令按钮,并调整其大小,然后调出其属性设置区,进行以下属性设置:
修改(&
E)
cmdEdit
以上设置完成之后,如下图所示:
然后,再次调出【修改(E)】按钮的属性设置区,切换到【事件】选项卡,选择【单击】事件,并进入到该【单击】事件的【代码生成器】编辑界面,则如下图所示:
然后,在鼠标光标处录入以下代码:
frmBxmx_sg_Edit"
录入完成之后,如下图所示:
接下来,关闭代码编辑界面,再关闭【命令按钮】的属性设置区,然后,保存窗体设计,接下来,切换到窗体视图,选中第3条记录,如下图所示:
然后,单击【修改(E)】按钮,则如下图所示:
如上图所示,这个界面,明显不正常,为什么呢?
当前既然选择了第3条记录,那么,我们在选择第3条记录并单击【修改(E)】按钮的情况下,系统应该将当前记录的相关值读取到当前窗体相应的文本框、组合框中,以便提供给用户用于修改——但是现在任何数据都没有,如何修改呢?
如若读者对前面手工开发的修改窗体的环节还有印象,那么,就知道,需要在添加【保存】和【关闭】按钮之前,先要为【报销明细修改】窗体添加一个加载事件。
接下来,直接在【报销明细修改】窗体上鼠标右键,在弹出的右键菜单中,选择【窗体设计(D)】命令,切换到该窗体的设计视图,然后,调出该窗体的属性设置区,切换到【事件】选项卡,然后,选择【加载】事件,并进入到该【加载】事件的【代码生成器】编辑页面,则如下图所示:
然后,在鼠标的光标处,录入以下代码:
curr