第九章数据库编程_第1页
第九章数据库编程_第2页
第九章数据库编程_第3页
第九章数据库编程_第4页
第九章数据库编程_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章VBA数据库编程9.1vba数据库常见操作一、打开和关闭操作1打开窗体操作docmd.openform窗体名称例:docmdopenform“ftest”2打开报表操作docmd.openreport报表名,打开模式例:DoCmd.OpenReport"remp",acViewPreview

3关闭操作docmd.close关闭对象类型,关闭对象名称例:docmd.close表示关闭当前窗体在VBA中,实现窗体打开操作的命令是____A)Docmd.OpenformB)OpenFormC)Do.OpenformD)Doopen.form二、输入框(inputbox函数)

Inputbox(提示信息[,标题][,默认值])提示信息是告诉用户输入什么内容标题是输入框的标题,可省略默认值是如果用户不输入任何值时的取值例9.1strname=inputbox(“请输入姓名:","msg")执行下列语句:St=inputbox("请输入字符串","字符串对话框","aaa"),当用户输入字符串“bbbb”,按“ok”按钮后,变量st的内容是________三、消息框——MsgBox函数及语句函数:MsgBox(提示内容[,对话框的按钮类型][,对话框标题])语句:MsgBox提示内容[,对话框的按钮类型][,对话框标题])printmsgbox"请选择",2+16,"提醒"Printmsgbox"请选择",vbabortretryignore+vbCritical,"提醒"常量值说明vbOkOnly0显示OK按钮vbOkCancel1显示OK及Cancel按钮VbAbortRetryIgnore2显示Abort、Retry及Ignore按钮vbYesNoCancel3显示Yes、No及Cancel按钮VbYesNo4显示Yes及No按钮VbRetryCancel5显示Retry及Cancel按钮VbCritical16显示vbQuestion32显示VbExclamation48显示VbInformation64显示按钮类型作为函数,当单击消息框中某个按钮,函数的值为:常数值说明vbOK1确定vbCancel2取消vbAbort3终止vbRetry4重试vbIgnore5忽略vbYes6是vbNo7否执行语句:msgbox“AAAA”,vbOKCancel+vbQuestion,“BBBB”之后,弹出的信息框_____________A)标题为“BBBB”,框内提示符为“惊叹号”,提示内容为“AAAA”B)标题为“AAAA”,框内提示符为“惊叹号”,提示内容为“BBBB”C)标题为“BBBB”,框内提示符为“问号”,提示内容为“AAAA”D)标题为“AAAA”,框内提示符为“问号”,提示内容为“BBBB四、VBA编程数据验证函数例:ifme!txtage=“”orisnull(me!txtage)thenmsgbox“年龄不能为空!”,vbcritical,”警告”cancel=true

elseifisnumeric(me!txtage)=falsethenmsgbox“年龄必须输入数值数据!”,vbcritical,”警告”cancel=true

elseifme!txtage<15orme!txtage>30thenmsgbox“年龄为15~30范围数据!”,vbcritical,”警告”cancel=true

elsemsgbox“数据验证OK”,vbinformation,”通告”

endiftimer事件:隔一定时间自动发生的事情timerInterval属性:时间间隔(以毫秒为单位)工作原理:每隔timerinterval指定的时间间隔就发生timer事件五、计时器事件例:设计如下所示窗体,窗体上有一个标签控件(名称为lNum)动态显示计数,当单击“暂停/继续”(名称为OK),暂停计数,再单击“暂停/继续”,则继续计数。OptionCompareDatabaseDimflagAsBooleanPrivateSubForm_Load()flag=TrueEndSubPrivateSubOK_Click()flag=NotflagEndSubPrivateSubForm_Timer()Ifflag=TrueThenMe!lNum.Caption=Val(Me!lNum.Caption)+1EndIfEndSub例P250(7):设计如下窗体界面,要求只有三次登录机会,整个登录过程要在20秒内完成,如果在20秒以内没有完成登录,则倒计时到达0秒时自动关闭窗体,窗体的右上角是显示倒计时的标签lTime.。DimflagasbooleanDimiasintegerPrivatesubform_load()flag=_________me.timerinterval=1000i=0EndsubPrivatesubform_timer()ifflag=trueandi<20thenme!ltime.caption=20-ii=______elsedocmd.closeendifEndsub有“数字时钟”窗体如图所示。在窗口中有按钮"【开/关】时钟",单击该按钮可以显示或隐藏时钟。其中按钮的名称为"开关",显示时间的文本框名称为"时钟",计时器间隔已设置为500。OptionCompareDatabaseDimflagAsIntegerPrivateSubForm_Load()flag=1EndSubPrivateSub开关_Click()Ifflag=1Then时钟.Visible=Falseflag=0Else时钟.Visible=Trueflag=1EndIfEndSubPrivateSubForm_Timer()时钟=TimeEndSub(一)、鼠标事件1、MouseUp和MouseDownPrivateSubForm_MouseUp/MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSub2、MouseMovePrivateSubForm_MouseMove(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)……EndSub三个参数:(1)Button:鼠标左键——1(acleftButton),鼠标右键——2(acrightButton)(2)shift:表示shift、Ctrl和Alt的状态(3)x、y:鼠标光标的当前位置。六、键盘与鼠标事件过程(二)、键盘事件1、KeyPress事件PrivateSubForm_KeyPress(KeyAsciiAsInteger)……EndSubKeyPress事件带有一个参数KeyAscii是所按键的ASCII码,该事件过程返回的是所按“字符”的ASCII码。PrivateSubForm_KeyPress(KeyAsciiAsInteger)msgboxKeyAscii&"--"&Chr$(KeyAscii)EndSub2、KeyDown和KeyUp事件PrivateSubForm_KeyDown(KeyUp)(KeyCodeAsInteger,ShiftAsInteger)……EndSub有两个参数,KeyCode和Shift.KeyCode是指所按键的“键”,大小写表示同一键Shift是指shift、Ctrl和Alt的状态,这3个键分别以二进制形式表示,每个键有3位,shift键为001,Ctrl键为010,Alt键为100KeyUp、KeyDown和KeyPress的区别:A)在KeyUp和KeyDown事件过程中,从键盘上输入A或a被视作相同的字母(即具有相同的KeyCode)。B)在KeyUp和KeyDown事件过程中,将键盘上的“1”和右侧小盘上的“1”视作不同的数字(具有不同的KeyCode)。9.2VBA数据库编程VBA是通过MicrosoftJet数据库引擎工具来支持对数据库的访问一、数据库引擎及其接口ODBCAPI:开放数据库互连应用编程接口DAO:数据访问对象,适用于单系统或小范围本地数据ADO:ActiveX数据对象,是DAO的后继产物,它“扩展”了DAO所使用的层次对象,用较少的对象,更多的属性、方法以及事件来处理各种操作。二、vba访问的数据类型(1)Jet数据库:access数据库(本地数据库)(1)ISAM数据库:dBase、Foxpro数据库(3)ODBC数据库:sqlserver、Oracle等

三、数据访问对象(DAO)1、调用DAO对象的步骤:进入VBE编程环境,执行“工具”——“引用”,选中“MicrosoftDAO3.6ObjectLibray”2、DAO对象数据模型的层次结构及对象:P261Dbengine:数据库对象类型Workspace:工作区Database:数据库Recordset:记录集Fields:字段3、DAO访问数据库程序一般代码结构‘定义对象变量DimwsasworkspaceDimdbasdatabaseDimrsasrecordset‘通过set语句设置各个对象变量的值Setws=dbengine.workspace(0)Setdb=ws.opendatabase(数据库文件名)Setrs=db.openrecordset(表名,查询名或sql)Dowhilenotrs.eof……..rs.movenextLoopRs.closeDb.closeSetrs=nothingSetdb=nothing

四、ActiveX数据对象ADO

1ADO中的对象:(1)Connection对象:建立与某数据库的连接(2)Command对象:对数据库的操作(3)Recordset对象:数据库中的记录集(4)Field对象:字段数据信息2ADO中各对象的使用(1)连接数据源:ConnectiondimcnnasnewADODB.connectioncnn.open(2)打开记录集对象或执行查询:dimrsasnewadodb.recordsetrs.open(3)使用记录集:rs.move5从当前记录开始往后移动5个rs.find“张三”查找“张三”值rs.seek25查找25rs.addnew添加新记录rs.update更新记录值(刷新,保存所作的修改)rs.delete删除记录rs.recordcount统计记录集中记录个数(4)关闭连接或清空记录集对象.closeset对象=nothing3ado访问数据库的一般过程及代码结构‘创建对象引用Dimcnasnewadodb.connectionDimrsasnesadodb.recordsetCn.open<连接串等参数>Rs.open<查询串等参数>Dowhilenotrs.eof……..rs.movenext

Rs.closecn.closeSetrs=nothingSetcn=nothing

(1)定义(2)设置连接(3)设置命令参数并执行命令(4)设置查询参数并打开记录集(5)操作记录集(6)关闭,回收对象五、数据库编程分析实例例P266~267真题:数据库中有“学生成绩表”,包括“姓名”、“平时成绩”、“考试成绩”和“期末总评”等字段,现要根据“平时成绩”和“考试成绩”对学生进行“期末总评”。规定:“平时成绩”加“考试成绩”大于等于85分,则期末总评为“优”,“平时成绩”加“考试成绩”小于60分,则期末总评为“不及格”,其他情况期末总评为“合格”。下面的程序按照上述要求计算每名学生的期末总评。PrivateSubCommand0_Click()DimdbAsDAO.DatabaseDimrsAsDAO.RecordsetDimpscj,kscj,qmzpAsDAO.FieldDimcountAsIntegerSetdb=CurrentDb()Setrs=db.OpenRecordset("学生成绩表")Setpscj=rs.Fields("平时成绩")Setkscj=rs.Fields("考试成绩")Setqmzp=rs.Fields("期末总评")count=0DoWhileNotrs.EOF【1】

Ifpscj+kscj>=85Thenqmzp="优"ElseIfpscj+kscj<60Thenqmzp="不及格"Elseqmzp="合格"EndIfrs.Updatecount=count+1【2】

Looprs.Closedb.CloseSetrs=NothingSetdb=NothingMsgBox"学生人数:"&countEndSub真题:下列程序的功能是返回当前窗体的记录集的记录个数,为保证输出记录集的记录数,空白处应填入的语句是()Subgetrecnum()dimrsasobjectsetrs=________msgboxrs.recordcountendsubA)RecordsetB)me.recordsetC)recordsourceD)me.recordsource数据库编程分析几个函数P268:1nz(字段名称或表达式,规定值)功能:将字段中的空值转换成规定值2Dlookup(表达式,记录集,条件)功能:从外部记录集中检索满足条件的字段(表达式)上机操作题:10.3.4PrivateSubbt_Click()DimcnAsNewADODB.ConnectionDimrsAsNewADODB.RecordsetDimstrSQLAsStringDimsageAsSingle'设置当前数据库连接Setcn=CurrentProject.Connection

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论