窗体对象功能设计.ppt

上传人:新** 文档编号:568777901 上传时间:2024-07-26 格式:PPT 页数:46 大小:1.14MB
返回 下载 相关 举报
窗体对象功能设计.ppt_第1页
第1页 / 共46页
窗体对象功能设计.ppt_第2页
第2页 / 共46页
窗体对象功能设计.ppt_第3页
第3页 / 共46页
窗体对象功能设计.ppt_第4页
第4页 / 共46页
窗体对象功能设计.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《窗体对象功能设计.ppt》由会员分享,可在线阅读,更多相关《窗体对象功能设计.ppt(46页珍藏版)》请在金锄头文库上搜索。

1、第第7 7章章 窗体对象功能设计窗体对象功能设计教学目标:教学目标:通过本章学习,使读者能够完成通过本章学习,使读者能够完成“迷你超市业务信息管迷你超市业务信息管理系统理系统”的窗体对象功能设计,主要能力目标:的窗体对象功能设计,主要能力目标: 能够掌握能够掌握VBE的使用方法。的使用方法。能够掌握在窗体设计视图中进行窗体对象功能程序设计能够掌握在窗体设计视图中进行窗体对象功能程序设计的方法。的方法。工作任务:工作任务: 上章我们掌握了上章我们掌握了Access数据库中窗体对象的界面设计数据库中窗体对象的界面设计方法,并创建了窗体对象的界面设计,本章完成方法,并创建了窗体对象的界面设计,本章完

2、成“商品商品进货数据录入进货数据录入”和和“商品销售录入商品销售录入”的窗体功能程序的的窗体功能程序的设计。设计。理论知识理论知识 一、一、VBA模块概述模块概述 建立完用户窗体只是实现功能的一半,还需要为窗体中的控件编建立完用户窗体只是实现功能的一半,还需要为窗体中的控件编写写VBA来真正实现其功能。来真正实现其功能。VBA(Visual Basic for Applications)是是Microsoft Office系列的内置编程语言,功能强大,面向对象,同系列的内置编程语言,功能强大,面向对象,同其他任何面向对象的编程语言一样,其他任何面向对象的编程语言一样,VBA里也有对象、属性、方

3、法和里也有对象、属性、方法和事件。事件。1.对象:就是代码和数据的组合,可将它看作单元,如表、窗体和文对象:就是代码和数据的组合,可将它看作单元,如表、窗体和文本框等是对象。每个对象由类来定义。本框等是对象。每个对象由类来定义。2.属性:是指定义了对象的特性,如大小、颜色、对象状态等。属性:是指定义了对象的特性,如大小、颜色、对象状态等。3.方法:指对象能执行的动作,如刷新、获得焦点等。方法:指对象能执行的动作,如刷新、获得焦点等。4.事件:是一个对象可以识别的动作,如鼠标单击或按下某键等,并事件:是一个对象可以识别的动作,如鼠标单击或按下某键等,并且可以写某些代码针对此动作来做出响应。且可以

4、写某些代码针对此动作来做出响应。 二、二、VBA编程基础编程基础1、VBA代码的实现方法代码的实现方法 所有所有VBA代码都以模块的方式保存在数据库里。创建模块有两种方代码都以模块的方式保存在数据库里。创建模块有两种方法:(法:(1)作为模块对象()作为模块对象(2)作为窗体和报表对象的一部分)作为窗体和报表对象的一部分(1)模块对象)模块对象 创建模块对象,方法如下:创建模块对象,方法如下: 1)单击)单击“数据库数据库”窗口的窗口的“模块模块”按钮可查看模块对象;按钮可查看模块对象; 2)单击)单击“新建新建”按钮创建一个新模块;按钮创建一个新模块; 3)单击完)单击完“新建新建”按钮后,

5、弹出按钮后,弹出Microsoft Visual Basic代码设代码设计窗口,在代码窗口中输入代码,以实现模块的功能。计窗口,在代码窗口中输入代码,以实现模块的功能。(2)窗体和报表模块)窗体和报表模块 在窗体和报表类模块中,可以创建特别命名的事件过程来响应事在窗体和报表类模块中,可以创建特别命名的事件过程来响应事件。可以通过在件。可以通过在“设计设计”视图中打开窗体或报表,从视图中打开窗体或报表,从“视图视图”菜单中选择菜单中选择“代码代码”来编辑该窗体或报表的模块。来编辑该窗体或报表的模块。 2、注释语句、注释语句 注释语句用于对程序或语句的功能给出解释和说明。在注释语句用于对程序或语句

6、的功能给出解释和说明。在VBA程序中,注程序中,注释内容被显示成绿色文本。可以通过两种方式添加注释:释内容被显示成绿色文本。可以通过两种方式添加注释:使用使用Rem语句,格式如下:语句,格式如下: Rem 注释语句注释语句 注释语句可以放在其他语句之后,但需要用冒号隔开。注释语句可以放在其他语句之后,但需要用冒号隔开。使用使用“”,格式如下:,格式如下: 注释语句注释语句 注释语句可以直接放在其他语句之后而无需分隔符。注释语句可以直接放在其他语句之后而无需分隔符。3、连写和换行、连写和换行 程序语句一般一句一行,但有时候可能需要在一行中写几句代码,这时程序语句一般一句一行,但有时候可能需要在一

7、行中写几句代码,这时需要用到需要用到“:”来分开不同用途的几个语句。来分开不同用途的几个语句。 有时一句代码太,书写起来不方便,看上去也不美观,希望将一句代码有时一句代码太,书写起来不方便,看上去也不美观,希望将一句代码分开写成几行,这时需要用到空格加下划线分开写成几行,这时需要用到空格加下划线“_”。 4、赋值语句、赋值语句 赋值语句指定一个值或表达式给变量。赋值语句通常会包含一个等号赋值语句指定一个值或表达式给变量。赋值语句通常会包含一个等号“=” 语法格式如下:语法格式如下: Let = Set= Let语句赋值,对应的数据类型为字符、数值类型等,语句赋值,对应的数据类型为字符、数值类型

8、等,Let通常可以省略通常可以省略 Set语句赋值,对应的是复杂数据类型,可以是用户自定义的数据类型或语句赋值,对应的是复杂数据类型,可以是用户自定义的数据类型或对象类型的数据。对象类型的数据。5、常量和变量、常量和变量(1)声明常量和变量)声明常量和变量常量是指在程序过程中始终固定不变的量。常量是指在程序过程中始终固定不变的量。VBA的常量包括数值常量、的常量包括数值常量、字符常量、日期常量、符号常量、固有常量和系统定义常量等。字符常量、日期常量、符号常量、固有常量和系统定义常量等。 变量是指在程序运行过程期间取值可以变化的量,除了使用变量是指在程序运行过程期间取值可以变化的量,除了使用VB

9、A代码来代码来操作各种打开的窗体或报表的控件外,还可以在操作各种打开的窗体或报表的控件外,还可以在VBA代码中声明和使用代码中声明和使用指定的变量来临时存储值、计算结果或操作数据库中的任意对象。指定的变量来临时存储值、计算结果或操作数据库中的任意对象。 (2)常量和变量的作用域)常量和变量的作用域 常量或变量的作用域决定了这个常量或变量是只能在一个过程中常量或变量的作用域决定了这个常量或变量是只能在一个过程中使用,还是在一个模块中所有过程中使用,还是可以在数据库的使用,还是在一个模块中所有过程中使用,还是可以在数据库的所有过程中使用。如果希望一个变量能被数据库中所有过程(即所有过程中使用。如果

10、希望一个变量能被数据库中所有过程(即公共作用域)所访问,需要在声明时加上关键字公共作用域)所访问,需要在声明时加上关键字Public。也可以。也可以用关键字用关键字Private将一个变量的适用范围显式声明为模块内(私将一个变量的适用范围显式声明为模块内(私有作用域)。有作用域)。 6、数据类型、数据类型 VBA一般用变量保存计算的结果、进行属性的设置、指定方法的一般用变量保存计算的结果、进行属性的设置、指定方法的参数以及在过程间传递数值。为了提高执行效率,参数以及在过程间传递数值。为了提高执行效率,VBA为变量定义了为变量定义了一个数据类型的集合,一个数据类型的集合,VBA支持多种数据类型,

11、下表列出了支持多种数据类型,下表列出了VBA程序程序中基本数据类型,以及它所占用的存储空间、取值范围和默认值。中基本数据类型,以及它所占用的存储空间、取值范围和默认值。 数据类型数据类型存储空间存储空间(字(字节)节)取值范围取值范围默认默认值值Byte(字节型)(字节型)102550Boolean(布尔型)(布尔型)2True或或FalseFalseInteger(整型)(整型)2-32768327670Long(长整型)(长整型)4-214748364821474836470Single(单精度型)(单精度型)4负数:负数:-3.402823E38-1.401298E-450正数:正数:1

12、.401298E-453.402823E38Double(双精度型)(双精度型)8负数:负数:-1.79769313E308-4.94065648E-3240正数:正数:4.94065648E-3241.79769313E308Currency(货币型)(货币型)8-992337203685477.5808992337203685477.58070Date(日期型)(日期型)8100年年1月月1日日9999年年12月月31日日0Object(对象型)(对象型)4任何对象引用任何对象引用空空String(字符串)(字符串)不定不定065535空字符空字符串串Variant(变体)(变体)不定不定

13、空空7、流程控制语句、流程控制语句8、过程和函数、过程和函数 过程和函数就是能执行特定功能的语句块。过程是用过程和函数就是能执行特定功能的语句块。过程是用VBA语言的声明和语句组成的单元,作为一个命名单语言的声明和语句组成的单元,作为一个命名单位的程序段,它可以包含一系列执行操作或计算值的位的程序段,它可以包含一系列执行操作或计算值的语句和方法。函数也是过程,不过它是一种特殊的、语句和方法。函数也是过程,不过它是一种特殊的、能够返回值的能够返回值的Function过程。能否返回值,也是过程过程。能否返回值,也是过程和函数之间最大的区别。和函数之间最大的区别。 过程在一个地方写了一个功能模块之后

14、,如果要在其过程在一个地方写了一个功能模块之后,如果要在其他地方实现同样的功能,不必将该代码重新写一遍,他地方实现同样的功能,不必将该代码重新写一遍,只要直接调用就行。当功能模块有错误时,不必在整只要直接调用就行。当功能模块有错误时,不必在整个应用程序中查找错误,只需要改正过程和函数调试个应用程序中查找错误,只需要改正过程和函数调试成功即可。成功即可。 9、事件过程、事件过程事件过程用于响应由用户或系统引发的事件。当事件被触发时,应用事件过程用于响应由用户或系统引发的事件。当事件被触发时,应用程序启动相应的模块处理当前事件,然后等待下一个事件的发生。程序启动相应的模块处理当前事件,然后等待下一

15、个事件的发生。在在Access系统中,不同对象可以触发的事件不同,主要有键盘事件、系统中,不同对象可以触发的事件不同,主要有键盘事件、鼠标事件、窗口事件、对象事件和操作事件等。鼠标事件、窗口事件、对象事件和操作事件等。10、事件过程编写格式、事件过程编写格式例如:例如:“单击单击”事件事件 当在某对象上按下并释放鼠标左键时将触发该事件,其事件处理程当在某对象上按下并释放鼠标左键时将触发该事件,其事件处理程序的定义格式如下:序的定义格式如下: Private Sub 对象名对象名_Click()() 过程代码过程代码 End Sub7.1 7.1 窗体的常用控件与编程设计窗体的常用控件与编程设计

16、7.1.1“商品进货数据录入商品进货数据录入”窗体页眉功能设计窗体页眉功能设计7.1.2“商品进货数据录入商品进货数据录入”窗体页脚功能设计窗体页脚功能设计7.1.3“商品进货数据录入商品进货数据录入”窗体主体功能设计窗体主体功能设计7.1.4“销售数据录入销售数据录入”窗体功能设计窗体功能设计7.1.5“销售数据录入销售数据录入”窗体页眉功能设计窗体页眉功能设计7.1.6“销售数据录入销售数据录入”窗体主体功能设计窗体主体功能设计7.1.7“销售数据录入销售数据录入”窗体页脚功能设计窗体页脚功能设计7.1.1“7.1.1“商品进货数据录入商品进货数据录入” ”窗体页眉功能设窗体页眉功能设计计

17、7.1.1“7.1.1“商品进货数据录入商品进货数据录入” ”窗体页眉功能设窗体页眉功能设计计在页眉中有在页眉中有“进货货号进货货号”文本框、文本框、“进货日期进货日期”文本框、文本框、“进货名称进货名称”文本框、文本框、“规规格格”文本框、文本框、“计量单位计量单位”文本框、文本框、“进货单位进货单位”文本框、文本框、“进货数量进货数量”文本文本框,框,“收货人收货人”组合框和组合框和“供货商供货商”组合框。组合框。功能要求:功能要求:当用户在当用户在“进货货号进货货号”文本框输入了货号后,系统会在文本框输入了货号后,系统会在“库存数据记录库存数据记录”表中查找该货号的商品,如果找不到,说明

18、用户输入了一个新的货号,表中查找该货号的商品,如果找不到,说明用户输入了一个新的货号,此时会弹出一个对话框提示,并在此时会弹出一个对话框提示,并在“库存数据记录库存数据记录”表中插入一个新记表中插入一个新记录,同时会将新的货号保存在新记录中;录,同时会将新的货号保存在新记录中;如果找到了该货号的商品,则在窗体页眉中的控件除了如果找到了该货号的商品,则在窗体页眉中的控件除了“收货日期收货日期”、“收货人收货人”组合框和组合框和“供货商供货商”组合框以外,其余的文本框中会显示出组合框以外,其余的文本框中会显示出该商品的相应信息。这样既防止用户货号输入错误,也能减少用户输入该商品的相应信息。这样既防

19、止用户货号输入错误,也能减少用户输入信息的工作量。当然各个文本框的内容是可以被用户修改的。信息的工作量。当然各个文本框的内容是可以被用户修改的。“收货日期收货日期”会自动读取系统当前的日期。会自动读取系统当前的日期。“收货人收货人”组合框和组合框和“供货供货商商”组合框需要用户自己选择其内容,如果不选择,那么在最后保存数组合框需要用户自己选择其内容,如果不选择,那么在最后保存数据时会有提示。据时会有提示。 代码讲解代码讲解: :Private Sub Text12_LostFocus() 当当“Text12”控件失去焦点时将执行的代码控件失去焦点时将执行的代码Me!货号货号.SetFocus

20、本窗体中本窗体中“贷号贷号”控件获得焦点控件获得焦点If Me!Text12 = Then 如果如果“Text12”控件的值为空字符串值,则执控件的值为空字符串值,则执行行MsgBox (请输入进货货号请输入进货货号!) 弹出一个对话框,给出提示:请输入进货货弹出一个对话框,给出提示:请输入进货货号号!Me!Text12.SetFocus “Text12”控件获得焦点,让用户重新输入进货货控件获得焦点,让用户重新输入进货货号号Else 否则(即用户已经输入了货号)否则(即用户已经输入了货号)DoCmd.FindRecord Me!Text12, , True, , True 查找数据源中第一个

21、当前字段查找数据源中第一个当前字段(货号)(货号)为为 “Text12”控件的值的记录控件的值的记录If Me!货号货号 Me!Text12 Then 如果货号字段的值不等于如果货号字段的值不等于“Text12”控控 件的值(即没有找到记录)件的值(即没有找到记录)If MsgBox(增加一种新商品?增加一种新商品?, vbOKCancel, 请确定!请确定!) = vbOK Then 弹出弹出一个一个 提示对话框提示对话框“增加一种新商品?增加一种新商品?”,并要求用户判断是否,并要求用户判断是否确定。如果用户点击了确定。如果用户点击了“请确定请确定”按钮,则执行下面语句按钮,则执行下面语句

22、 DoCmd.GoToRecord , , acNewRec 增加一条新记录,即增加一个新的货增加一条新记录,即增加一个新的货物物 代码讲解代码讲解: :Me!货号货号 = Me!Text12 新记录中,货号字段的值为新记录中,货号字段的值为“Text12”控件的值控件的值 Me!库存数量库存数量 = 0 库存数据字段的值为库存数据字段的值为“0” Else 否则(用户选择取消,不增加一个新的货物)否则(用户选择取消,不增加一个新的货物) Exit Sub 退出程序,即不增加新记录退出程序,即不增加新记录 End If 结束结束IF语句语句End If 结束结束IF语句。此时状态为货号字段的值

23、等于语句。此时状态为货号字段的值等于“Text12”控件的值(即找到记控件的值(即找到记录)录)Me!Text20 = Me!货名货名 将记录中货名字段的值赋值给将记录中货名字段的值赋值给“Text20”控件控件Me!Text22 = Me!规格规格 将记录中规格字段的值赋值给将记录中规格字段的值赋值给“Text22”控件控件Me!Text24 = Me!计量单位计量单位 将记录中计量单位字段的值赋值给将记录中计量单位字段的值赋值给“Text24”控件控件Me!Text26 = Me!进货单价进货单价 将记录中进货单价字段的值赋值给将记录中进货单价字段的值赋值给“Text26”控件控件Me!T

24、ext28 = 0 将将“0”赋值给赋值给“Text28”控件(进货数量)控件(进货数量)Me.Refresh 刷新本窗体,刷新后刷新本窗体,刷新后“Text20”等控件的值就会显示出来等控件的值就会显示出来End If 结束结束IF语句语句End Sub 结束程序结束程序 本窗体所有代码中涉及到的各控件名称列于下表(若读者所建各本窗体所有代码中涉及到的各控件名称列于下表(若读者所建各控件名称不同,请用正确的控件名称替换上述各控件名称):控件名称不同,请用正确的控件名称替换上述各控件名称): 控件名称控件名称伴随控件标签伴随控件标签控件名称控件名称伴随控件标签伴随控件标签Text12进货货号进

25、货货号Text14进货日期进货日期Combo16收货人收货人Combo18供货商供货商Text20进货名称进货名称Text22规格规格Text24计量单位计量单位Text26进货单价进货单价Text28进货数量进货数量Command35保存记录按钮保存记录按钮表“商品进货数据录入”窗体各控件名称列表 7.1.2“7.1.2“商品进货数据录入商品进货数据录入” ”窗体页脚功能设计窗体页脚功能设计“保存记录保存记录”按钮中我们需要添加代码。按钮中我们需要添加代码。 Private Sub Command35_Click()On Error GoTo Err_Command35_ClickIf Me

26、!Text28.Value = 0 ThenMsgBox (请检查您的数据请检查您的数据!)ElseIf MsgBox(确定吗?确定吗?, vbOKCancel, 请确定!请确定!) = vbOK Then Me!货名货名 = Me!Text20 Me!规格规格 = Me!text22 Me!计量单位计量单位 = Me!text24 Me!库存数量库存数量 = Me!库存数量库存数量 + Me!Text28 Me!进货单价进货单价 = Me!Text26 Me!收货人收货人 = Me!Combo16 Me!供货商供货商 = Me!Combo18 Me!进货日期进货日期 = Me!Text14

27、代码讲解代码讲解: :DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Me.RefreshElse Exit Sub End IfEnd IfExit_Command35_Click: Exit SubErr_Command35_Click: MsgBox Err.Description Resume Exit_Command35_Click End Sub7.1.3“7.1.3“商品进货数据录入商品进货数据录入” ”窗体主体功能设计窗体主体功能设计 为了数据的安全性,设定主体中各个控件为只为了数据的

28、安全性,设定主体中各个控件为只读。选定主体中的各个控件,单击工具栏的读。选定主体中的各个控件,单击工具栏的“属性属性”按钮,进入按钮,进入“数据数据”选项卡,将选项卡,将“是否是否锁定锁定”的属性值改为的属性值改为“是是”。注意:注意:因为主体中的各个控件是与数据库绑定的,因为主体中的各个控件是与数据库绑定的,用户在修改了控件中的值以后,数据库中相应用户在修改了控件中的值以后,数据库中相应记录的值也会随之更改。这样是极不安全的。记录的值也会随之更改。这样是极不安全的。我们的目的是用户只能通过在窗体页眉中输入我们的目的是用户只能通过在窗体页眉中输入数据,并经过数据,并经过“保存记录保存记录”按钮

29、进行保存之后,按钮进行保存之后,才能更改数据库中的数据。才能更改数据库中的数据。 7.1.4“7.1.4“销售数据录入销售数据录入” ”窗体功能设窗体功能设计计功能功能讲解讲解: :必要功能:必要功能:1它能够实现销售数据的录入,因此它应当提供用户对它能够实现销售数据的录入,因此它应当提供用户对商品商品“销售数据记录销售数据记录”表中所有字段数据的录入;表中所有字段数据的录入;2在用户输入一种销售商品的信息之后,系统应当对该在用户输入一种销售商品的信息之后,系统应当对该信息进行检查,如果在信息进行检查,如果在“柜存数据记录柜存数据记录”表中没有该种表中没有该种商品,则需给出错误提示;商品,则需

30、给出错误提示;3在用户输入过程中应对输入信息的合法性作出判断;在用户输入过程中应对输入信息的合法性作出判断;4在向在向“销售数据记录销售数据记录”表中添加记录的同时,应在表中添加记录的同时,应在“柜存数据记录柜存数据记录”表中的表中的“柜存数量柜存数量”字段值上减去相应字段值上减去相应的销售数量值。的销售数量值。 功能功能讲解讲解: :辅助功能:辅助功能:1为简化用户输入,在打开窗体时即要求用户在为简化用户输入,在打开窗体时即要求用户在“商品货号商品货号”组合组合框中进行选择,框中进行选择,“商品货号商品货号”组合框数据源为组合框数据源为“柜存数据记录柜存数据记录”表表中的货号字段;用户选择后

31、,系统会自动从中的货号字段;用户选择后,系统会自动从“柜存数据记录柜存数据记录”表中表中读取该商品的读取该商品的 “商品名称商品名称”、“规格规格”、“计量单位计量单位”和和“销售销售单价单价”等信息并显示(这些信息为只读显示);等信息并显示(这些信息为只读显示);“销售员销售员”和和“销销售数量售数量”则要求用户必须手工输入;则要求用户必须手工输入;2为保证用户输入的正确性,在用户输入完一件商品的销售信息后,为保证用户输入的正确性,在用户输入完一件商品的销售信息后,单击单击“确认确认”按钮,信息会添加到窗体中间的列表中,用户可进行按钮,信息会添加到窗体中间的列表中,用户可进行检查;用户可以输

32、入多条销售信息;在全部信息输入完成后单击检查;用户可以输入多条销售信息;在全部信息输入完成后单击“现金收讫现金收讫”按钮,信息才会被写入按钮,信息才会被写入“销售数据记录销售数据记录”表中;表中;3窗体中增加一个窗体中增加一个“柜存信息柜存信息”按钮,以方便用户查询商品相关的按钮,以方便用户查询商品相关的柜存数据;柜存数据;4在窗体下方有两个文本框,用于显示本次用户录入的商品销售数在窗体下方有两个文本框,用于显示本次用户录入的商品销售数据之和,即本次录入的商品销售数量和销售总金额。据之和,即本次录入的商品销售数量和销售总金额。 操作演示及代码解读操作演示及代码解读: :表表 “销售数据录入销售

33、数据录入”窗体各控件名称列表窗体各控件名称列表控件所在位置控件所在位置控件名称控件名称伴随控件伴随控件标签控件名称控件名称伴随控件伴随控件标签窗体窗体页眉眉Combo3商品商品货号号Text5商品名称商品名称Text7规格格Text9计量量单位位Text11销售售单价价Text13销售日期售日期Combo15销售售员Text17销售数量售数量Text19无无( (货号号) )Text20无(柜存数量)无(柜存数量)Command18(确(确认按按钮)窗体主体窗体主体Text28(子窗体内(子窗体内计算商算商品品总数量)数量)Text29(子窗体内(子窗体内计算商算商品品应收收总金金额)窗体窗体

34、页脚脚Text22商品个数商品个数Text24应收金收金额Command25(现金收金收讫按按钮)Command26(退出按(退出按钮)Command27(柜存信息按(柜存信息按钮)7.1.5“7.1.5“销售数据录入销售数据录入” ”窗体页眉功能设窗体页眉功能设计计 代码讲解代码讲解:If IsNull(Me!Combo3) Then 如果如果Combo3组合框值为空,即用户未选择商组合框值为空,即用户未选择商品货号品货号MsgBox (请选择商品货号!请选择商品货号!) 弹出警告窗口弹出警告窗口“请选择商品货号!请选择商品货号!”Me!Combo3.SetFocus Combo3组合框获得

35、焦点以便用户选择商品货号组合框获得焦点以便用户选择商品货号ElseMe!Text5.ControlSource = 货名货名 将表单中将表单中Text5文本框的文本框的ControlSource属性值属性值设为设为“货名货名”,这样,这样Text5文本框便与货名字段绑定了文本框便与货名字段绑定了Me!text7.ControlSource = 规格规格Me!Text9.ControlSource = 计量单位计量单位Me!Text11.ControlSource = 销售单价销售单价Me!Text19.SetFocus Text19文本框获得焦点以便用户选择销售员文本框获得焦点以便用户选择销售

36、员DoCmd.FindRecord Me!Combo3, , True, , True 查找数据源中第一个当查找数据源中第一个当前字段前字段(货号)等于(货号)等于“Combo3”控件的值的记录控件的值的记录 Me.Refresh Me!Combo15.SetFocusEnd If更新销售记录更新销售记录: :If IsNull(Me!Combo15) ThenMsgBox (请选择商品货号!请选择商品货号!)Me!Combo15.SetFocusElseMe!Text17.SetFocusEnd If在在“事件事件”选项卡中的选项卡中的“不在列表中不在列表中”项中选项中选择择“代码生成器代码

37、生成器”,输入以下代码:,输入以下代码:Response = acDataErrContinueMsgBox (请选择正确的售货员!请选择正确的售货员!)确认按钮代码讲解确认按钮代码讲解: :If IsNull(Me!Text17) Then 一步一步如果控件如果控件Text17的值为空,即用户未输的值为空,即用户未输入销售数量入销售数量 Me!Text17.SetFocus MsgBox (请输入销售数量!请输入销售数量!)Else If Me!Text17 = 0 Then 如果控件如果控件Text17的值为的值为0,即用户输入的销售,即用户输入的销售数量非法数量非法 Me!Text17.

38、SetFocus MsgBox (销售数量输入错误!销售数量输入错误!) Else If Me!Text17 - Me!text20 0 Then 如果控件如果控件Text17的值大于控件的值大于控件Text20的值的值 Me!Text17.SetFocus MsgBox (您输入的销售数量超过了本商品的柜存数量!您输入的销售数量超过了本商品的柜存数量!) Else If Me!Text17 0 Then 如果控件如果控件Text17的值小于的值小于0,由于主体中子窗,由于主体中子窗体内的临体内的临时表禁用户进行删除操作,所以用户可输入负数来对冲错误的销售记录时表禁用户进行删除操作,所以用户可

39、输入负数来对冲错误的销售记录 If MsgBox(您输入的销售数量是负值!您输入的销售数量是负值! & Chr(10) & 负的销售数量可负的销售数量可用于退货处理。用于退货处理。 & Chr(10) & 确实要对冲错误的销售记录吗确实要对冲错误的销售记录吗?, vbOKCancel, 请确认请确认) = vbCancel ThenMe!Text17.SetFocus 如果用户选择否则焦点回到如果用户选择否则焦点回到Text17上上 Else 如果用户确定要对冲销售记录如果用户确定要对冲销售记录 Me!销售数据记录查询子窗体销售数据记录查询子窗体.SetFocus 窗体主体中的子窗体获得焦点窗

40、体主体中的子窗体获得焦点 DoCmd.GoToRecord , , acNewRec 子窗体中的临时表添加一条新记录子窗体中的临时表添加一条新记录 Me!销售数据记录查询子窗体销售数据记录查询子窗体!货号货号 = Me!Combo3 对子窗体字段进行赋值对子窗体字段进行赋值 Me!销售数据记录查询子窗体销售数据记录查询子窗体!货名货名 = Me!Text5 Me!销售数据记录查询子窗体销售数据记录查询子窗体!规格规格 = Me!text7 Me!销售数据记录查询子窗体销售数据记录查询子窗体!计量单位计量单位 = Me!Text9 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售单价销售

41、单价 = Me!Text11 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售数量销售数量 = Me!Text17 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售日期销售日期 = Me!Text13 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售人员销售人员 = Me!Combo15 Me!text20 = Me!text20 - Me!Text17 修改柜存数量,保证柜存数据修改柜存数量,保证柜存数据表中柜存数量字段数据的正确性表中柜存数量字段数据的正确性 Me.Refresh Me!Text22 = Me!销售数据记录查询子窗体销售数据记录查询子窗体!Text2

42、8 将子窗体中的将子窗体中的Text28控件的值赋值给窗体页脚中的控件的值赋值给窗体页脚中的Text22控件控件 Me!Text24 = Me!销售数据记录查询子窗体销售数据记录查询子窗体!Text29 Me.Refresh Me! Combo3.SetFocus End IfElse Me!销售数据记录查询子窗体销售数据记录查询子窗体.SetFocus DoCmd.GoToRecord , , acNewRec Me!销售数据记录查询子窗体销售数据记录查询子窗体!货号货号 = Me!Combo3 Me!销售数据记录查询子窗体销售数据记录查询子窗体!货名货名 = Me!Text5 Me!销售数

43、据记录查询子窗体销售数据记录查询子窗体!规格规格 = Me!text7 Me!销售数据记录查询子窗体销售数据记录查询子窗体!计量单位计量单位 = Me!Text9 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售单价销售单价 = Me!Text11 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售数量销售数量 = Me!Text17 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售日期销售日期 = Me!Text13 Me!销售数据记录查询子窗体销售数据记录查询子窗体!销售人员销售人员 = Me!Combo15 Me!text20 = Me!text20 - Me!Te

44、xt17 Me.Refresh Me!Text22 = Me!销售数据记录查询子窗体销售数据记录查询子窗体!Text28 Me!Text24 = Me!销售数据记录查询子窗体销售数据记录查询子窗体!Text29 Me.Refresh Me! Combo3.SetFocus End IfEnd IfEnd IfEnd If7.1.6“7.1.6“销售数据录入销售数据录入” ”窗体主体功能设窗体主体功能设计计 在窗体主体中加入子窗体:在窗体主体中加入子窗体:“销售数据记录查询子窗体销售数据记录查询子窗体”。该窗体的数据源是名为。该窗体的数据源是名为“销售数据记录查询临时表销售数据记录查询临时表”的

45、查询。的查询。 1创建创建“销售数据临时表销售数据临时表”,表中有以下字段:,表中有以下字段:“销售销售序列号序列号”、“货号货号”、“货名货名”、“规格规格”、“计量单计量单位位”、“销售单价销售单价”、“销售数量销售数量”、“销售日期销售日期”、“销售人员销售人员”。2创建创建“销售数据记录查询临时表销售数据记录查询临时表”查询,并增加一个查询,并增加一个字段,字段名为:字段,字段名为:“销售金额销售金额: 销售记录临时表销售记录临时表!销销售单价售单价*销售记录临时表销售记录临时表!销售数量销售数量”。查询的设。查询的设计视图如图所示:计视图如图所示: “销售数据记录查询临时表销售数据记

46、录查询临时表”查询设计视图查询设计视图 3创建“销售数据记录查询子窗体”。子窗体设计视图如图所示:图图 “销售数据记录查询子窗体销售数据记录查询子窗体”设计视图设计视图子窗体的数据源为:子窗体的数据源为:“SELECT DISTINCTROW 销售数据记录查询临时表销售数据记录查询临时表.* FROM 销售数据记销售数据记录查询临时表录查询临时表;”。设置窗体主体中所有的文本框控件的属性对话框设置窗体主体中所有的文本框控件的属性对话框中中“数据数据”选项卡内选项卡内“是否锁定是否锁定”属性值为属性值为“是是”。打开窗体页脚中的打开窗体页脚中的Text28文本框的属性对话框,文本框的属性对话框,

47、设置设置“数据数据”选项卡中选项卡中“控件来源控件来源”属性值为属性值为“=Sum(销售记录临时表销售记录临时表!销售数量销售数量)”;打开;打开 Text29文本框的属性对话框,设置文本框的属性对话框,设置“数据数据”选项选项卡中卡中“控件来源控件来源”属性值为属性值为“=Sum(销售记录临销售记录临时表时表!销售数量销售数量*销售记录临时表销售记录临时表!销售单销售单价价)” Private Sub Command26_Click()On Error GoTo Err_Command26_Click DoCmd.SetWarnings False DoCmd.OpenQuery 销售记录临

48、时表删除查询销售记录临时表删除查询, acViewNormal, acReadOnly DoCmd.SetWarnings True DoCmd.CloseExit_Command26_Click: Exit SubErr_Command26_Click: MsgBox Err.Description Resume Exit_Command26_ClickEnd Sub4将将“销售数据记录查询子窗体销售数据记录查询子窗体”添加到添加到“销售数据录入销售数据录入”窗体的主体中。设置子窗体的主体中。设置子窗体属性,将窗体属性,将“数据数据”选项卡中的选项卡中的“允许允许删除删除”项设置为项设置为“

49、否否”。注意:注意:将主体中各控件设为锁定,而子窗体将主体中各控件设为锁定,而子窗体设为不允许删除,是为了防止用户直接修设为不允许删除,是为了防止用户直接修改其数据从而造成销售数据录入时的混乱。改其数据从而造成销售数据录入时的混乱。 7.1.7“7.1.7“销售数据录入销售数据录入” ”窗体页脚功能设计窗体页脚功能设计 窗体页脚中有两个文本框控件和三个按钮控件。操作步骤(包含准窗体页脚中有两个文本框控件和三个按钮控件。操作步骤(包含准备工作)如下:备工作)如下:1创建创建“销售记录临时表追加查询销售记录临时表追加查询”,其设计视图如图所示。其数,其设计视图如图所示。其数据源为据源为“销售记录临

50、时表销售记录临时表”,追加的目的表为,追加的目的表为“销售数据记录销售数据记录”表。表。查询执行后将把查询执行后将把“销售记录临时表销售记录临时表”中的数据添加到中的数据添加到“销售数据记销售数据记录录”表中。表中。 “销售记录临时表追加查询销售记录临时表追加查询”设计视图设计视图 2创建创建“销售记录临时表删除查询销售记录临时表删除查询”,其设计视,其设计视图如图所示。查询执行后将删除图如图所示。查询执行后将删除“销售记录临销售记录临时表时表”中所有的记录。中所有的记录。 “销售记录临时表删除查询销售记录临时表删除查询”设计视图设计视图3设置好相应地大小及位置。设置好相应地大小及位置。4打开

51、打开Command25(现金收讫)按钮控件的属性对话(现金收讫)按钮控件的属性对话框,设置框,设置“事件事件”选项卡中选项卡中“单击单击”属性,打开代码生属性,打开代码生成器,输入以下代码(右侧斜体文字为代码的说明,不成器,输入以下代码(右侧斜体文字为代码的说明,不可以输入):可以输入):Private Sub Command25_Click()On Error GoTo Err_Command25_ClickIf MsgBox(您确定要将这些销售数据输入销售记录表中您确定要将这些销售数据输入销售记录表中吗吗?, vbOKCancel, 请确认请确认) = vbOK Then 弹出对话框要求用

52、户确认现金已收讫,如果用户确认,弹出对话框要求用户确认现金已收讫,如果用户确认,则则DoCmd.SetWarnings False 屏蔽系统提示信息屏蔽系统提示信息Me!Text22 = 0 文本文本框值归零框值归零Me!Text24 = 0DoCmd.OpenQuery 销售记录临时表追加查询销售记录临时表追加查询, acViewNormal, acReadOnly 执行执行“销售销售记录临时表追加查询记录临时表追加查询”DoCmd.OpenQuery 销售记录临时表删除查询销售记录临时表删除查询, acViewNormal, acReadOnly 执行执行“销售销售 记录临时表删除查询记录

53、临时表删除查询”DoCmd.SetWarnings True 打开系统提打开系统提示信息示信息Me!Text5.ControlSource = 销售记录添加到销售数据记录表销售记录添加到销售数据记录表中后,窗体各控件数值清空中后,窗体各控件数值清空Me!text7.ControlSource = Me!Text9.ControlSource = Me!Text11.ControlSource = Me!Combo3 = Me!Combo15 = Me!Text17 = Me!Combo3.SetFocusMe.Refresh 刷新表单刷新表单Else 如果用户选择了取消,则如果用户选择了取消,

54、则Me!Combo3.SetFocus Combo3控件获控件获得焦点,用户继续输入销售数据得焦点,用户继续输入销售数据End IfExit_Command25_Click: Exit SubErr_Command25_Click: MsgBox Err.Description Resume Exit_Command25_ClickEnd Sub5打开打开Command26(退出)按钮控件的属性对话框,(退出)按钮控件的属性对话框,设置设置“事件事件”选项卡中选项卡中“单击单击”属性,打开代码生成器,属性,打开代码生成器,输入以下代码:输入以下代码:6打开柜存信息按钮控件的属性对话框,设置打开

55、柜存信息按钮控件的属性对话框,设置“事件事件”选项卡中选项卡中“单击单击”属性,使用宏来打开一个窗体。在属性,使用宏来打开一个窗体。在“单击单击”属性右侧的文本框内单击后,选择属性右侧的文本框内单击后,选择“宏生成器宏生成器”,此时会打开宏生成器窗口。,此时会打开宏生成器窗口。 在第一行中的在第一行中的“操作操作”列中选择列中选择MsgBox,在下方的,在下方的“消息消息”中输入中输入“进入柜存记录查询进入柜存记录查询”,在,在“标题标题”中输中输入入“柜存信息柜存信息”,为加强程序的可读性,在,为加强程序的可读性,在“注释注释”列列中输入中输入“给出进入柜存数据查询的提示给出进入柜存数据查询

56、的提示”。 在第二行中的在第二行中的“操作操作”列中选择列中选择OpenForm,在下方的,在下方的“窗体名称窗体名称”中选择中选择“商品柜存数据查询商品柜存数据查询”(此查询应(此查询应事先做好),在事先做好),在“数据模式数据模式”中选择中选择“只读只读”,在,在“注注释释”列中输入列中输入“打开打开商品柜存数据查询商品柜存数据查询窗体窗体”。完。完成后如图成后如图7.11所示:所示: 完成后的宏生成器窗口完成后的宏生成器窗口 7.2 7.2 窗体的修饰窗体的修饰 7.2.1安排控件的空间布局安排控件的空间布局7.2.2 修改控件外观修改控件外观7.2.3 改善窗体的外观改善窗体的外观7.

57、2.17.2.1安排控件的空间布局安排控件的空间布局 在设计窗体时,当拖动字段到窗体上使其成为窗体的控在设计窗体时,当拖动字段到窗体上使其成为窗体的控件时,是不大可能精确地控制其放置位置、字段大小件时,是不大可能精确地控制其放置位置、字段大小的。这就需要我们修改各控件的大小、间距以及它们的。这就需要我们修改各控件的大小、间距以及它们的排列方式。的排列方式。 在在“窗体对象集合窗体对象集合”中新建一个窗体,并在其中新建一中新建一个窗体,并在其中新建一些控件对象。些控件对象。操作方法如下:操作方法如下:1.选取控件选取控件 在窗体的在窗体的“设计视图设计视图”中,单击控件中的任何位置,中,单击控件

58、中的任何位置,控件就会被选取。在控件就会被选取。在“设计视图设计视图”中,以任何一点开中,以任何一点开始,用鼠标左键拖出一个矩形区,则被矩形框碰到的始,用鼠标左键拖出一个矩形区,则被矩形框碰到的所有控件都将被选中。如果要选择的多个控件不相邻所有控件都将被选中。如果要选择的多个控件不相邻无法通过拖动鼠标来同时选择,则可按下无法通过拖动鼠标来同时选择,则可按下Shift键,然键,然后逐一单击要选择的每一个控件。后逐一单击要选择的每一个控件。 2.移动控件移动控件 很多控件都是由两个部分组成的,例如文本框很多控件都是由两个部分组成的,例如文本框控件,由标签和文本框组成。控件,由标签和文本框组成。如果

59、要同时移动控件和附加标签,应在选取控如果要同时移动控件和附加标签,应在选取控件之后,将鼠标移动到控件和附加标签的边框件之后,将鼠标移动到控件和附加标签的边框(不是移动点不是移动点)上,鼠标将会变成手掌图标。按上,鼠标将会变成手掌图标。按住鼠标左键不放,此时就可以同时拖动标签和住鼠标左键不放,此时就可以同时拖动标签和文本框了。文本框了。如果要分别移动控件的标签和文本框,则在选如果要分别移动控件的标签和文本框,则在选取控件之后,将鼠标移到其标签或文本框的左取控件之后,将鼠标移到其标签或文本框的左上角的最大的移动控点上。当鼠标变成手指图上角的最大的移动控点上。当鼠标变成手指图标时标时,就可以单独拖动

60、文本框或标签。就可以单独拖动文本框或标签。 3.缩放控件缩放控件 选取要调整大小的控件,将鼠标指向控件边缘的七个选取要调整大小的控件,将鼠标指向控件边缘的七个较小的控点上,当它变成某一方向的双向箭头时,按较小的控点上,当它变成某一方向的双向箭头时,按住鼠标,拖动控点住鼠标,拖动控点,就可以调整控件在此方向上的大就可以调整控件在此方向上的大小。小。 如果确定精确地调整一个控件的大小,可以在这个控如果确定精确地调整一个控件的大小,可以在这个控件的属性中修改它的宽度和高度值即可,数值以厘米件的属性中修改它的宽度和高度值即可,数值以厘米为单位。如图所示为某个控件的属性对话框。为单位。如图所示为某个控件

61、的属性对话框。 4.对齐控件对齐控件 在在Access的的“格式格式”菜单中有菜单中有“对齐对齐”、“大小大小”、“水平间距水平间距”和和“垂直间距垂直间距”等命令,它们是用来排等命令,它们是用来排列所选取的控件的。如图列所选取的控件的。如图7.14所示。所示。 首先选取要排列的各控件,再执行首先选取要排列的各控件,再执行“格式格式”菜单中的菜单中的各个命令。各个命令。 7.2.2 7.2.2 修改控件外观修改控件外观 排列完控件的布局,下面我们来介绍修改控件外观方法。排列完控件的布局,下面我们来介绍修改控件外观方法。1.修改标签属性修改标签属性 单击选取某个标签,选取标签后的工具栏单击选取某

62、个标签,选取标签后的工具栏 在这里可以修改标签中文字的字体,字号,样式,对齐在这里可以修改标签中文字的字体,字号,样式,对齐方式,颜色,下划线等属性;以及标签的边框线颜色,方式,颜色,下划线等属性;以及标签的边框线颜色,边框样式,边框特殊效果等属性。边框样式,边框特殊效果等属性。2.修改文本框控件的背景样式属性修改文本框控件的背景样式属性 选取一个文本框控件,单击工具栏上的选取一个文本框控件,单击工具栏上的“属性属性”按钮,按钮,在在“属性属性”对话框中单击对话框中单击“背景样式背景样式”属性下拉列表框,属性下拉列表框,我们可以看到其中有我们可以看到其中有“常规常规”,“透明透明”两个选择项。

63、两个选择项。还可以设定其背景色,特殊效果,边框样式,边框线颜还可以设定其背景色,特殊效果,边框样式,边框线颜色,边框线宽度等属性的值。色,边框线宽度等属性的值。 7.2.3 7.2.3 改善窗体的外观改善窗体的外观 为了美化窗体,我们可以为窗体加上直线为了美化窗体,我们可以为窗体加上直线或矩形,添加辅助图片、日期;还可以给或矩形,添加辅助图片、日期;还可以给窗体添加背景图片;并可以对滚动条、记窗体添加背景图片;并可以对滚动条、记录选定器、导航按钮及分隔线等进行设置;录选定器、导航按钮及分隔线等进行设置;除此之外,还可以将窗体运行后标题栏上除此之外,还可以将窗体运行后标题栏上的的“最大化最大化”、“最小化最小化”、“关闭关闭”按按钮去除,并设定窗体边框不可调整等等。钮去除,并设定窗体边框不可调整等等。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号