




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章VBA数据库编程,Access数据库程序设计,授课教师:邓广彪联系电话子邮箱:342039882,9.1.1VBA常见操作,1、打开和关闭操作(1)打开窗体:DoCmd.OpenForm窗体名(2)打开报表:DoCmd.OpenReport报表名(3)关闭操作:DoCmd.Close对象类型,对象名,2、输入框格式:inputbox(显示文字,标题文字,默认文字)说明:显示文字必须有,其他可以省略。,3、消息框格式:msgbox(提示文字,按钮类型,标题文字)说明:提示文字必须有,其他可以省略。,4、VBA验证函数在控件中的数据被改变之前或记录数据被更新之前会发生BeforeUpdate事件。要记得表10-6的验证函数名及说明。,5、计时事件(Timer)Timer事件表示每隔指定的一段时间自动执行的代码。VBA中没有提供计时控件,一般是给窗体的Timer事件添加计时的时候执行的代码,然后通过设置TimerInterval属性的值确定多久执行一次(以毫秒为单位)Timer事件代码并马上开始按间隔执行Timer事件代码,如果设置TimerInterval的值为0则停止执行Timer事件。,例如:制作好下图所示的窗体,要求:按每隔100毫秒进行计时,开始时暂停按钮不能使用,正在计时过程计时按钮不能使用,暂停时暂停按钮不能使用。其中文本框的名称为t,计时按钮的名称为play,暂停按钮的名称为pause,给窗体、计时按钮、暂停按钮、Timer事件添加的代码如下页所示。,PrivateSubplay_Click()计时按钮单击代码Me!pause.Enabled=True设置暂停按钮可用pause.SetFocus将光标设置到暂停按钮Me!play.Enabled=False将计时按钮设为不可用TimerInterval=100设置每隔100毫秒执行一次Timer事件EndSubPrivateSubForm_Load()窗体load事件代码Me!pause.Enabled=FalseEndSub,PrivateSubForm_Timer()窗体timer事件代码StaticcountAsDouble定义为静态的使其能保留上一次计时的结果count=count+0.1t=countEndSubPrivateSubpause_Click()暂停按钮单击事件代码Me!play.Enabled=Trueplay.SetFocusMe!pause.Enabled=FalseTimerInterval=0EndSub,9.1.2VBA的数据库编程,在VBA中提供了3种数据库访问接口:1、开放式数据库ODBC2、数据访问对象DAO3、ActiveX数据对象ADO,DAO中的对象:DBEngine、Workspace、Database、RecordSet、Field、QueryDef、Error。,在VBA中可以通过编程来对表中的数据进行操作。在操作过程中主要使用的是数据访问对象DAO或ADODB提供的方法来操作,其主要的操作步骤为:1、定义对应的变量。2、打开数据库或连接到数据库。3、打开表或执行SQL语句将记录集保存起来。4、读取记录集中的字段保存到变量中。5、循环读取字段中的每一个值进行汇总、更新、添加、删除的操作。6、关闭记录集及关闭数据库。,1、定义对应的变量:主要代码如下DimdbAsDAO.Database定义变量db用来保存要使用的数据库DimrsAsDAO.Recordset定义变量rs用来保存要使用的记录集DimmcAsDAO.Field定义字段变量用来保存某个字段的所有值DimnumAsDAO.Field如果要读取多个字段的值则需要定义多个DAO.Field类型的字段变量,2、打开数据库或连接到数据库。Setdb=CurrentDb()设置数据库为当前使用的数据库,3、打开表或执行SQL语句将记录集保存起来。Setrs=db.OpenRecordset(班级信息表)打开表或查询的内容保存到记录集中,双引号中的为要打开的表,也可以是一条SQL语句。,4、读取记录集中的字段保存到变量中。Setmc=rs.Fields(班级名称)读取字段的所有值保存到字段变量中,并指向第一个值Setnum=rs.Fields(人数)如果要读取多个字段的值,每个字段都需要这样读,5、循环读取字段中的每一个值进行汇总、更新、添加、删除的操作。DoWhileNotrs.EOF还没读到最后一条记录对读取得到的记录进行操作rs.MoveNext读取下一条记录Loop上述红色的两个地方一般都是必须的。,举例:读取“班级信息表”中的所有班级名称并提示。具体代码如下:Subabc()DimdbAsDAO.DatabaseDimrsAsDAO.RecordsetDimmcAsDAO.FieldSetdb=CurrentDb()Setrs=db.OpenRecordset(班级信息表)Setmc=rs.Fields(班级名称)DoWhileNotrs.EOFMsgBoxmcrs.MoveNextLooprs.Closedb.CloseEndSub,如果读取的是数值型字段的值,可以用保存该字段的变量直接与一个数值型变量进行运算。举例:循环读取“班级信息表”中“人数”字段的值,将所有的人数之和保存到变量sum中。代码见下一张幻灯片。,如果想对当前读取到的记录进行修改,可以使用“字段变量=值”的格式进行修改,但在修改前必须要使用rs.Edit表示允许进行修改,修改后必须使用rs.Update进行更新。举例:对“班级信息表”中“班级名称”以“艺术”开头的班级,将人数增加100。代码见下一张幻灯片。,Subabc()DimdbAsDAO.DatabaseDimrsAsDAO.RecordsetDimmcAsDAO.FieldDimnumAsDAO.FieldSetdb=CurrentDb()Setrs=db.OpenRecordset(班级信息表)Setmc=rs.Fields(班级名称)Setnum=rs.Fields(人数)DoWhileNotrs.EOFIfmcLike艺术*Thenrs.Editnum=num+100rs.UpdateEndIfrs.MoveNextLooprs.Clonedb.CloseEndSub,如果想对当前读取到的记录进行删除,rs.Delete进行删除。举例:删除“班级信息表”中“人数”大于50的记录。代码见下一张幻灯片。,Subabc()DimdbAsDAO.DatabaseDimrsAsDAO.RecordsetDimnumAsDAO.FieldSetdb=CurrentDb()Setrs=db.OpenRecordset(班级信息表)Setnum=rs.Fields(人数)DoWhileNotrs.EOFIfnum50Thenrs.DeleteEndIfrs.MoveNextLooprs.Closedb.CloseEndSub,对记录集rs还有如下操作:rs.AddNew:添加一条新记录rs.MoveFirst:移动到记录集的第一条记录rs.MoveLast:移动掉记录集的最后一条记录rs.MovePrevious:往上移动一条记录,在考试过程中,近几年的填空题都是考对rs记录集的操作,如rs.EOF、rs.update、rs.MoveNext。所以在考试时要注意看循环的条件填rs.EOF还是Notrs.EOF,有更新记录的就填rs.update(但之前必须有rs.edit),循环中没有rs.MoveNext就填它。,5、几个特殊域聚合函数及RunSQL(2)了解并记住DCount、Davg、DSum、DMax、DMin函数的功能,使用格式均如下:函数名(字段名,表或查询的名称,条件)说明:其中条件可以省略,条件的写法为:字段名符号值。功能:从对应的表或查询中,对满足条件的指定字段做对应函数功能的统计。,如:Dcount(StuID,StuInfo)DAvg(成绩,学生成绩表,课程名=Java)DMax(成绩,学生成绩表,StuID90)DLookup(StuName,StuInfo,StuFrom=广西北海),(4)DoCmd对象的RunSQL方法:运行执行参数中的SQL语句,这个SQL语句可以是select、update等等,使用格式如下:DoCmd.RunSQL(字符串型的SQL语句),补充知识:双重循环的执行,在循环结构中,可以在一个循环的循环体中嵌套另外一个完整的循环,执行时是如果外的条件成立,则执行循环体,由于外循环的循环体中又包含另外一个循环(称为内循环),所以需要把内循环完整的执行一次。只有外循环的条件不成立才会结束循环语句的执行。,分析如下代码,考虑为什么提示的结果是55。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届苏州大学附属中学化学高二上期末学业水平测试试题含答案
- 四川省成都市锦江区嘉祥外国语高级中学2024-2025学年高一下学期期末考试化学试题(含答案)
- 湖南省长沙大学附属中学2024-2025学年高一下学期7月期末考试物理试卷(含解析)
- 房地产公司工作总结范文
- 社交媒体对品牌营销影响分析
- 汉字六书课件
- 汉字教学课件
- 军事理论(河北政法职业学院)知到智慧树答案
- 水轮机基础知识培训总结课件
- 大型设备吊装与安装方案
- 2025年发展对象考试题库附含答案
- 2025年新专长针灸考试题及答案
- 高三生物一轮复习课件微专题5电子传递链化学渗透假说及逆境胁迫
- DBJ50-T-306-2024 建设工程档案编制验收标准
- 公司解散清算的法律意见书、债权处理法律意见书
- 02jrc901b电子海图操作jan中文说明书
- 田间道路工程施工图设计说明
- 井下管路安装、维护管理规定
- GB/T 7967-2002声学水声发射器的大功率特性和测量
- GB 38507-2020油墨中可挥发性有机化合物(VOCs)含量的限值
- GA/T 1162-2014法医生物检材的提取、保存、送检规范
评论
0/150
提交评论