窗体对象功能设计.ppt
《窗体对象功能设计.ppt》由会员分享,可在线阅读,更多相关《窗体对象功能设计.ppt(46页珍藏版)》请在三一办公上搜索。
1、第7章 窗体对象功能设计,教学目标:通过本章学习,使读者能够完成“迷你超市业务信息管理系统”的窗体对象功能设计,主要能力目标:能够掌握VBE的使用方法。能够掌握在窗体设计视图中进行窗体对象功能程序设计的方法。工作任务:上章我们掌握了Access数据库中窗体对象的界面设计方法,并创建了窗体对象的界面设计,本章完成“商品进货数据录入”和“商品销售录入”的窗体功能程序的设计。,理论知识,一、VBA模块概述 建立完用户窗体只是实现功能的一半,还需要为窗体中的控件编写VBA来真正实现其功能。VBA(Visual Basic for Applications)是Microsoft Office系列的内置编
2、程语言,功能强大,面向对象,同其他任何面向对象的编程语言一样,VBA里也有对象、属性、方法和事件。1.对象:就是代码和数据的组合,可将它看作单元,如表、窗体和文本框等是对象。每个对象由类来定义。2.属性:是指定义了对象的特性,如大小、颜色、对象状态等。3.方法:指对象能执行的动作,如刷新、获得焦点等。4.事件:是一个对象可以识别的动作,如鼠标单击或按下某键等,并且可以写某些代码针对此动作来做出响应。,二、VBA编程基础1、VBA代码的实现方法 所有VBA代码都以模块的方式保存在数据库里。创建模块有两种方法:(1)作为模块对象(2)作为窗体和报表对象的一部分(1)模块对象 创建模块对象,方法如下
3、:1)单击“数据库”窗口的“模块”按钮可查看模块对象;2)单击“新建”按钮创建一个新模块;3)单击完“新建”按钮后,弹出Microsoft Visual Basic代码设计窗口,在代码窗口中输入代码,以实现模块的功能。(2)窗体和报表模块 在窗体和报表类模块中,可以创建特别命名的事件过程来响应事件。可以通过在“设计”视图中打开窗体或报表,从“视图”菜单中选择“代码”来编辑该窗体或报表的模块。,2、注释语句 注释语句用于对程序或语句的功能给出解释和说明。在VBA程序中,注释内容被显示成绿色文本。可以通过两种方式添加注释:使用Rem语句,格式如下:Rem 注释语句 注释语句可以放在其他语句之后,但
4、需要用冒号隔开。使用“”,格式如下:注释语句 注释语句可以直接放在其他语句之后而无需分隔符。3、连写和换行 程序语句一般一句一行,但有时候可能需要在一行中写几句代码,这时需要用到“:”来分开不同用途的几个语句。有时一句代码太,书写起来不方便,看上去也不美观,希望将一句代码分开写成几行,这时需要用到空格加下划线“_”。,4、赋值语句 赋值语句指定一个值或表达式给变量。赋值语句通常会包含一个等号“=”语法格式如下:Let=Set=Let语句赋值,对应的数据类型为字符、数值类型等,Let通常可以省略 Set语句赋值,对应的是复杂数据类型,可以是用户自定义的数据类型或对象类型的数据。5、常量和变量(1
5、)声明常量和变量常量是指在程序过程中始终固定不变的量。VBA的常量包括数值常量、字符常量、日期常量、符号常量、固有常量和系统定义常量等。变量是指在程序运行过程期间取值可以变化的量,除了使用VBA代码来操作各种打开的窗体或报表的控件外,还可以在VBA代码中声明和使用指定的变量来临时存储值、计算结果或操作数据库中的任意对象。,(2)常量和变量的作用域 常量或变量的作用域决定了这个常量或变量是只能在一个过程中使用,还是在一个模块中所有过程中使用,还是可以在数据库的所有过程中使用。如果希望一个变量能被数据库中所有过程(即公共作用域)所访问,需要在声明时加上关键字Public。也可以用关键字Privat
6、e将一个变量的适用范围显式声明为模块内(私有作用域)。6、数据类型 VBA一般用变量保存计算的结果、进行属性的设置、指定方法的参数以及在过程间传递数值。为了提高执行效率,VBA为变量定义了一个数据类型的集合,VBA支持多种数据类型,下表列出了VBA程序中基本数据类型,以及它所占用的存储空间、取值范围和默认值。,7、流程控制语句8、过程和函数 过程和函数就是能执行特定功能的语句块。过程是用VBA语言的声明和语句组成的单元,作为一个命名单位的程序段,它可以包含一系列执行操作或计算值的语句和方法。函数也是过程,不过它是一种特殊的、能够返回值的Function过程。能否返回值,也是过程和函数之间最大的
7、区别。过程在一个地方写了一个功能模块之后,如果要在其他地方实现同样的功能,不必将该代码重新写一遍,只要直接调用就行。当功能模块有错误时,不必在整个应用程序中查找错误,只需要改正过程和函数调试成功即可。,9、事件过程事件过程用于响应由用户或系统引发的事件。当事件被触发时,应用程序启动相应的模块处理当前事件,然后等待下一个事件的发生。在Access系统中,不同对象可以触发的事件不同,主要有键盘事件、鼠标事件、窗口事件、对象事件和操作事件等。10、事件过程编写格式例如:“单击”事件 当在某对象上按下并释放鼠标左键时将触发该事件,其事件处理程序的定义格式如下:Private Sub 对象名_Click
8、()过程代码 End Sub,7.1 窗体的常用控件与编程设计,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“商品进货数据录入”窗体页眉功能设计,在页眉中有“进货货号”文本框、“进货日期”文本框、“进货名称”文本框、“规格”文本框、“计量单位”文本框、“进货单位”文本框、“进货数量
9、”文本框,“收货人”组合框和“供货商”组合框。功能要求:当用户在“进货货号”文本框输入了货号后,系统会在“库存数据记录”表中查找该货号的商品,如果找不到,说明用户输入了一个新的货号,此时会弹出一个对话框提示,并在“库存数据记录”表中插入一个新记录,同时会将新的货号保存在新记录中;如果找到了该货号的商品,则在窗体页眉中的控件除了“收货日期”、“收货人”组合框和“供货商”组合框以外,其余的文本框中会显示出该商品的相应信息。这样既防止用户货号输入错误,也能减少用户输入信息的工作量。当然各个文本框的内容是可以被用户修改的。“收货日期”会自动读取系统当前的日期。“收货人”组合框和“供货商”组合框需要用户
10、自己选择其内容,如果不选择,那么在最后保存数据时会有提示。,演示操作步骤,代码讲解:,Private Sub Text12_LostFocus()当“Text12”控件失去焦点时将执行的代码Me!货号.SetFocus 本窗体中“贷号”控件获得焦点If Me!Text12=Then 如果“Text12”控件的值为空字符串值,则执行MsgBox(请输入进货货号!)弹出一个对话框,给出提示:请输入进货货号!Me!Text12.SetFocus“Text12”控件获得焦点,让用户重新输入进货货号Else 否则(即用户已经输入了货号)DoCmd.FindRecord Me!Text12,True,Tr
11、ue 查找数据源中第一个当前字段(货号)为“Text12”控件的值的记录If Me!货号 Me!Text12 Then 如果货号字段的值不等于“Text12”控 件的值(即没有找到记录)If MsgBox(增加一种新商品?,vbOKCancel,请确定!)=vbOK Then 弹出一个 提示对话框“增加一种新商品?”,并要求用户判断是否确定。如果用户点击了“请确定”按钮,则执行下面语句 DoCmd.GoToRecord,acNewRec 增加一条新记录,即增加一个新的货物,代码讲解:,Me!货号=Me!Text12 新记录中,货号字段的值为“Text12”控件的值 Me!库存数量=0 库存数据
12、字段的值为“0”Else 否则(用户选择取消,不增加一个新的货物)Exit Sub 退出程序,即不增加新记录 End If 结束IF语句End If 结束IF语句。此时状态为货号字段的值等于“Text12”控件的值(即找到记录)Me!Text20=Me!货名 将记录中货名字段的值赋值给“Text20”控件Me!Text22=Me!规格 将记录中规格字段的值赋值给“Text22”控件Me!Text24=Me!计量单位 将记录中计量单位字段的值赋值给“Text24”控件Me!Text26=Me!进货单价 将记录中进货单价字段的值赋值给“Text26”控件Me!Text28=0 将“0”赋值给“Te
13、xt28”控件(进货数量)Me.Refresh 刷新本窗体,刷新后“Text20”等控件的值就会显示出来End If 结束IF语句End Sub 结束程序,本窗体所有代码中涉及到的各控件名称列于下表(若读者所建各控件名称不同,请用正确的控件名称替换上述各控件名称):,表“商品进货数据录入”窗体各控件名称列表,7.1.2“商品进货数据录入”窗体页脚功能设计,“保存记录”按钮中我们需要添加代码。Private Sub Command35_Click()On Error GoTo Err_Command35_ClickIf Me!Text28.Value=0 ThenMsgBox(请检查您的数据!)
14、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,演示操作步骤,代码讲解:,DoCmd.DoMenuItem acFormBar,acRecordsMenu,acSaveRecord,acMenuVer70 Me.RefreshElse Exit Sub End
15、 IfEnd IfExit_Command35_Click:Exit SubErr_Command35_Click:MsgBox Err.Description Resume Exit_Command35_Click End Sub,7.1.3“商品进货数据录入”窗体主体功能设计,为了数据的安全性,设定主体中各个控件为只读。选定主体中的各个控件,单击工具栏的“属性”按钮,进入“数据”选项卡,将“是否锁定”的属性值改为“是”。注意:因为主体中的各个控件是与数据库绑定的,用户在修改了控件中的值以后,数据库中相应记录的值也会随之更改。这样是极不安全的。我们的目的是用户只能通过在窗体页眉中输入数据,并
16、经过“保存记录”按钮进行保存之后,才能更改数据库中的数据。,7.1.4“销售数据录入”窗体功能设计,功能讲解:,必要功能:1它能够实现销售数据的录入,因此它应当提供用户对商品“销售数据记录”表中所有字段数据的录入;2在用户输入一种销售商品的信息之后,系统应当对该信息进行检查,如果在“柜存数据记录”表中没有该种商品,则需给出错误提示;3在用户输入过程中应对输入信息的合法性作出判断;4在向“销售数据记录”表中添加记录的同时,应在“柜存数据记录”表中的“柜存数量”字段值上减去相应的销售数量值。,功能讲解:,辅助功能:1为简化用户输入,在打开窗体时即要求用户在“商品货号”组合框中进行选择,“商品货号”
17、组合框数据源为“柜存数据记录”表中的货号字段;用户选择后,系统会自动从“柜存数据记录”表中读取该商品的“商品名称”、“规格”、“计量单位”和“销售单价”等信息并显示(这些信息为只读显示);“销售员”和“销售数量”则要求用户必须手工输入;2为保证用户输入的正确性,在用户输入完一件商品的销售信息后,单击“确认”按钮,信息会添加到窗体中间的列表中,用户可进行检查;用户可以输入多条销售信息;在全部信息输入完成后单击“现金收讫”按钮,信息才会被写入“销售数据记录”表中;3窗体中增加一个“柜存信息”按钮,以方便用户查询商品相关的柜存数据;4在窗体下方有两个文本框,用于显示本次用户录入的商品销售数据之和,即
18、本次录入的商品销售数量和销售总金额。,操作演示及代码解读:,表“销售数据录入”窗体各控件名称列表,7.1.5“销售数据录入”窗体页眉功能设计,代码讲解:If IsNull(Me!Combo3)Then 如果Combo3组合框值为空,即用户未选择商品货号MsgBox(请选择商品货号!)弹出警告窗口“请选择商品货号!”Me!Combo3.SetFocus Combo3组合框获得焦点以便用户选择商品货号ElseMe!Text5.ControlSource=货名 将表单中Text5文本框的ControlSource属性值设为“货名”,这样Text5文本框便与货名字段绑定了Me!text7.Contro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 窗体 对象 功能设计

链接地址:https://www.31ppt.com/p-6230098.html