1、6.4 窗体对象程序模块代码设计6.4.1 “商品进货数据录入”窗体程序模块设计6.4.2 “商品上柜数据录入”窗体程序模块设计6.4.3 “销售数据录入”窗体程序模块设计学习了学习了VBE编程环境,掌握了编程环境,掌握了VBA程序设程序设计基础,就应该通过实际的编程实践来完成计基础,就应该通过实际的编程实践来完成“零售商店管理信息系统零售商店管理信息系统”数据库中三个主数据库中三个主要窗体对象的功能实现了。要窗体对象的功能实现了。返回6.4.1 “商品进货数据录入”窗体程序模块设计首先进入“商品进货数据录入”窗体设计视图。根据我们在6.1节的分析,需要在这个设计视图中,完成三段程序设计。在“
2、商品进货数据录入”窗体设计视图中,选定标签为“进货货号”的文本框,假定该文本框控件“名称”属性值为“Text19”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮,进入VBE编程环境,如图6-3所示。然后,应该在代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。1标签为“进货货号”的文本框数据更新事件处理Private Sub Text19_AfterUpdate()Me!货号.SetFocus DoCmd.FindRecord Me!Text19,True,Tru
3、e If Me!货号 Me!Text19 Then If MsgBox(增加一种新商品?,vbOKCancel,请确定!)=vbOK Then DoCmd.GoToRecord,acNewRec Me!货号=Me!Text19 Me!库存数量=0 Else Exit Sub End If End If Me!Text21=Me!货名 Me!text78=Me!规格 Me!text80=Me!计量单位 Me!Text25=Me!进货单价 Me!Text27=0 Me.RefreshEnd Sub表表6-12 “商品进货数据录入商品进货数据录入”窗体中控件名称属性表窗体中控件名称属性表在“商品进货
4、数据录入”窗体设计视图中,选定“保存记录”命令按钮,假定该命令按钮控件“名称”属性值为“Command35”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮“”,进入VBE编程环境。然后,在VBE代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。2“保存记录保存记录”命令按钮单击事件处理命令按钮单击事件处理Private Sub Command35_Click()Me!货名=Me!Text21 Me!规格=Me!text78 Me!计量单位=Me!text80 Me
5、!库存数量=Me!库存数量+Me!Text27 Me!进货单价=Me!Text25 Me!收货人=Me!Combo41 Me!供货商=Me!Combo45 Me!进货日期=Me!Text29 DoCmd.DoMenuItem acFormBar,acRecordsMenu,acSaveRecord,acMenuVer70 Me.RefreshEnd Sub在“商品进货数据录入”窗体设计视图中,选定“退出”命令按钮,假定该命令按钮控件“名称”属性值为“Command47”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮,即可直接进入VBE编程环境。这是由于在第5章创建该
6、命令按钮控件时,我们在Access 2003向导的引领下完成了这个命令按钮功能设定:关闭本窗体。然后,在VBE代码窗口中可以看到如下程序代码,无须加以改动即可关闭VBE,返回窗体设计视图。3“退出”命令按钮单击事件处理Private Sub Command47_Click()On Error GoTo Err_Command47_Click DoCmd.CloseExit_Command47_Click:Exit SubErr_Command47_Click:MsgBox Err.Description Resume Exit_Command47_ClickEnd Sub首先进入“商品上柜数据
7、录入”窗体设计视图。根据我们在6.1节的分析,需要在这个设计视图中,完成四段程序设计。6.4.2 “商品上柜数据录入”窗体程序模块设计1标签为“商品货号”的文本框数据更新事件处理在“商品上柜数据录入”窗体设计视图中,选定标签为“商品货号”的文本框,假定该文本框控件“名称”属性值为“Text19”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮,进入VBE编程环境,如图6-3所示。然后,应该在代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。Private Sub Tex
8、t19_AfterUpdate()Me!货号.SetFocus DoCmd.FindRecord Me!Text19,True,True If Me!货号 Me!Text19 Then If MsgBox(货号输入错误!货号输入错误!,vbOKCancel,错误!错误!)=vbOK Then Me!Text19.SetFocus Else Me!Text19.SetFocus End If Else Me!Text21=Me!货名 Me!Text25=Me!进货单价 Me!Text27=0 Me.Refresh Me!柜存数据记录子窗体.SetFocus DoCmd.FindRecord Me
9、!Text19,True,True Me!Text27.SetFocus End IfEnd Sub表表6-13 “商品上柜数据录入商品上柜数据录入”窗体中控件名称属性表窗体中控件名称属性表2“保存数据”命令按钮单击事件处理在“商品上柜数据录入”窗体设计视图中,选定“保存数据”命令按钮,假定该命令按钮控件“名称”属性值为“Command35”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮,进入VBE编程环境。然后,在VBE代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视
10、图。Private Sub Command35_Click()Me!柜存数据记录子窗体柜存数据记录子窗体.SetFocus DoCmd.FindRecord Me!Text19,True,True If Me!柜存数据记录子窗体柜存数据记录子窗体!货号货号 Me!Text19 Then DoCmd.GoToRecord,acNewRec Me!柜存数据记录子窗体柜存数据记录子窗体!柜存数量柜存数量=0 End If Me!柜存数据记录子窗体柜存数据记录子窗体!货号货号=Me!Text19 Me!柜存数据记录子窗体柜存数据记录子窗体!货名货名=Me!Text21 Me!柜存数据记录子窗体柜存数据
11、记录子窗体!规格规格=Me!规格规格 Me!柜存数据记录子窗体柜存数据记录子窗体!计量单位计量单位=Me!计量单位计量单位 Me!柜存数据记录子窗体柜存数据记录子窗体!销售单价销售单价=Me!Text25 Me!柜存数据记录子窗体柜存数据记录子窗体!柜存数量柜存数量=Me!Text27+Me!柜存数柜存数据记录子窗体据记录子窗体!柜存数量柜存数量 Me!柜存数据记录子窗体柜存数据记录子窗体!上柜日期上柜日期=Me!Text29 Me!柜存数据记录子窗体柜存数据记录子窗体!营业员营业员=Me!Combo45 Me!柜存数据记录子窗体柜存数据记录子窗体!上柜人上柜人=Me!Combo58 Me!T
12、ext52=Me!Text52+Me!Text27 Me!Text54=Me!Text54+Me!Text27*Me!Text25 Me!库存数量库存数量=Me!库存数量库存数量-Me!Text27 Me.RefreshEnd Sub3“退出”命令按钮单击事件处理在“商品上柜数据录入”窗体设计视图中,选定“退出”命令按钮,假定该命令按钮控件“名称”属性值为“Command47”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”,即可直接进入VBE编程环境。这是由于在第5章创建该命令按钮控件时,我们在Access 2003向导的引领下完成了这个命令按钮功能设定:关闭本
13、窗体。然后,在VBE代码窗口中可以看到如下程序代码,无须加以改动即可关闭VBE,返回窗体设计视图。Private Sub Command47_Click()On Error GoTo Err_Command47_Click DoCmd.CloseExit_Command47_Click:Exit SubErr_Command47_Click:MsgBox Err.Description Resume Exit_Command47_ClickEnd Sub在“商品上柜数据录入”窗体设计视图中,选定“查阅库存商品数据记录”命令按钮,假定该文本框控件“名称”属性值为“命令63”。调出属性对话框,选定
14、“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”,即可直接进入VBE编程环境。这是由于在第5章创建该命令按钮控件时,我们在Access 2003向导的引领下完成了这个命令按钮功能设定:打开一个名为“商品库存数据查询”的窗体。然后,在VBE代码窗口中可以看到如下程序代码,无须加以改动即可关闭VBE,返回窗体设计视图。4“查阅库存商品数据记录查阅库存商品数据记录”命令按钮单击事件处理命令按钮单击事件处理 Private Sub 命令63_Click()On Error GoTo Err_命令63_Click Dim stDocName As String Dim stLinkCriteri
15、a As String stDocName=商品库存数据查询 DoCmd.OpenForm stDocName,stLinkCriteriaExit_命令63_Click:Exit SubErr_命令63_Click:MsgBox Err.Description Resume Exit_命令63_ClickEnd Sub6.4.3 “销售数据录入”窗体程序模块设计首先进入“销售数据录入”窗体设计视图。根据我们在6.1节的分析,需要在这个设计视图中,完成五段程序设计。1标签为标签为“营业员营业员”的组合框数据更新事件处理的组合框数据更新事件处理在“商品上柜数据录入”窗体设计视图中,选定标签为“商
16、品货号”的文本框,假定该组合框控件“名称”属性值为“Combo45”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮“”,进入VBE编程环境,如图6-3所示。然后,应该在代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。Private Sub Combo45_AfterUpdate()Me.RefreshEnd Sub实际上,这个组合框控件已经在第5章的学习中设计完成,此处的“更新后”事件处理方法仅包含一句代码,怎么可能实现预定的功能呢?这里需要用到第4章介绍的查询
17、对象设计上。在第4章中,我们曾经为“销售数据录入”窗体中的子窗体设计了一个查询对象,名为“销售数据记录查询”。其中包含着这样一个查询条件:(销售数据记录.销售日期)=Forms!销售数据录入!Text29)AND(销售数据记录.销售人员)=Forms!销售数据录入!Combo45),参见图4-12。表表6-14 “销售数据录入销售数据录入”窗体中控件名称属性表窗体中控件名称属性表2标签为“商品货号”的文本框数据更新事件处理在“销售数据录入”窗体设计视图中,选定标签为“商品货号”的文本框,假定该文本框控件“名称”属性值为“Text19”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击
18、“生成器”按钮“”。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮“”,进入VBE编程环境,如图6-3所示。然后,应该在代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。Private Sub Text19_AfterUpdate()Me!货号货号.SetFocusDoCmd.FindRecord Me!Text19,True,True If Me!货号货号 Me!Text19 Then If MsgBox(货号输入错误!货号输入错误!,vbOKCancel,错误!错误!)=vbOK Then Me!Text19.SetFocus Else
19、Me!Text19.SetFocus End If Else Me!Text21=Me!货名货名 Me!text58=Me!规格规格 Me!Text25=Me!销售单价销售单价 Me!Text27=0 Me.Refresh Me!Text27.SetFocus End IfEnd Sub3“现金收讫”命令按钮单击事件处理在“销售数据录入”窗体设计视图中,选定“现金收讫”命令按钮,假定该命令按钮控件“名称”属性值为“Command35”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮“
20、”,进入VBE编程环境。然后,在VBE代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。Private Sub Command35_Click()Me!Text52=0Me!Text54=0#Me.RefreshEnd Sub4“退出”命令按钮单击事件处理在“销售数据录入”窗体设计视图中,选定“退出”命令按钮,假定该命令按钮控件“名称”属性值为“Command47”。调出属性对话框,选定“事件”卡,在“更新后”事件行右侧单击“生成器”按钮“”,即可直接进入VBE编程环境。这是由于在第5章创建该命令按钮控件时,我们在Access 2003向导的引领下完成了这个命令按钮功能设定:
21、关闭本窗体。然后,在VBE代码窗口中可以看到如下程序代码,无须加以改动即可关闭VBE,返回窗体设计视图。Private Sub Command47_Click()On Error GoTo Err_Command47_Click DoCmd.CloseExit_Command47_Click:Exit SubErr_Command47_Click:MsgBox Err.Description Resume Exit_Command47_ClickEnd Sub5标签为“销售数量”的文本框失去焦点事件处理在“销售数据录入”窗体设计视图中,选定标签为“销售数量”的文本框,假定该文本框控件“名称”属
22、性值为“Text27”。调出属性对话框,选定“事件”卡,在“失去焦点”事件行右侧单击“生成器”按钮“”。在随即出现的“选择生成器”对话框中,选中“代码生成器”选项,然后单击“确定”按钮“”,进入VBE编程环境,如图6-3所示。然后,应该在VBE代码窗口中输入如下程序代码,编写完成后关闭VBE,返回窗体设计视图。Private Sub Text27_LostFocus()If Me!Text27 0 Then Me!销售数据记录查询子窗体销售数据记录查询子窗体.SetFocus DoCmd.GoToRecord,acNewRec Me!销售数据记录查询子窗体销售数据记录查询子窗体!货号货号=Me
23、!Text19 Me!销售数据记录查询子窗体销售数据记录查询子窗体!货名货名=Me!Text21 Me!销售数据记录查询子窗体销售数据记录查询子窗体!规格规格=Me!text58 Me!销售数据记录查询子窗体销售数据记录查询子窗体!计量单位计量单位=Me!计量单位计量单位 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售单价销售单价=Me!销售单价销售单价 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售数量销售数量=Me!Text27 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售日期销售日期=Me!Text29 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售人员销售人员=Me!Combo45 Me!柜存数量柜存数量=Me!柜存数量柜存数量-Me!Text27 Me!Text52=Me!Text52+Me!Text27 Me!Text54=Me!Text54+Me!Text27*Me!销售单价销售单价End IfEnd Sub