信息管理系统实验指导书56.docx
《信息管理系统实验指导书56.docx》由会员分享,可在线阅读,更多相关《信息管理系统实验指导书56.docx(31页珍藏版)》请在冰豆网上搜索。
信息管理系统实验指导书56
实验五宏
实验类型:
验证性实验课时:
2学时指导教师:
时间:
年月日课次:
第节教学周次:
第周
一、实验目的
1.掌握宏的创建
2.掌握宏的运行
二、实验内容及要求
1.创建宏
2.运行宏
宏的创建、运行
1.创建并运行只有一个操作的宏
要求:
在“人事管理.accdb”数据库中创建宏,功能是打印预览“南航人文学院员工工资发放记录报表”。
操作步骤:
(1)在“人事管理.accdb”数据库中,选择“创建”选项卡——“宏与代码”组,单击“宏”按钮
,进入宏设计窗口。
图5-1宏设计器组合框及操作参数的设置
(2)在“添加新操作”列第1行选择“OpenReport”操作,“操作参数”区中的“报表名称”选“南航人文学院员工工资发放记录报表”,“视图”选择“打印预览”。
如图5-1所示。
(3)单击“保存”按钮,“宏名称”文本框中输入“预览报表宏”。
(4)单击“运行”按钮,运行宏。
2.创建并运行操作序列宏
要求:
创建宏,功能是打开“员工信息”表,打开表前要发出“嘟嘟”声;再关闭“员工信息”表,关闭前要用消息框提示操作。
操作步骤:
(1)在“人事管理.accdb”数据库中,选择“创建”选项卡——“代码与宏”组,单击“宏”按钮,进入宏设计窗口。
(2)在“添加新操作”列的第1行,选择“Beep”操作。
(3)在“添加新操作”列的第2行,选择“OpenTable”操作,“操作参数”区中的“表名称”选择“员工信息”表。
(4)在“添加新操作”列的第3行,选择“MsgBox”操作。
“操作参数”区中的“消息”框中输入“关闭表吗?
”。
(5)在“添加新操作”列的第4行,选择“RunMenuCommand”操作,再选择“Close”操作如图5-2所示。
图5-2宏设计视图
(6)单击“保存”按钮,“宏名称”文本框中输入“操作序列宏”。
(7)单击“运行”按钮,运行宏。
3.创建并运行条件操作宏
在“人事管理”数据库中,创建一个登录验证宏,使用命令按钮运行该宏时,对用户所输入的密码进行验证,只有输入的密码为“123456”才能打开启动窗体,否则,弹出消息框,提示用户输入的系统密码错误。
操作步骤如下:
(1)首先使用窗体设计视图,创建一个外围登录窗体。
外围登录窗体包括一个文本框,用来输入密码。
一个命令按钮用来验证密码(此命令按钮留待后面再进行创建)以及窗体标题,该登录窗体的创建结果,如图5-3所示。
图5-3登录窗体设计视图及“确定”按钮单击事件选择
(2)在“创建”选项卡的“宏与代码”组中,单击“宏”按钮,打开“宏设计器”。
(3)在添加新操作组合框中,输人“IF”,单击条件表达式文本框右侧的按钮。
(4)打开“表达式生成器”对话框,在“表达式元素”窗格中,展开“人事管理/Forms/所有窗体”,选中“外围登录”窗体。
在“表达式类别”窗格中,双击“Text0”,在表达式值中输入“<>123456”,如图5-4所示。
单击“确定”按钮,返回到“宏设计器”中。
图5-4“表达式设计器”对话框
(5)在“添加新操作”组合框中单击下拉箭头,在打开的列表中选择“MessageBox”,在“操作参数”窗格的“消息”行中输人“密码错误!
请重新输人系统密码!
”,在类型组合框中,选择“警告!
”,其他参数默认。
如图5-7所示
(6)重复步骤
(2)和(3),设置第2个IF。
在IF的条件表达式中输人条件:
[Forms]!
[外围登录]!
[Text0]="123456"”。
在添加新操作组合框中,选择“Closewindows",其他参数分别为“窗体、验证密码、否”。
设计结果如图5-5所示。
(7)在添加新操作中,选择“OpenForm”,各参数分别为“员工信息、窗体、普通”,设置的结果,如图5-5所示。
保存宏名称为“外围登录验证”。
(8)打开“验证密码”窗体切换到设计视图中,选中“确定”按钮,在属性窗口中“事件”选项卡,“单击”项选“登陆验证”。
如图5-7所示。
图5-5登录验证宏的设计视图
(9)选“窗体”对象,打开“登录窗体”窗体,分别输入正确的密码、错误的密码,单击“确定”按钮,查看结果。
4.创建自动运行宏
要求:
当用户打开数据库后,系统弹出登录窗口。
操作步骤:
(1)在“创建”选项卡的“宏与代码”组中,单击“宏”按钮,打开“宏设计器”。
(2)在“添加新操作”组合框中单击下拉箭头,在打开的列表中选择“openform”,在“窗体名称”参数中选择“登录”,其他参数默认。
如图5-6所示
(3)保存宏,宏名为“AutoExec”。
(4)关闭数据库。
(5)重新打开“人事管理.accdb”数据库,宏自动执行,弹出登录窗口。
图5-6自动运行宏设计视图
实验六模块与VBA程序设计
实验类型:
验证性实验课时:
4学时指导教师:
时间:
年月日课次:
第节教学周次:
第周
一、实验目的
1.掌握建立标准模块及窗体模块的方法
2.熟悉VBA开发环境及数据类型
3.掌握常量、变量、函数及其表达式的用法
4.掌握程序设计的顺序结构、分支结构、循环结构
5.了解VBA的过程及参数传递
6.掌握变量的定义方法和不同的作用域和生存期
二、实验内容及要求
1.创建标准模块与窗体模块
2.常量、变量、函数及表达式的使用
3.数据类型、输入、输出函数及程序的顺序结构
4.选择结构if语句及SelectCase语句的使用
5.DoWhile循环、For循环语句的使用
6.VBA过程、过程的参数传递、变量的作用域和生存期
三、实验步骤
案例一:
创建公用模块
1.在“人事管理.accdb”数据库中创建一个通用模块以建立数据库的连接和用户登录等,保存为“公共模块”。
操作步骤:
(1)打开“人事管理.accdb”数据库,选择“创建”选项卡——“宏与代码”组——单击“模块”按钮,打开VBA编辑器。
如图6-1所示。
图6-1打开VBA编辑器
(2)在代码窗口中输入如下内容:
OptionCompareDatabase
OptionExplicit
PubliccheckAsBoolean
‘通过字符串StrQuery所引用的SQL语句返回一个ADO.Recordset对象
PublicFunctionGetRs(ByValStrQueryAsString)AsADODB.Recordset
DimrsAsNewADODB.Recordset
DimconnAsNewADODB.Connection
OnErrorGoToGetRS_Error
Setconn=CurrentProject.Connection
rs.OpenStrQuery,conn,adOpenKeyset,adLockOptimistic
SetGetRs=rs
GetRS_Exit:
Setrs=Nothing
Setconn=Nothing
ExitFunction
GetRS_Error:
MsgBox(Err.Description)
ResumeGetRS_Exit
EndFunction
(3)单击“保存”按钮,输入模块名“公共模块”,单击“确定”按钮即可。
案例二:
编写“登录”窗体代码
1.给窗体添加“加载”事件过程
操作步骤:
(1)用设计视图打开“登录”窗体。
(2)设置.窗体的记录源。
在窗体的“属性表”窗格中,单击“所选内容的类型:
窗体”下拉列表框,选择“窗体”选项。
切换到“数据”选项卡,在“记录源”行的下拉列表框中选择“管理员”表,如图6-2所示。
图6-2打开登录窗体的属性表
(3)将“属性表”中的选项卡切换到“事件”,在“加载”行中选中“事件过程”选项,并单击右边的省略号按钮,如图6-3所示。
图6-3给窗体添加“加载”事件过程
(4)进入VBA编辑器,自动新建一个名称为“Form_Load()”的Sub过程。
输入如下VBA代码,为窗体添加“加载”事件过程。
PrivateSubForm_Load()
'最小化数据库窗体并初始化该窗体.
OnErrorGoToForm_Open_Err
DoCmd.SelectObjectacForm,"主切换面板",True
DoCmd.Minimize
check=False
Form_Open_Exit:
ExitSub
Form_Open_Err:
MsgBoxErr.Description
ResumeForm_Open_Exit
EndSub
(5)保存后,单击工具栏中的“视图MicrosoftofficeAccess”按钮
,返回Access。
2.为“OK”按钮添加事件过程
操作步骤:
(1)在“登录”窗体的“设计视图”中单击“确定”按钮,以选中OK按钮控件。
(2)将OK按钮控件的属性表窗格切换到“事件”选项卡,在“单击”行中选择“事件过程”选项,并单击右边的省略号按钮,如图6-4所示。
图6-4给OK按钮添加事件过程
(3)系统进入VBA编辑器,并自动新建一个名称为“OK_Click()”的Sub过程。
在代码窗口中输入以下VBA代码:
PrivateSubOK_Click()
OnErrorGoToErr_OK_Click
DimstrSQLAsString
DimrsAsNewADODB.Recordset
IfIsNull(Me.UserName)OrMe.UserName=""Then
DoCmd.Beep
MsgBox("请输入用户名称!
")
ElseIfIsNull(Me.Password)OrMe.Password=""Then
DoCmd.Beep
MsgBox("请输入密码!
")
Else
strSQL="SELECT*FROM管理员WHERE用户名='"&Me.UserName&"'and密码='"&Me.Password&"'"
Setrs=GetRs(strSQL)
Ifrs.EOFThen
DoCmd.Beep
MsgBox("用户名或密码错误!
")
Me.UserName=""
Me.Password=""
Me.UserName.SetFocus
ExitSub
Else
DoCmd.Close
check=True
DoCmd.OpenForm("主切换面板")
EndIf
EndIf
Setrs=Nothing
Exit_OK_Click:
ExitSub
Err_OK_Click:
MsgBox(Err.Description)
Debug.PrintErr.Description
ResumeExit_OK_Click
EndSub
(4)保存该VBA编码,就为OK按钮控件添加了“单击”事件过程。
3.为“Cancel”按钮添加事件过程。
操作步骤:
(1)在“登录”窗体的“设计视图”中单击“取消”按钮,以选中Cancel按钮控件。
(2)将Cancel按钮控件的属性表窗格切换到“事件”选项卡,在“单击”行中选择“事件过程”选项,并单击右边的省略号按钮,如图6-5所示。
(3)系统进入VBA编辑器,并自动新建一个名称为“Cancel_Click()”的Sub过程。
在代码窗口中输入以下VBA代码:
PrivateSubCancel_Click()
check=False
DoCmd.Close
EndSub
(4)保存该VBA编码,就为Cancel按钮控件添加了“单击”事件过程。
图6-5给Cancel按钮添加事件过程
案例三:
编写“主切换面板”窗体代码
1.为“主切换面板”窗体上的“Btn1”按钮控件添加“单击”事件过程
操作步骤:
(1)选择“主切换面板”窗体对象,右键单击选择“设计视图”命令,进入该窗体的设计视图。
(2)在“属性表”空格中,选择“数据”选项卡,单击“记录源”行的小箭头,在弹出的下拉列表中选择“WwitchboardItems”表,如图6-6所示。
图6-6设置主切换面板窗体的记录源
(3)单击btn1按钮,选择“属性表”中“事件”选项卡,在“单击”行的属性框中输入“=HandleButtonClick
(1)”,以添加“btn1”按钮“单击事件”的响应程序。
依次为btn2-btn8按钮控件设置单击属性“=HandleButtonClick
(2)”到“=HandleButtonClick(8)”。
(4)在该窗体的设计视图“主体”节任意位置右击,弹出快捷菜单,选择“事件生成器”。
如图6-7所示。
图6-7选择事件生成器
(5)在“选择生成器”的对话框中选择“代码生成器”,单击“确定”后进入VBA编辑器,如图6-8所示。
图6-8选择代码生成器
(6)删除系统自动生成的“主体_Click()”过程代码,新建一个新的Function函数HandleButtonClick,代码如下:
PrivateFunctionHandleButtonClick(intbtnAsInteger)
'处理按钮click事件
ConstconCmdGotoSwitchboard=1
ConstconCmdNewForm=2
ConstconCmdOpenReport=3
ConstconCmdExitApplication=4
ConstconCmdRunMacro=8
ConstconCmdRunCode=9
ConstconCmdOpenPage=10
ConstconErrDoCmdCancelled=2501
DimrsAsADODB.Recordset
DimstrSQLAsString
OnErrorGoToHandleButtonClick_Err
Setrs=CreateObject("ADODB.Recordset")
strSQL="SELECT*FROM[SwitchboardItems]"
strSQL=strSQL&"WHERE[SwitchboardID]="&Me!
[SwitchboardID]&"AND[ItemNumber]="&intbtn
Setrs=GetRs(strSQL)
If(rs.EOF)Then
MsgBox"读取SwitchboardItems表时出错。
"
rs.Close
Setrs=Nothing
ExitFunction
EndIf
SelectCasers!
[Command]
'进入另一个切换面板
CaseconCmdGotoSwitchboard
Me.Filter="[ItemNumber]=0AND[SwitchboardID]="&rs!
[Argument]
'打开一个新窗体
CaseconCmdNewForm
DoCmd.OpenFormrs!
[Argument]
'打开报表
CaseconCmdOpenReport
DoCmd.OpenReportrs!
[Argument],acPreview
'退出应用程序
CaseconCmdExitApplication
CloseCurrentDatabase
'运行宏.
CaseconCmdRunMacro
DoCmd.RunMacrors!
[Argument]
'运行代码.
CaseconCmdRunCode
Application.Runrs!
[Argument]
'打开一个数据存取页面
CaseconCmdOpenPage
DoCmd.OpenDataAccessPagers!
[Argument]
'未定义的选项.
CaseElse
MsgBox"未知选项。
"
EndSelect
'Closetherecordsetandthedatabase.
rs.Close
HandleButtonClick_Exit:
OnErrorResumeNext
Setrs=Nothing
ExitFunction
HandleButtonClick_Err:
If(Err=conErrDoCmdCancelled)Then
ResumeNext
Else
MsgBox"执行命令时出错。
",vbCritical
ResumeHandleButtonClick_Exit
EndIf
EndFunction
(7)单击保存按钮保存代码,完成“主切换面板”上“按钮”控件的“单击”消息事件。
2.为“主切换面板”窗体添加“成为当前”事件过程
操作步骤:
(1)选择“属性表”中“窗体”对象,在“事件”选项卡中选择“成为当前”,单击下拉列表框,选择“事件过程”选项,如图6-9所示。
图6-9选择成为当前属性
(2)单击“成为当前”右边的省略号按钮,进入VBA编辑器,系统自动建立一个“Form_Current()”过程,写入以下代码:
PrivateSubForm_Current()
'更新标题并显示列表.
Me.Caption=Nz(Me!
[ItemText],"")
Fillbtns
EndSub
(3)上述代码中的“Fillbtns”是另外一个过程,其功能是为实现“主切换面板”上的控件数量和控件标题等信息,代码如下:
PrivateSubFillbtns()
'显示切换框中的列表
'按钮数量.
ConstconNumButtonsAsInteger=8
DimrsAsNewADODB.Recordset
DimstrSQLAsString
DimintbtnAsInteger
Me!
[btn1].SetFocus
Forintbtn=2ToconNumButtons
Me("btn"&intbtn).Visible=False
Me("lbl"&intbtn).Visible=False
Nextintbtn
'打开表SwitchboardItems
strSQL="SELECT*FROM[SwitchboardItems]"
strSQL=strSQL&"WHERE[ItemNumber]>0AND[SwitchboardID]="&Me!
[SwitchboardID]
strSQL=strSQL&"ORDERBY[ItemNumber];"
Setrs=GetRs(strSQL)
If(rs.EOF)Then
Me!
[lbl1].Caption="此切换面板页上无项目。
"
Else
While(Not(rs.EOF))
Me("btn"&rs!
[ItemNumber]).Visible=True
Me("lbl"&rs!
[ItemNumber]).Visible=True
Me("lbl"&rs!
[ItemNumber]).Caption=rs!
[ItemText]
rs.MoveNext
Wend
EndIf
'关闭数据集合和数据库
rs.Close
Setrs=Nothing
EndSub
3.为“主切换面板”窗体添加“加载”事件过程
操作步骤:
(1)选择“属性表”中“窗体”对象,在“事件”选项卡中选择“加载”,单击下拉列表框,选择“事件过程”选项,如图6-10所示。
图6-10选择“加载”属性
(2)单击“加载”右边的省略号按钮,进入VBA编辑器,系统自动建立一个“Form_Load()”过程,写入以下代码:
PrivateSubForm_Load()
IfNotcheckThen
MsgBox("请先登录!
")
DoCmd.Close
DoCmd.OpenForm("登录")
EndIf
EndSub
4.为“主切换面板”窗体添加“打开”事件过程
操作步骤:
(1)选择“属性表”中“窗体”对象,在“事件”选项卡中选择“打开”,单击下拉列表框,选择“事件过程”选项,如图6-11所示。
图6-11选择“打开”属性
(2)单击“打开”右边的省略号按钮,进入VBA编辑器,系统自动建立一个“Form_Open()”过程,该过程使得用户在打开主切换面板时有默认的选择值,代码如下:
PrivateSubForm_Open(CancelAsInteger)
OnErrorGoToForm_Open_Err
'显示默认的选项.
Me.Filter="[ItemNumber]=0AND[Argument]='默认'"
Me.FilterOn=True
Form_Open_Exit:
ExitSub
Form_Open_Err:
MsgBoxErr.Description
ResumeForm_Open_Exit
EndSub
案例四:
编写“员工考勤记录查询”窗体代码
1.向“员工考勤记录查询”窗体添加“加载”事件过程
操作步骤:
(1)打开“员工考勤记录查询”窗体,切换到“设计视图”,如图6-12所示。
图6-12用“设计视图”打开“员工考勤记录查询”窗体
(2)选择“属性表”中“窗体”类型,单击“数据”选项卡,在“记录源”行的下拉列表框中选择“员工考勤记录查询”选项,如图6-13所示。
图6-13设定“记录源”属性
(3)切换属性表选项卡到“事件”,在“加载”行中选择“事件过程”选项,并单击右边的省略号按钮,如图6-14所示。
图6-14设定“加载”属性
(4)进入VBA编辑器窗口,自动新建一个名称为“Form_Load()”的Sub过程,输入以下代码:
PrivateSubForm_Load()
IfNotcheckThen
MsgBox("请先登录!
")
DoCmd.Close
DoCmd.OpenForm("登录")
EndIf
EndSub
(5)保存后切换回设计视图。
2.为“考勤查询”按钮添加单击事件
操作步骤:
(1)在“员工考勤记录查询”窗体的“设计视图”中单击“考勤查询”按钮。
(2)选择“属性表”中“事件”选项卡,在“单击”行中选择“事件过程”选项,如图6-15所示。
图6-15设定“考勤查询”的“单击”属性
(3)点击右边的省略