VBA数据库编程PPT教案学习
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Windows提供的32位ODBC驱动程序,在Access应用中,直接使用 ODBC API需要大量VBA函数原型声明(Declare)和一些繁琐的编程, 因此,实际编程很少直接进行ODBC API的访问。
DAO 数据访问对象(
)
适用于单系统应用程序或在小范围本地分布使用,数据库的访问进 行了加速优化,而且使用起来也是很方便的。如果数据库是Access 数据库且是本地使用的话,可以使用这种访问方式。
代码如下:
Option Compare Database
Dim flag As Boolean
'标志标量,用于存储按钮的单击动作
Dim second As Integer
'计时器变量
Dim lcount As Integer
'计次变量
Private Sub Form_Open(Cancel As Integer) '窗体打开事件
End If
End Sub
第5页/共16页
5.计时事件(Timer)
(TimerInterval) :计时器间隔
其处理过程是:Timer事件每隔TimerInterval 时间间隔就会被激发一次,并运行Timer事 件过程来响应。这样重复不断,即实现 “定时”处理功能。
第6页/共16页
【例9.5】设计一个用户登录窗体,输入用 户名和密码,如用户名或密码为空,则给 出提示,重新输入;如用户名或密码不正 确,则给出错误提示,结束程序运行;如 正确,则显示“欢迎使用!”信息。要求整个 登录过程要在30秒中完成,如果超过30秒还 没有完成正确的登录操作,则程序给出提 示自动终止这个登录过程。
第2页/共16页
消息框用3于.信在息对话框框(中M显s示gB消o息x,) 等待用
户单击按钮,并返回一个整型值告诉用户 单击哪一个按钮。
格式如下: MsgBox(prompt[,buttons][,title][,helpfile][,cont
ext])
第3页/共16页
4.VBA编程验证数据
'用户名为空时的处理
MsgBox "用户名不能为空!请输入" + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "提示"
Me!username.SetFocus
'设置输入焦点在"UserName"文本框
ElseIf Len(Nz(Me!userpassword)) = 0 And Count <= 3 Then '密码为空时的处理
BeforeUpdate:
通过创建窗体或控件的BeforeUpdate事件过程,可以实现对输入到 窗体控件中的数据进行各种验证。例如,数据类型验证、数据范 围验证等。
第4页/共16页
【例9.3】对窗体test上文本框控件txtAge中输入的学生年龄数据进行 验证。要求:该文本框中只接受15~30之间的数值数据,提示取消不 合法数据。
DoCmd.Close
Else
'密码有误时的处理
MsgBox "密码有误! " + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "警告"
End If
Else
'用户名有误时的处理
MsgBox "用户名有误! " + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "警告"
Cancel = True
'取消BeforeUpdate事件
ElseIf IsNumeric (Me!txtAge) = False Then 的验证
'非数值数据输入
MsgBox "年龄必须输入数值数据!",VbCritical,"警告"
Cancel = True
'取消BeforeUpdate事件
End If
End If
If lcount >= 3 Then
MsgBox "请确认用户名和密码后再登录", vbCritical, "警告"
DoComd.Close
End If
End Sub
第11页/共16页
9.2 VBA的数据库编程
3 种数据库访问接口
ODBC 开放数据库互连应用编程接口( API)
ADO ActiveX数据对象(
)
基于组件的数据库编程接口第,12是页/一共1个6页和编程语言无关的COM组件系 统。使用它可以方便地连接任何符合ODBC标准的数据库。
3.数据访问对象(DAO)
DBEngine
Error(s)
Workspace(s)
Database(s)
QueryDef(s)
RecordSet(s)
Field(s) 图9.11 DAO模型层次简图 第13页/共16页
4.ActiveX数据对象(ADO)
Error(s) Connection
Com m a nd RecordSet
Field(s)
图9.12 ADO对象模型简图
第14页/共16页
Error对象
Field对象
第7页/共16页
图9.5 具有时间限制的登录窗体
图9.6 超时时显示的提示信息
第8页/共16页
当用户名和密码输入有问题时,会显示如图9.7中的①、②、③或④; 当用户名和密码输入均正确时,会显示如图9.7中的⑤所示。
① ②
③ ④
图9.7 登录程序在输入用户名和密码后可能出 现的界 面 ⑤
第9页/共16页
'用户名为:HYJ
If UCase(Me!userpassword) = "ABCDEF" Then '密码为:abcdef,不分大小写
Me.TimerInterval = 0
'终止Timer事件继续发生
MsgBox "欢迎使用! ", vbInformation, "成功"
lcount = 0
'登录成功,将计算器清0
Elseif Me! txtAge <15 or Me! txtAge > 30 Then 输入的验证
'非法范围数据
MsgBox "年龄为15~30范围数据!",VbCritical,"警告"
Cancel = True
'取消BeforeUpdate事件
Else
'数据验证通过
MsgBox "数据验证OK!",VbInformation,"通告"
第1页/共16页
2.输入框(InputBox)
输入框用于在一个对话框中显示提示,等 待用户输入正文并按下按钮、返回包含文 本框内容的字符串数据信息。
格式如下: InputBox(prompt[,title][,default][,xpos][,ypos][,
helpfile,context])
MsgBox "用户名和密码不能为空!请输入" + Chr(13) + Chr(13) + "您还有" & 3 - lcount
& "次机会", vbCritical, "提示"
Me!username.SetFocus
'设置输入焦点在"UserName"文本框
第10页/共16页
ElseIf Len(Nz(Me!username)) = 0 And Count <= 3 Then
Errors集合 Connection对象
Execute方法 ActiveConnection属性
Fields集合 Recordset对象
ActiveConnection 属 性
Execute方法
Source属性
Command对象 Parameters集合
Parameter对象
图9.13 ADO对象联系图 第15页/共16页
Me!lNum.Caption = 30 - second
'倒计时显示
End If
second = second + 1
'计时器+1
End Sub Private Sub OK_Click( ) lcount = lcount + 1
'按钮单击事件 '计次+1
If Len(Nz(Me!username)) = 0 And Len(Nz(Me!userpassword)) = 0 And lcount <= 3 Then '用户名和密码均为空时的处理
second = 0
'事件计数器清 0
lcount = 0
'登录计次变量清 0
End Sub Private Sub Form_Timer( )
'计时器触发事件
If second > 30 Then
MsgBox "请在30秒中登录", vbCritical, "警告&lse
VBA数据库编程
会计学
1
(2)打开报表操作 命令格式: DoCmd.OpenReport reportname[,view][,filtername][,wherecondition] (3)关闭操作 命令格式为: DoCmd.Close [,objecttype][,objectname][,save] 【例9.2】关闭名为“学生信息登录”窗体。 DoCmd.Close acForm,"学生信息登录" 如果“学生信息登录”窗体就是当前窗体,则可以使用语句:DoCmd.Close。
MsgBox "密码不能为空!请输入" + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "提示"
Me!userpassword.SetFocus '设置输入焦点在"UserPassword"文本框
Else
If Me!username = "HYJ" Then
添加该文本控件的BeforeUpdate事件过程代码如下:
Private Sub txtAge_BeforeUpdate (Cancel As Integer)
If Me!txtAge ="" Or IsNull (Me!txtAge)Then 证
'数据为空时的验
MsgBox "年龄不能为空!",VbCritical,"警告"
DAO 数据访问对象(
)
适用于单系统应用程序或在小范围本地分布使用,数据库的访问进 行了加速优化,而且使用起来也是很方便的。如果数据库是Access 数据库且是本地使用的话,可以使用这种访问方式。
代码如下:
Option Compare Database
Dim flag As Boolean
'标志标量,用于存储按钮的单击动作
Dim second As Integer
'计时器变量
Dim lcount As Integer
'计次变量
Private Sub Form_Open(Cancel As Integer) '窗体打开事件
End If
End Sub
第5页/共16页
5.计时事件(Timer)
(TimerInterval) :计时器间隔
其处理过程是:Timer事件每隔TimerInterval 时间间隔就会被激发一次,并运行Timer事 件过程来响应。这样重复不断,即实现 “定时”处理功能。
第6页/共16页
【例9.5】设计一个用户登录窗体,输入用 户名和密码,如用户名或密码为空,则给 出提示,重新输入;如用户名或密码不正 确,则给出错误提示,结束程序运行;如 正确,则显示“欢迎使用!”信息。要求整个 登录过程要在30秒中完成,如果超过30秒还 没有完成正确的登录操作,则程序给出提 示自动终止这个登录过程。
第2页/共16页
消息框用3于.信在息对话框框(中M显s示gB消o息x,) 等待用
户单击按钮,并返回一个整型值告诉用户 单击哪一个按钮。
格式如下: MsgBox(prompt[,buttons][,title][,helpfile][,cont
ext])
第3页/共16页
4.VBA编程验证数据
'用户名为空时的处理
MsgBox "用户名不能为空!请输入" + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "提示"
Me!username.SetFocus
'设置输入焦点在"UserName"文本框
ElseIf Len(Nz(Me!userpassword)) = 0 And Count <= 3 Then '密码为空时的处理
BeforeUpdate:
通过创建窗体或控件的BeforeUpdate事件过程,可以实现对输入到 窗体控件中的数据进行各种验证。例如,数据类型验证、数据范 围验证等。
第4页/共16页
【例9.3】对窗体test上文本框控件txtAge中输入的学生年龄数据进行 验证。要求:该文本框中只接受15~30之间的数值数据,提示取消不 合法数据。
DoCmd.Close
Else
'密码有误时的处理
MsgBox "密码有误! " + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "警告"
End If
Else
'用户名有误时的处理
MsgBox "用户名有误! " + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "警告"
Cancel = True
'取消BeforeUpdate事件
ElseIf IsNumeric (Me!txtAge) = False Then 的验证
'非数值数据输入
MsgBox "年龄必须输入数值数据!",VbCritical,"警告"
Cancel = True
'取消BeforeUpdate事件
End If
End If
If lcount >= 3 Then
MsgBox "请确认用户名和密码后再登录", vbCritical, "警告"
DoComd.Close
End If
End Sub
第11页/共16页
9.2 VBA的数据库编程
3 种数据库访问接口
ODBC 开放数据库互连应用编程接口( API)
ADO ActiveX数据对象(
)
基于组件的数据库编程接口第,12是页/一共1个6页和编程语言无关的COM组件系 统。使用它可以方便地连接任何符合ODBC标准的数据库。
3.数据访问对象(DAO)
DBEngine
Error(s)
Workspace(s)
Database(s)
QueryDef(s)
RecordSet(s)
Field(s) 图9.11 DAO模型层次简图 第13页/共16页
4.ActiveX数据对象(ADO)
Error(s) Connection
Com m a nd RecordSet
Field(s)
图9.12 ADO对象模型简图
第14页/共16页
Error对象
Field对象
第7页/共16页
图9.5 具有时间限制的登录窗体
图9.6 超时时显示的提示信息
第8页/共16页
当用户名和密码输入有问题时,会显示如图9.7中的①、②、③或④; 当用户名和密码输入均正确时,会显示如图9.7中的⑤所示。
① ②
③ ④
图9.7 登录程序在输入用户名和密码后可能出 现的界 面 ⑤
第9页/共16页
'用户名为:HYJ
If UCase(Me!userpassword) = "ABCDEF" Then '密码为:abcdef,不分大小写
Me.TimerInterval = 0
'终止Timer事件继续发生
MsgBox "欢迎使用! ", vbInformation, "成功"
lcount = 0
'登录成功,将计算器清0
Elseif Me! txtAge <15 or Me! txtAge > 30 Then 输入的验证
'非法范围数据
MsgBox "年龄为15~30范围数据!",VbCritical,"警告"
Cancel = True
'取消BeforeUpdate事件
Else
'数据验证通过
MsgBox "数据验证OK!",VbInformation,"通告"
第1页/共16页
2.输入框(InputBox)
输入框用于在一个对话框中显示提示,等 待用户输入正文并按下按钮、返回包含文 本框内容的字符串数据信息。
格式如下: InputBox(prompt[,title][,default][,xpos][,ypos][,
helpfile,context])
MsgBox "用户名和密码不能为空!请输入" + Chr(13) + Chr(13) + "您还有" & 3 - lcount
& "次机会", vbCritical, "提示"
Me!username.SetFocus
'设置输入焦点在"UserName"文本框
第10页/共16页
ElseIf Len(Nz(Me!username)) = 0 And Count <= 3 Then
Errors集合 Connection对象
Execute方法 ActiveConnection属性
Fields集合 Recordset对象
ActiveConnection 属 性
Execute方法
Source属性
Command对象 Parameters集合
Parameter对象
图9.13 ADO对象联系图 第15页/共16页
Me!lNum.Caption = 30 - second
'倒计时显示
End If
second = second + 1
'计时器+1
End Sub Private Sub OK_Click( ) lcount = lcount + 1
'按钮单击事件 '计次+1
If Len(Nz(Me!username)) = 0 And Len(Nz(Me!userpassword)) = 0 And lcount <= 3 Then '用户名和密码均为空时的处理
second = 0
'事件计数器清 0
lcount = 0
'登录计次变量清 0
End Sub Private Sub Form_Timer( )
'计时器触发事件
If second > 30 Then
MsgBox "请在30秒中登录", vbCritical, "警告&lse
VBA数据库编程
会计学
1
(2)打开报表操作 命令格式: DoCmd.OpenReport reportname[,view][,filtername][,wherecondition] (3)关闭操作 命令格式为: DoCmd.Close [,objecttype][,objectname][,save] 【例9.2】关闭名为“学生信息登录”窗体。 DoCmd.Close acForm,"学生信息登录" 如果“学生信息登录”窗体就是当前窗体,则可以使用语句:DoCmd.Close。
MsgBox "密码不能为空!请输入" + Chr(13) + Chr(13) + "您还有" & 3 - lcount & "次机会", vbCritical, "提示"
Me!userpassword.SetFocus '设置输入焦点在"UserPassword"文本框
Else
If Me!username = "HYJ" Then
添加该文本控件的BeforeUpdate事件过程代码如下:
Private Sub txtAge_BeforeUpdate (Cancel As Integer)
If Me!txtAge ="" Or IsNull (Me!txtAge)Then 证
'数据为空时的验
MsgBox "年龄不能为空!",VbCritical,"警告"