已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章窗体对象功能设计 教学目标 通过本章学习 使读者能够完成 迷你超市业务信息管理系统 的窗体对象功能设计 主要能力目标 能够掌握VBE的使用方法 能够掌握在窗体设计视图中进行窗体对象功能程序设计的方法 工作任务 上章我们掌握了Access数据库中窗体对象的界面设计方法 并创建了窗体对象的界面设计 本章完成 商品进货数据录入 和 商品销售录入 的窗体功能程序的设计 理论知识 一 VBA模块概述建立完用户窗体只是实现功能的一半 还需要为窗体中的控件编写VBA来真正实现其功能 VBA VisualBasicforApplications 是MicrosoftOffice系列的内置编程语言 功能强大 面向对象 同其他任何面向对象的编程语言一样 VBA里也有对象 属性 方法和事件 1 对象 就是代码和数据的组合 可将它看作单元 如表 窗体和文本框等是对象 每个对象由类来定义 2 属性 是指定义了对象的特性 如大小 颜色 对象状态等 3 方法 指对象能执行的动作 如刷新 获得焦点等 4 事件 是一个对象可以识别的动作 如鼠标单击或按下某键等 并且可以写某些代码针对此动作来做出响应 二 VBA编程基础1 VBA代码的实现方法所有VBA代码都以模块的方式保存在数据库里 创建模块有两种方法 1 作为模块对象 2 作为窗体和报表对象的一部分 1 模块对象创建模块对象 方法如下 1 单击 数据库 窗口的 模块 按钮可查看模块对象 2 单击 新建 按钮创建一个新模块 3 单击完 新建 按钮后 弹出MicrosoftVisualBasic代码设计窗口 在代码窗口中输入代码 以实现模块的功能 2 窗体和报表模块在窗体和报表类模块中 可以创建特别命名的事件过程来响应事件 可以通过在 设计 视图中打开窗体或报表 从 视图 菜单中选择 代码 来编辑该窗体或报表的模块 2 注释语句注释语句用于对程序或语句的功能给出解释和说明 在VBA程序中 注释内容被显示成绿色文本 可以通过两种方式添加注释 使用Rem语句 格式如下 Rem注释语句注释语句可以放在其他语句之后 但需要用冒号隔开 使用 格式如下 注释语句注释语句可以直接放在其他语句之后而无需分隔符 3 连写和换行程序语句一般一句一行 但有时候可能需要在一行中写几句代码 这时需要用到 来分开不同用途的几个语句 有时一句代码太 书写起来不方便 看上去也不美观 希望将一句代码分开写成几行 这时需要用到空格加下划线 4 赋值语句赋值语句指定一个值或表达式给变量 赋值语句通常会包含一个等号 语法格式如下 Let Set Let语句赋值 对应的数据类型为字符 数值类型等 Let通常可以省略Set语句赋值 对应的是复杂数据类型 可以是用户自定义的数据类型或对象类型的数据 5 常量和变量 1 声明常量和变量常量是指在程序过程中始终固定不变的量 VBA的常量包括数值常量 字符常量 日期常量 符号常量 固有常量和系统定义常量等 变量是指在程序运行过程期间取值可以变化的量 除了使用VBA代码来操作各种打开的窗体或报表的控件外 还可以在VBA代码中声明和使用指定的变量来临时存储值 计算结果或操作数据库中的任意对象 2 常量和变量的作用域常量或变量的作用域决定了这个常量或变量是只能在一个过程中使用 还是在一个模块中所有过程中使用 还是可以在数据库的所有过程中使用 如果希望一个变量能被数据库中所有过程 即公共作用域 所访问 需要在声明时加上关键字Public 也可以用关键字Private将一个变量的适用范围显式声明为模块内 私有作用域 6 数据类型VBA一般用变量保存计算的结果 进行属性的设置 指定方法的参数以及在过程间传递数值 为了提高执行效率 VBA为变量定义了一个数据类型的集合 VBA支持多种数据类型 下表列出了VBA程序中基本数据类型 以及它所占用的存储空间 取值范围和默认值 7 流程控制语句8 过程和函数过程和函数就是能执行特定功能的语句块 过程是用VBA语言的声明和语句组成的单元 作为一个命名单位的程序段 它可以包含一系列执行操作或计算值的语句和方法 函数也是过程 不过它是一种特殊的 能够返回值的Function过程 能否返回值 也是过程和函数之间最大的区别 过程在一个地方写了一个功能模块之后 如果要在其他地方实现同样的功能 不必将该代码重新写一遍 只要直接调用就行 当功能模块有错误时 不必在整个应用程序中查找错误 只需要改正过程和函数调试成功即可 9 事件过程事件过程用于响应由用户或系统引发的事件 当事件被触发时 应用程序启动相应的模块处理当前事件 然后等待下一个事件的发生 在Access系统中 不同对象可以触发的事件不同 主要有键盘事件 鼠标事件 窗口事件 对象事件和操作事件等 10 事件过程编写格式例如 单击 事件当在某对象上按下并释放鼠标左键时将触发该事件 其事件处理程序的定义格式如下 PrivateSub对象名 Click 过程代码 EndSub 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 商品进货数据录入 窗体页眉功能设计 在页眉中有 进货货号 文本框 进货日期 文本框 进货名称 文本框 规格 文本框 计量单位 文本框 进货单位 文本框 进货数量 文本框 收货人 组合框和 供货商 组合框 功能要求 当用户在 进货货号 文本框输入了货号后 系统会在 库存数据记录 表中查找该货号的商品 如果找不到 说明用户输入了一个新的货号 此时会弹出一个对话框提示 并在 库存数据记录 表中插入一个新记录 同时会将新的货号保存在新记录中 如果找到了该货号的商品 则在窗体页眉中的控件除了 收货日期 收货人 组合框和 供货商 组合框以外 其余的文本框中会显示出该商品的相应信息 这样既防止用户货号输入错误 也能减少用户输入信息的工作量 当然各个文本框的内容是可以被用户修改的 收货日期 会自动读取系统当前的日期 收货人 组合框和 供货商 组合框需要用户自己选择其内容 如果不选择 那么在最后保存数据时会有提示 演示操作步骤 代码讲解 PrivateSubText12 LostFocus 当 Text12 控件失去焦点时将执行的代码Me 货号 SetFocus本窗体中 贷号 控件获得焦点IfMe Text12 Then如果 Text12 控件的值为空字符串值 则执行MsgBox 请输入进货货号 弹出一个对话框 给出提示 请输入进货货号 Me Text12 SetFocus Text12 控件获得焦点 让用户重新输入进货货号Else否则 即用户已经输入了货号 DoCmd FindRecordMe Text12 True True查找数据源中第一个当前字段 货号 为 Text12 控件的值的记录IfMe 货号 Me Text12 Then如果货号字段的值不等于 Text12 控件的值 即没有找到记录 IfMsgBox 增加一种新商品 vbOKCancel 请确定 vbOKThen弹出一个提示对话框 增加一种新商品 并要求用户判断是否确定 如果用户点击了 请确定 按钮 则执行下面语句DoCmd GoToRecord acNewRec增加一条新记录 即增加一个新的货物 代码讲解 Me 货号 Me Text12 新记录中 货号字段的值为 Text12 控件的值Me 库存数量 0库存数据字段的值为 0 Else否则 用户选择取消 不增加一个新的货物 ExitSub退出程序 即不增加新记录EndIf结束IF语句EndIf结束IF语句 此时状态为货号字段的值等于 Text12 控件的值 即找到记录 Me Text20 Me 货名 将记录中货名字段的值赋值给 Text20 控件Me Text22 Me 规格 将记录中规格字段的值赋值给 Text22 控件Me Text24 Me 计量单位 将记录中计量单位字段的值赋值给 Text24 控件Me Text26 Me 进货单价 将记录中进货单价字段的值赋值给 Text26 控件Me Text28 0将 0 赋值给 Text28 控件 进货数量 Me Refresh刷新本窗体 刷新后 Text20 等控件的值就会显示出来EndIf结束IF语句EndSub结束程序 本窗体所有代码中涉及到的各控件名称列于下表 若读者所建各控件名称不同 请用正确的控件名称替换上述各控件名称 表 商品进货数据录入 窗体各控件名称列表 7 1 2 商品进货数据录入 窗体页脚功能设计 保存记录 按钮中我们需要添加代码 PrivateSubCommand35 Click OnErrorGoToErr Command35 ClickIfMe Text28 Value 0ThenMsgBox 请检查您的数据 ElseIfMsgBox 确定吗 vbOKCancel 请确定 vbOKThenMe 货名 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 DoMenuItemacFormBar acRecordsMenu acSaveRecord acMenuVer70Me RefreshElseExitSubEndIfEndIfExit Command35 Click ExitSubErr Command35 Click MsgBoxErr DescriptionResumeExit Command35 ClickEndSub 7 1 3 商品进货数据录入 窗体主体功能设计 为了数据的安全性 设定主体中各个控件为只读 选定主体中的各个控件 单击工具栏的 属性 按钮 进入 数据 选项卡 将 是否锁定 的属性值改为 是 注意 因为主体中的各个控件是与数据库绑定的 用户在修改了控件中的值以后 数据库中相应记录的值也会随之更改 这样是极不安全的 我们的目的是用户只能通过在窗体页眉中输入数据 并经过 保存记录 按钮进行保存之后 才能更改数据库中的数据 7 1 4 销售数据录入 窗体功能设计 功能讲解 必要功能 1 它能够实现销售数据的录入 因此它应当提供用户对商品 销售数据记录 表中所有字段数据的录入 2 在用户输入一种销售商品的信息之后 系统应当对该信息进行检查 如果在 柜存数据记录 表中没有该种商品 则需给出错误提示 3 在用户输入过程中应对输入信息的合法性作出判断 4 在向 销售数据记录 表中添加记录的同时 应在 柜存数据记录 表中的 柜存数量 字段值上减去相应的销售数量值 功能讲解 辅助功能 1 为简化用户输入 在打开窗体时即要求用户在 商品货号 组合框中进行选择 商品货号 组合框数据源为 柜存数据记录 表中的货号字段 用户选择后 系统会自动从 柜存数据记录 表中读取该商品的 商品名称 规格 计量单位 和 销售单价 等信息并显示 这些信息为只读显示 销售员 和 销售数量 则要求用户必须手工输入 2 为保证用户输入的正确性 在用户输入完一件商品的销售信息后 单击 确认 按钮 信息会添加到窗体中间的列表中 用户可进行检查 用户可以输入多条销售信息 在全部信息输入完成后单击 现金收讫 按钮 信息才会被写入 销售数据记录 表中 3 窗体中增加一个 柜存信息 按钮 以方便用户查询商品相关的柜存数据 4 在窗体下方有两个文本框 用于显示本次用户录入的商品销售数据之和 即本次录入的商品销售数量和销售总金额 操作演示及代码解读 表 销售数据录入 窗体各控件名称列表 7 1 5 销售数据录入 窗体页眉功能设计 代码讲解 IfIsNull Me Combo3 Then如果Combo3组合框值为空 即用户未选择商品货号MsgBox 请选择商品货号 弹出警告窗口 请选择商品货号 Me Combo3 SetFocusCombo3组合框获得焦点以便用户选择商品货号ElseMe Text5 ControlSource 货名 将表单中Text5文本框的ControlSource属性值设为 货名 这样Text5文本框便与货名字段绑定了Me text7 ControlSource 规格 Me Text9 ControlSource 计量单位 Me Text11 ControlSource 销售单价 Me Text19 SetFocusText19文本框获得焦点以便用户选择销售员DoCmd FindRecordMe Combo3 True True查找数据源中第一个当前字段 货号 等于 Combo3 控件的值的记录Me RefreshMe Combo15 SetFocusEndIf 演示操作步骤 更新销售记录 IfIsNull Me Combo15 ThenMsgBox 请选择商品货号 Me Combo15 SetFocusElseMe Text17 SetFocusEndIf在 事件 选项卡中的 不在列表中 项中选择 代码生成器 输入以下代码 Response acDataErrContinueMsgBox 请选择正确的售货员 确认按钮代码讲解 IfIsNull Me Text17 Then一步如果控件Text17的值为空 即用户未输入销售数量Me Text17 SetFocusMsgBox 请输入销售数量 ElseIfMe Text17 0Then如果控件Text17的值为0 即用户输入的销售数量非法Me Text17 SetFocusMsgBox 销售数量输入错误 ElseIfMe Text17 Me text20 0Then如果控件Text17的值大于控件Text20的值Me Text17 SetFocusMsgBox 您输入的销售数量超过了本商品的柜存数量 ElseIfMe Text17 0Then如果控件Text17的值小于0 由于主体中子窗体内的临时表禁用户进行删除操作 所以用户可输入负数来对冲错误的销售记录IfMsgBox 您输入的销售数量是负值 Chr 10 负的销售数量可用于退货处理 Chr 10 确实要对冲错误的销售记录吗 vbOKCancel 请确认 vbCancelThen Me Text17 SetFocus如果用户选择否则焦点回到Text17上Else如果用户确定要对冲销售记录Me 销售数据记录查询子窗体 SetFocus窗体主体中的子窗体获得焦点DoCmd GoToRecord acNewRec子窗体中的临时表添加一条新记录Me 销售数据记录查询子窗体 货号 Me Combo3 对子窗体字段进行赋值Me 销售数据记录查询子窗体 货名 Me Text5 Me 销售数据记录查询子窗体 规格 Me text7 Me 销售数据记录查询子窗体 计量单位 Me Text9 Me 销售数据记录查询子窗体 销售单价 Me Text11 Me 销售数据记录查询子窗体 销售数量 Me Text17 Me 销售数据记录查询子窗体 销售日期 Me Text13 Me 销售数据记录查询子窗体 销售人员 Me Combo15 Me text20 Me text20 Me Text17 修改柜存数量 保证柜存数据表中柜存数量字段数据的正确性Me RefreshMe Text22 Me 销售数据记录查询子窗体 Text28 将子窗体中的Text28控件的值赋值给窗体页脚中的Text22控件Me Text24 Me 销售数据记录查询子窗体 Text29 Me RefreshMe Combo3 SetFocusEndIf ElseMe 销售数据记录查询子窗体 SetFocusDoCmd GoToRecord acNewRecMe 销售数据记录查询子窗体 货号 Me Combo3 Me 销售数据记录查询子窗体 货名 Me Text5 Me 销售数据记录查询子窗体 规格 Me text7 Me 销售数据记录查询子窗体 计量单位 Me Text9 Me 销售数据记录查询子窗体 销售单价 Me Text11 Me 销售数据记录查询子窗体 销售数量 Me Text17 Me 销售数据记录查询子窗体 销售日期 Me Text13 Me 销售数据记录查询子窗体 销售人员 Me Combo15 Me text20 Me text20 Me Text17 Me RefreshMe Text22 Me 销售数据记录查询子窗体 Text28 Me Text24 Me 销售数据记录查询子窗体 Text29 Me RefreshMe Combo3 SetFocusEndIfEndIfEndIfEndIf 7 1 6 销售数据录入 窗体主体功能设计 在窗体主体中加入子窗体 销售数据记录查询子窗体 该窗体的数据源是名为 销售数据记录查询临时表 的查询 1 创建 销售数据临时表 表中有以下字段 销售序列号 货号 货名 规格 计量单位 销售单价 销售数量 销售日期 销售人员 2 创建 销售数据记录查询临时表 查询 并增加一个字段 字段名为 销售金额 销售记录临时表 销售单价 销售记录临时表 销售数量 查询的设计视图如图所示 演示操作步骤 销售数据记录查询临时表 查询设计视图 3 创建 销售数据记录查询子窗体 子窗体设计视图如图所示 图 销售数据记录查询子窗体 设计视图 子窗体的数据源为 SELECTDISTINCTROW销售数据记录查询临时表 FROM销售数据记录查询临时表 设置窗体主体中所有的文本框控件的属性对话框中 数据 选项卡内 是否锁定 属性值为 是 打开窗体页脚中的Text28文本框的属性对话框 设置 数据 选项卡中 控件来源 属性值为 Sum 销售记录临时表 销售数量 打开Text29文本框的属性对话框 设置 数据 选项卡中 控件来源 属性值为 Sum 销售记录临时表 销售数量 销售记录临时表 销售单价 PrivateSubCommand26 Click OnErrorGoToErr Command26 ClickDoCmd SetWarningsFalseDoCmd OpenQuery 销售记录临时表删除查询 acViewNormal acReadOnlyDoCmd SetWarningsTrueDoCmd CloseExit Command26 Click ExitSubErr Command26 Click MsgBoxErr DescriptionResumeExit Command26 ClickEndSub 4 将 销售数据记录查询子窗体 添加到 销售数据录入 窗体的主体中 设置子窗体属性 将 数据 选项卡中的 允许删除 项设置为 否 注意 将主体中各控件设为锁定 而子窗体设为不允许删除 是为了防止用户直接修改其数据从而造成销售数据录入时的混乱 7 1 7 销售数据录入 窗体页脚功能设计 窗体页脚中有两个文本框控件和三个按钮控件 操作步骤 包含准备工作 如下 1 创建 销售记录临时表追加查询 其设计视图如图所示 其数据源为 销售记录临时表 追加的目的表为 销售数据记录 表 查询执行后将把 销售记录临时表 中的数据添加到 销售数据记录 表中 销售记录临时表追加查询 设计视图 2 创建 销售记录临时表删除查询 其设计视图如图所示 查询执行后将删除 销售记录临时表 中所有的记录 销售记录临时表删除查询 设计视图 3 设置好相应地大小及位置 4 打开Command25 现金收讫 按钮控件的属性对话框 设置 事件 选项卡中 单击 属性 打开代码生成器 输入以下代码 右侧斜体文字为代码的说明 不可以输入 PrivateSubCommand25 Click OnErrorGoToErr Command25 ClickIfMsgBox 您确定要将这些销售数据输入销售记录表中吗 vbOKCancel 请确认 vbOKThen弹出对话框要求用户确认现金已收讫 如果用户确认 则DoCmd SetWarningsFalse屏蔽系统提示信息Me Text22 0文本框值归零Me Text24 0 DoCmd OpenQuery 销售记录临时表追加查询 acViewNormal acReadOnly执行 销售记录临时表追加查询 DoCmd OpenQuery 销售记录临时表删除查询 acViewNormal acReadOnly执行 销售记录临时表删除查询 DoCmd SetWarningsTrue打开系统提示信息Me Text5 ControlSource 销售记录添加到销售数据记录表中后 窗体各控件数值清空Me text7 ControlSource Me Text9 ControlSource Me Text11 ControlSource Me Combo3 Me Combo15 Me Text17 Me Combo3 SetFocusMe Refresh刷新表单Else如果用户选择了取消 则 Me Combo3 SetFocusCombo3控件获得焦点 用户继续输入销售数据EndIfExit Command25 Click ExitSubErr Command25 Click MsgBoxErr DescriptionResumeExit Command25 ClickEndSub5 打开Command26 退出 按钮控件的属性对话框 设置 事件 选项卡中 单击 属性 打开代码生成器 输入以下代码 6 打开柜存信息按钮控件的属性对话框 设置 事件 选项卡中 单击 属性 使用宏来打开一个窗体 在 单击 属性右侧的文本框内单击后 选择 宏生成器 此时会打开宏生成器窗口 在第一行中的 操作 列中选择MsgBox 在下方的 消息 中输入 进入柜存记录查询 在 标题 中输入 柜存信息 为加强程序的可读性 在 注释 列中输入 给出进入柜存数据查询的提示 在第二行中的 操作 列中选择OpenForm 在下方的 窗体名称 中选择 商品柜存数据查询 此查询应事先做好 在 数据模式 中选择 只读 在 注释 列中输入 打开 商品柜存数据查询 窗体 完成后如图7 11所示 完成后的宏生成器窗口 7 2窗体的修饰 7 2 1安排控件的空间布局7 2 2修改控件外观7 2 3改善窗体的外观 7 2 1安排控件的空间布局 在设计窗体时 当拖动字段到窗体上使其成为窗体的控件时 是不大可能精确地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床路径与责任界定结合-洞察与解读
- 赢在执行之构建企业执行力体系课件
- 2025年农产品展销会合作协议
- 2025年农产品网络销售合作协议合同
- 2025年农产品供应合同协议
- 2025年CCAA服务认证基础考试练习题及解析答案
- 2024年公路水运工程施工企业安全生产管理人员试题及答案
- 打造双十二盛典
- 仓库火灾应急预案演练方案
- 2025国家电投集团中国电力参考题库附带答案详解
- 急性心肌梗死护理管理指南
- 铝板板材外墙施工技术交底
- 2025下半年四川省自然资源投资集团社会招聘考试笔试参考题库附答案解析
- 2025年入党积极分子发展对象考试通关试卷提供答案解析含完整答案详解【典优】
- 通信学习:中兴通讯新产品方案介绍
- 悬灌连续梁张拉压浆施工方案
- 最新商业计划书标准模版(doc17)
- 京改版八年级物理上册2.2 学生实验:测量质量(有答案)
- 马术俱乐部计划书马场运营项目商业计划书写作模板-融资招商
- 建筑消防设施维护保养记录表
- 浙江智能机器人项目建议书(模板参考)
评论
0/150
提交评论