非计算机专业人员ACCESS程序设计导学

来源 :理论纵横 | 被引量 : 0次 | 上传用户:julia_203
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:本文针对非计算机专业人员学习ACCESS程序设计的特点,阐述了数据窗体设计的基本技术,旨在用尽可能简便的手段设计出满足一般数据操纵需要的窗体,以便快速构建基本的应用模型,供学习者和教学者作参考。
  关键词:ACCESS编程;数据窗体;记录源;数据操纵
  
  ACCESS数据库管理系统是一个适合用户自行快速构建小型桌面管理信息系统的有效工具。数据窗体设计是ACCESS程序设计的主要部份。当窗体指定了记录源(RecordSource)属性的值后,记录源的字段值就可通过窗体主体上的各种数据控件显示出来,称这类窗体称为数据窗体。数据窗体设计的主要任务是根据用户的需求构建一个方便安全的对数据库数据进行数据操纵的界面,数据操纵包括对记录进行查询、添加、更新和删除。学会使用简捷、明了的手段快速构建数据窗体是快速构建应用原型的根本。
  若能在窗体中得心应手地显示表中记录并反映记录间的相关关系,那么再加以对记录的筛选功能和定位功能就能实现对数据的查询;在实现了查询的基础上再加上一些控制功能就可实现对数据的添加、更改和删除。
  1.显示记录的窗体
  显示记录的窗体有纵栏式、表格式、数据表式和主/子窗体式四类。各类窗体的用途是:一次仅显示一条记录用纵栏式窗体;一次显示多条记录可用表格式窗体、数据表式窗体或主/子窗体式窗体(记录显示在子窗体,主窗体无记录源);要显示主/子相关表的记录用主/子窗体式窗体(主窗体显示主表记录,子窗体显示子表中与主窗体当前记录相关的记录)。
  这几种窗体的设计用向导生成比较快速方便。如果是在设计视图下设计,注意窗体的类型(纵栏式、表格式、数据表式等)由窗体的“默认视图”属性决定。主/子窗体式窗体则是在一个纵栏式窗体中添加子窗体控件,然后在子窗体控件的“源对象”属性中加入一个数据表式窗体或表格式窗体构成。如果子窗体的源对象与主窗体的记录源有关联,还要在“连接主表”与“连接子表”的属性中设置连接字段。
  引用和控制数据窗体的记录源属性是非常重要的。如果窗体或子窗体的记录源(RecordSource)属性用Selecte命令来充当,则可以显示多表连接以及分组统计等凡Select命令可实现的查询结果,还可以动态地改变此属性的值来实现对记录的筛选。在程序中引用引用本窗体的属性用:Me.属性名;引用本窗体的子窗体的属性用:Me.子窗体控件名.Form.属性名;引用另一个打开的窗体的属性用:form_窗体名.属性名。例如:引用本窗体的记录源属性用:Me.RecordSource;引用本窗体的子窗体的记录源属性用:Me.子窗体控件名.Form.RecourdSource;引用另一个已打开窗体的记录源属性用:Form_窗体名.RecordSource;引用另一个打开的窗体的子窗体的记录源属性用:Form_窗体名.子窗体控件名.Form.RecordSource
  2.窗体中定位和查找记录的命令按钮
  按顺序定位记录和按条件定位记录是最基本的记录定位手段,ACCESS已经提供了一些方便的功能,例如使用导航器或用向导生成记录导航命令按钮来实现。但是记住下面两条宏命令的用法有利于设计更具个性化的记录导航按钮,且在后续的编程中也会经常用到。
  (1)按序定位记录的宏命令(GoToRecord)
  例如:DoCmd.GoToRcord,,acNext
  该命令定位至下一条记录。参数acNext还可以换成acPrevious、acFast、acLast和acNewRec分别表示定位到上一记录、首记录、尾记录和新的缓冲记录。
  (2)按条件定位记录的宏命令(FindRecord)
  在执行FindRecord宏命令前必须让显示要查找的那个字段的控件获得焦点。例如名为TextName的文本框绑定在记录源的姓名字段上,若要查找定位第一个姓“张”的记录,代码如下:
  name="张"
  Me.TextName.SetFocus
  DoCmd.FindRecord name & "*",,,,,,True
  如果要从当前记录向下找下一个姓张的记录,把最后一个参数True换成False。其它缺省的参数的用法见ACCESS帮助文档。
  3.记录筛选
  在窗体上进行记录筛选的原理很简单,就是根据筛选条件构建一条SQL查询命令文本赋值给窗体的记录源属性既可。实际应用中一般是安排一些控件(常用的有文本框、组合框等)接收用户输入筛选条件的关键数据,然后根据这些数据构成含筛选条件的SELECT命令文本赋值给窗体的记录源属性。例如将产地值存于变量place中,类别值存于class中,下面代码对本窗体中的一个child0子窗体的记录源进行筛选,筛出属于该产地该类别的商品记录:
  Sqltxt="selecte * from商品 where产地= '"& place & "'and类别='"& "'"
  Me.Child0.Form.RecordSource=sqltxt
  Me.Child0.Form.ReQuery
  第一行构建SQL命令文本,注意那些单引号和双引号的用法;第二行代码将命令文本赋值给子窗体的记录源属性;有些版本的ACCESS并不会及时改变原来已显示的记录,而需要第三行代码使子窗体以新的记录源重新从数据库抽取记录。
  4.记录的更改与删除
  记录的更改与删除有两种方法:第一种是按排一些控件接收用户输入的对表记录进行选择的条件及更新数据,通过执行SQL命令的宏实现对符合选择条件的记录进行更新及删除。第二种是设计相应的窗体让用户在窗体上直观地进行手工操作。
  上述的第二种方法是在显示数据的体中设计一些对记录进行筛选及定位的控件,再配合用向导生成的记录操作命令按钮,就可实现对记录的更新及删除操作了。
  此外若要设置窗体(或子窗体)中的记录是否可以更改或删除,可静态或动态地将窗体(或子窗体)的允许编辑(AllowEditions)和允许删除(AllowDeletions)属性的值设为True或False来控制;若仅需控制某些字段的值是否可以更改,可以将显示这些字段的控件的锁定(Lock)属性的值设为False或True来实现。
  5.添加记录
  (1)利用窗体的新缓冲新记录进行添加
  该方案原理是当窗体的允许添加(AllowAdditions)属性值为True时窗体上记录的尾部总会出现一条空的缓冲记录供用户输入新增记录的内容,如果不输入任何内容该空记录是不会保存到表中的。但有时要求新添记录的一部份字段值由程序控制产生,另一部份才由用户输入,这就要作如下处理:
  最初将窗体的的允许添加(AllowAdditions)属性值设为是(False),当要添加记录时通过事件驱动执行下面算法的代码:
  Me.AllowAdditions=True
  DoCmd.GoToRecord ,,acNewRec
  计算出要赋值字段的值赋给相应字段所绑定的控件
  Me. AllowAdditions=False
  让需要用户输入的第一个字段所绑定的控件获得焦点
  注意其中的第2行很重要,将记录定位在新的缓冲记录上才能保证新值赋到新记录上。这种方法用来程控产生新记录的主键值、外键值以及一些有特定编码规则的字段值很有效,可以避免由用户手工编码造成违背主键规则、参照完整性规则及其它的约束规则的情况。
  (2)通过SQL_ Insert into命令添加
  在窗体上安排一些控件来接收用户输入的新记录,对新记录进行预处理后构建一条添加记录的SQL命令文本,再用宏命令RunSQL执行该SQL命令把记录添加到表中。例如把新职工的姓名和性别值分别输入到文本框Textname和Textsex中,若输入的姓名非空且性别是“男”或“女”则将该记录添加到职工表中。代码如下:
  If TextName<>"" and (TextSex="男"or TextSex="女") Then
  Sqltext="Insert into职工(姓名,性别) select '"& textname & "','"& textsex & "'"
  DoCmd.RunSQL(sqltext)
  Msgbox("记录已添加")
  Else
  Msgbox("输入错误,未能添加")
  Endif
  6.读取及检测表中的数据
  程序中经常需要读出表中的某项数据进行分析判别,譬如取出某记录的某一字段的值、取出表中的某类统计数、检测表是否存在符合某一条件的记录等。ACCESS提供了一组称为域函数的标准函数来实现这一功能。这些域函数是:Dlookup()、Davg()、Dcount()、Dsum()、Dmax()、Dmin()。它们的具体功能及用法可查阅ACCESS帮助文档。
  例如:要从库存商品表中取出商品编号为“40001021”的商品的数量可用函数:Dlookup("数量","库存商品","商品编号='40001021'");若要从学生表中取出民族为“回族”的人数可用函数:Dcount("*","学生","民族='回族'");若要判断学生表中是否存在记录可根据函数Dcount("*","学生")的值是否为0来判断。
  7.错误跟踪处理及数据类型检测
  判断用户输入的数据是否符合某种数据类型的格式是经常要做的工作,编程的方法也很多,要求熟习字符串处理的运算及函数,但使用VAB的错误跟踪处理程序是最简单实用的手段。错误跟踪处理(On Error GoTo)及处理后的程序恢复运行语句(Resume)的配合使用,可以在程序运行中发生错误时进行相应的处理而不至于终止。当用向导生成一个指定功能的命令按钮后,在其自动生成的单击事件过程中可以看到这种错误跟踪处理程序在事件过程中的一种用例。下面是一个名为command0的命令按钮的单击事件过程中的错误跟踪代码的格式:
  Private Sub Command0_Click()
  On Error GoTo Err_Command0_Click
  ……
  Exit_Command0_Click:
  Exit Sub
  Err_Command0_Click:
  MsgBox Err.Description
  Resume Exit_Command0_Click
  End Sub
  说明:第1行和最后行为过程的开始和结束;省略号部份为正式过程体代码;第2行的On Error GoTo语句设置当发生错误时转到Err_Command0_Click标号处去执行程序;而Err_Command0_Click标号处的函数MsgBox Err.Description用信息框显示Err.Description(错误对象的错误描述属性)的值,随后的Resume Exit_Command0_Click语句指定从标号Exit_Command0_Click处恢复程序运行;而Resume Exit_Command0_Click标号处的语句Exit Sub则是结束过程。
  如果要检测用户向某个控件中输入的值是否符合某种数据类型的格式,可以在安排了错误跟踪的过程体中将该控件的值直接赋给一个该类型的变量即可,因为如果出错的话错误跟踪代码会去处理。
  8.报表对象的记录源控制
  数据窗体筛选出来的记录常常需要送报表打印。一般的书籍对报表对象的设计都讲述得很好,这里主要谈谈从窗体中运行一个报表时如何把控制报表记录源的选择条件传递给报表对象。
  方法1:报表的记录源属性使用SQL_Seledt命令,其选择条件引用窗体的控件值或通用段定义的public变量值。例如一个名为win_1的窗体上的名为combox1的组合框控件中选中了一个年份值,要求报表对象能由销售明细表中输出该年份的销售清单,则报表的记录源可用命令文本:Select * from销售明细 where年=form_win_1.combox1.text
  方法2:设计一个表作为报表的记录源,在窗体中调用该报表之前通过执行SQL命令的宏命令清空这个表,然后将需要的数据添加到这个表中再运行报表。
  最后要记住运行报表的宏命令是:Docmd.OpenReport参数表
  掌握前面所述的各类数据窗体的设计方法及调用报表的方法已经可以解决一般的常见数据操纵问题,设计出基本的系统模块。由于SQL的数据操纵命令不能对表中记录进行逐条访问处理,因而不能实现更高要求的数据统计和数据处理工作,为了实现这种处理可以过一步学习用于数据库存取的ADO(Active Data Object)对象的应用。通过ADO对象不但可以灵活地访问本数据库,还可以访问本数据库以处的其它数据库。
  
  参考文献:
  [1]数据库基础与ACCESS应用》陈恭和,高等教育出版社。
  [2]CESS数据库程序设计》刘刚,陈克明,清华大学出版社。
其他文献
摘 要:英美国家有着与中国截然不同的文化背景和文化传统。在学习汉语的过程中,英美学生除了会产生一些语内偏误外,往往还会出现一些文化上的理解偏误。由于文化背景的差异,学生在学习过程中在应对跨文化交际时,文化偏误也往往成为他们习得汉语的障碍。因而,从文化的角度分析一些英美学生容易产生理解偏误的文化词,对于我们的实际教学是有意义的。本文从文化对比的角度出发,举出一些英美学生学习过程中容易出现理解偏误的词
期刊
摘 要:本文简述了管理会计在我国的应用、现代管理会计的对象问题、影响我国管理会计运行的原因、我国管理会计的改善提高、管理会计新问题、管理会计功能实现新路径等方面进行了探讨。  关键词:管理会计;改善提高;政策建议    管理会计,会计中一个重要的分支。一般,根据国外对管理会计定义的论述,从20世纪二十年代到20世纪七十年代,认为管理会计是为企业内部管理者提供计划与控制所需信息的内部会计。而在国内,
期刊
摘 要:利用SHPB设备可以方便地记录混凝土加载脉冲的应力—应变、应力—时间、应变—时间、应变率—时间的动态曲线,用来研究材料的动态特性和应变率历史等。本文指出本试验存在着应力应变均匀性、大直径杆的弥散效应等相关问题,并提出了解决方案。  关键词:SHPB设备;问题;解决方案    SHPB压杆本质上是一种弹性杆,在杆的一段施加未知的压力—时间荷载,产生一个弹性波在杆中传播,弹性波通过试件时,使试
期刊
摘 要:课堂教学中,学生不仅要承受一定的生理负荷,同时还要承受一定的心理负荷,体育课中承受合理的心理负荷,不仅能提高课堂教学效率,还能促进学生的心理健康。达到既定教学目标,并对培养学生优良的心理品质起到积极的作用。  关键词:心理负荷;注意;情绪;意志;心理品质    教学中,教与学是一个双向活动的过程,但教师往往把教学重点放在运动技能的传授,学生生理上所承受的负荷,而忽略了学生的心理健康目标的达
期刊
摘 要:近些年,我国民办高校得到了飞速发展,学生规模不断扩大,教师队伍不断增长。本文从一所民办高校的客观案例这一微观角度出发,对民办高校教师队伍建设中存在的问题进行了较深入的探讨,针对性地提出了解决的对策和建议。  关键词:民办高校;尊师重教;教师发展    一、学院师资现状    笔者在一所刚成立一年不久的民办经济技术职业学院兼职,一年来从参加会议,课堂交流,私下访谈,学院相关文件资料分析等方面
期刊
摘 要:虚拟现实技术己经成为计算机技术中研究、开发和应用的热点,广泛应用于教育、军事、建筑、医疗、工业设计等各个领域。虚拟校园是虚拟现实技术在现代教育中的应用,它实现了对校园三维景观和教学环境的数字化和虚拟化,在学校的教学资源管理、环境规划和学校发展等许多方面发挥了重要的作用。  关键词:三维场景建模;LOD技术;漫游交互功能    一、引言    虚拟现实技术(Virtual Reality)是
期刊
摘 要:针对独立学院的三大构成的教学,不仅要求教师在教学内容,教材使用上需要不断注入新的知识、新的理论,更重要的是须在教学方法上进行创新。通过教学方法的创新,增强独立学院学生学习三大构成兴趣,提高他们运用所学“三大构成”的知识分析当前设计活动的能力,为以后的专业教育打下坚实的基础。  关键词:三大构成;设计基础课;独立学院    在现代社会中,构成艺术无处不在,不论是自然界中还是社会生活中,处处体
期刊
柏拉图(Plato公元前427年—公元前347年)出身于雅典的一个贵族家庭。柏拉图从小就受到了良好的教育。青少年时师从苏格拉底8年时间,在政治上与其老师一样,反对当时盛极而衰的民主政治而拥护贵族专政,曾参加多苏格拉底的哲学小集团。因此,苏格拉底被判死刑后,他被迫流亡国外,游说各国,希望能实现其政治理想。愿望得不到实现,又回到雅典,致力于教育。公元前387年,他创办了一个学园,取名阿卡德米学园,变称
期刊
摘 要:路基的施工质量直接影响到道路路面的质量,影响到整个路面的使用寿命,进而进一步影响到公共交通与人身的安全。所以对路基施工过程我们要予以充分重视。作者从多年的施工管理经验中总结出道路路基工程的主要特点、路基工程在道路工程施工中的重要性,并展开论述如何用完善的施工准备与方法来保证道路路基施工的工程质量。  关键词:道路路基施工重要性;关键环节    道路对促进国民经济健康、持续、稳定地发展以及对
期刊
摘 要:提高教学质量,培养学生实际运用语言的能力,是高职院校大学英语教学改革的核心。本文从大学英语教学的实际出发,探讨了高职院校大学英语教学需要解决的问题,并提出了高职院校大学英语教学改革的措施。  关键词:高职教育;英语学习;教学改革    一、引言    早在1970年11月,周总理就主持召开了5次外语教学改革座谈会,研究改进外语教学、加速培养外语人才的问题,强调要特别重视和狠抓外语教学改革。
期刊