Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-教程

Access2003数据库快速开发教程(十)

时 间:2013-10-30 22:13:03
作 者:竹笛   ID:8  城市:上海  QQ:2851379730点击这里给张志发消息
摘 要:本节预计学习课时为1小时,重点是:a.掌握自动编号管理的规则定义;b.掌握用“数据模块自动生成器”来生成常用的功能窗体。
正 文:

7.1 员工编码的信息管理界面(快速设计)


学习说明

    经过前面几课的学习,我们已经初步掌握了表和查询的设计和实现,接下来,我们就可以学习和用户关系最大的数据库对象——窗体的设计和实现,事实上,对于普通用户而言,他们唯一可以直接接触的对象,只有两类,一类是报表,另一类,就是窗体。
    在前面的课程中,窗体,我们已经见过多次了——比如,登录界面,就是一个已经完成开发的窗体,快速链接表对话框、导航菜单编辑器等,也是窗体——也就是说,所谓窗体,就是用户操作界面的一部分(还有一部分是报表),接下来,我们就来介绍窗体——也就是用户最为常用的操作界面的开发。
    用户操作界面,也就是窗体的开发,有两种方式:
    第一种,是纯手工的开发——开发完成之后,再将手工开发的窗体嵌入平台界面之中,以便使用——这一种开发方式,便于我们学习Access的开发技术和一些控件的使用,因而,也是十分必要的,并且,也有助于掌握第二种开发方式;
    第二种,便是基于平台的开发,《盟威软件快速开发平台》提供了一键生成所需窗体的功能——但在执行一键生成功能之前,需要准确地提供各类参数——为了理解并准确地提供这些参数的值,这就需要基本掌握第一种开发技术,不然,即便是平台提供了相应的快捷开发的功能,可是由于用户基础知识掌握不足的局限,也很难用好这些功能。
    但是,由于这只是一个简化版的教程,所以,就暂不讲述手工开发方面的技术,只演示一键生成的相关内容——如欲了解手工开发的相关内容,请报名参加我们的相关培训课程。


自动编号管理

    在前面的课程中,我们可以发现,tblCodeyg表的ygID字段、tblCodelb表的lbID字段、tblBxmx表的mxID字段的值很有规律,所以,该字段的维护,我们是可以交由系统来自动进行维护,而不必像先前录入测试数据的时候一样,还需要我们进行手工干预,并且,借助平台所提供的工具来进行操作,是不需要手工录入任何代码的。
    需要说明的是,在一键生成的操作执行以前,我们必须要预先将该字段指定给系统托管——也就是说,这个工作,是属于基本的准备工作。
    在这里,我们需要强调的是,通常是每一个表的第一个编号字段是不需要用户来干预的,是可以通过代码或者配置,交由系统来维护的,比如,对于tblBxmx表而言,其mxID字段的值是有规律的,但是对于该表的lbID和ygID字段,虽然也存储的是编号数值,但是,上一条记录和下一条记录的值,却毫无规律可言,因此,是无法交由系统来进行维护的——这一点请大家注意。
    接下来,我们就需要进行相关的准备工作,以tblCodeyg表为例,为了生成有关tblCodeyg表的相关操作界面,需要先将mxID字段交由系统来维护,为了达到这个目的,请按以下的步骤进行操作:
    1、按住Shift键打开【Main.mdb】文件,然后,切换到窗体列表,双击其中的SysFrmLogin窗体启动登录,待其登录完成之后,双击【开发者工具】节点下的【自动编号管理】子节点,则如下图所示:
 
    现在,我们就需要重新调阅表设计说明书了——对于tblCodeyg表来说,该表ygID字段的初始值是Y01,由此可知,其编号规则是:首字母Y+顺序流水号2位(这个规则可以自行指定,这里只是举例说明,但指定的规则,必须要和字段的【字段属性】中【常规】选项卡的【字段大小】相匹配)——因此,当前的界面的【编号前缀】和【顺序号位数】,我们就知道如何填写了。至于其【规则名称】,为了便于识别,我们可以采用字段名+表名的命名方式,将其值命名为:ygID-tblCodeyg。
    至于【日期格式】,这里还没有涉及到,就暂不讲解了——至于【补充断号】选项,比如,我们刚才已经将【员工编号】为【Y03】的记录删除,而当前表中最新的(也是最大的编号)是【Y06】——如若这里将其勾选,那么,在录入新的记录的时候,系统将会先把【Y03】编号补齐,然后再从【Y07】开始编号,如若不勾选,那么,将直接从【Y07】开始编号。
    采用补充断号时,删除编号需要慎重。比如,如若我们把【员工编号】为【Y03】的记录删除,而在我们当前的测试数据中,【Y03】是【员工姓名】为【王五】的代号,这个时候,如若tblBxmx表(即报销明细表)已经有了有关【王五】的报销记录,那么,如若我们勾选,让系统去补充断号,比如,如若系统把【Y03】这个代号,再次重新分配给了【王六】,那么,经过数据库的计算,原本在tblBxmx表中,原本属于【王五】的报销记录,如今,就会全归在【王六】的名下,这样,就会引起数据的混乱。
    因此,当采用【补充断号】的功能时,我们应建立一些机制,比如,当删除【王五】的这条记录时,可以让系统把有关【王五】的明细数据,全部连带自动删除,或者先让系统检测,如若检测到已经有了关于【王五】的明细数据,那么,就禁止其删除有关【王五】的编号,以防止出现孤儿数据——由于我们当前的教程,只是最为基础的教程,因此,这些内容,就暂不讲解了。
    关于【最后编号】,这一选项有两个功能——当前的表中,如若已有数据,那么,这里就应当填上当前表中最大的编号值,比如,在当前这个教程的环境,就应当填上Y06,如此一来,系统就会知晓当前的表已有数据,再次生成编号时,就会从Y07开始编号,不然,这里如若空缺,那么,系统就会从Y01开始编号,由于表中已有了Y01的数据条目,且该字段又是主键,不允许出现重复的值,因此,这里必然会报错,从而导致新录入的数据无法保存,因此,在当前表中已有数据的情况下,这个【最后编号】的功能就是提供系统编号的依据,防止出错;
    如若当前的表中,并没有数据,那么,这个【最后编号】的功能,就是为了让我们在单击【测试(T)】按钮时,用以查看当前录入的规则所产生的编号数据是否符合我们的要求。

    分析了这么多,当前界面的相关参数,我们也就知道应该如何填写了——正常的操作流程是:
    首先单击【新建(N)】按钮,然后再在相关的参数文本框中录入相关数据——对于当前的tblCodeyg表来说,应当如此填写:
    规则名称:ygID-tblCodeyg
    编号前缀:Y
    顺序号位数:2
    最后编号:【最后编号】这里必须输入Y04,原因是之前由于教程教学的需要,手工在表中录入4条记录了,若不输入,编号会从Y01开始编写;但是在非教学的情况下,即自已开发软件时,若表中没有数据,则这里的最后编号无须填写。
    完成之后,如下图所示:
 
  填写完毕之后,单击【保存(S)】按钮,则如下图所示:
 
数据模块自动生成器
    现在,已经完成了一键生成功能的前期准备工作——将tblCodeyg表的自动编号的字段,交由系统来托管,接下来,我们就可以开始执行生成操作了——为了开启生成功能,请按以下路径操作:
   首先,双击【开发者工具】节点下的【数据模块自动生成器】子节点,则如下图所示:


 
    为了更好地使用该功能,我们将逐一解释所要用到的全部参数:
   【主表】:即与要生成的操作界面(窗体)关系最大的用户表,这是相对于【子表】而言——当前,由于我们只有一个用户表,所以,这里当然应该选tblCodeyg表;
   【子表】:【子表】是相对于【主表】而言的,在相对复杂的数据库系统中,经常会有【主表】与【子表】关系的涉及,由于我们这个基本的系统过于简单,所以,这里没有涉及到,就暂不提及;
   【查询数据源】:这个所谓的查询数据源,与前面的手工开发环节的窗体的【记录源】如出一辙,显然,由于tblCodeyg表相当简单,所以,我们并没有像tblBxmx表那样,为其开发单独的查询对象(即qryBxmx),以便于阅读,因此,对于tblCodeyg表,其【查询数据源】,就是其表自身;
   【不使用链接表】:我们已经知道,我们当前所有针对的【Data.mdb】中表的操作,都是通过建立在【Main.mdb】文件中的链接表来进行,所以,这里不能勾选;
   【列表窗体】:这个列表窗体和以下的【主窗体】、【编辑窗体】,是平台自创的名词,在当前的环节,的确难以解释,我们将在生成工作完成之后,再予以注解,当前这里必须勾选;
   【主窗体】:同上,在当前的环节,难以解释,我们将在生成工作完成之后,再予以注解,当前这里必须勾选;
   【编辑窗体】:同上,在当前的环节,难以解释,我们将在生成工作完成之后,再予以注解,当前这里必须勾选。
当然,如若某一个表,我们只想给用户查阅的功能,而不想给用户提供新增、修改的功能,那么,这里的也的确可以不生成【编辑窗体】——所以,凡事都没有一定的;
   【创建导航菜单】:所谓导航菜单,就是用以打开相应功能的菜单节点(比如我们刚才单击过的【自动编号管理】和【数据模块自动生成器】,就是相应功能的菜单节点),这部分工作,可以在窗体生成之后手工来进行设置,也可以在生成窗体的时候就附带生成——如若选择了相应的【上级菜单】,那么,就可以生成一个从属于所选择的【上级菜单】节点的子节点——如若选择的【上级菜单】是一级节点,则生成的便是二级节点,如若选择的【上级菜单】是二级节点,则生成的便是三级节点。
    所以,在这里,我们不妨就勾选这个选项,检验一下实际的效果——也可以节省一些开发的时间。
   【菜单文本】:这个,实际上就是节点名称,比如前面的【导航菜单编辑器】、或【员工编码】,这些都是——在这里,我们不妨就录入:员工编码。
    在这里,需要说明的是——在以后的权限配置中,就当前的平台版本而言,只有在生成窗体时勾选了【创建导航菜单】选项时,该节点才可以直接进行权限分配的工作——也就是说,在生成的过程中,如若勾选了该选项,那么,也自动地在权限配置模块中(【用户角色/权限管理】节点),生成了相应的权限节点(导航菜单节点和权限分配节点,是两个分别独立的树形菜单),而权限节点一旦在权限分配的树形菜单中有了位置中,我们就可以自由地给各个用户分配相应的权限,但是,在生成过程中,如若没有勾选【创建导航菜单】,那么,就连我们生成的窗体,都需要来手工建立相应的权限节点,即便是我们可以通过【导航菜单编辑器】可以手工建立导航菜单,但是,权限节点也仍然需要手工建立。
    所以,基于以上的情况,我们可以得出以下结论:
    第一:可以一键生成的窗体,一定要自动生成;
    第二:在一键生成的时候,尽量要一并创建导航菜单。
    接下来,【上级菜单】,我们可以不选——我们将新生成的节点定位为一级节点。
   上述录入完成之后,如下图所示:
 


  接下来,我们切换到【列表窗体定义】选项卡,则如下图所示:
 
    当前的这个界面,是关于【列表窗体】的相关配置,接下来,我们将逐一来解释说明:
   【名称】:就是窗体的命名,也就是窗体列表中的可见名称,建议保持默认,不要修改;
    【标题】:即窗体的属性设置区中【格式】选项卡的【标题】属性的值,在这里,我们不妨按照标准,赋予一个正规的名称:员工编码列表;
    【要显示的字段】:就是有哪些需要在运行时显示在数据列中——在这里,当然要选择所有的列。
    所以要提供这个功能,是因有些表中,可能会含有一些比较敏感的数据列,那么,我们可以多次生成有关该表的操作界面,每一次生成均按实际的需要,进行不同的字段的配比,比如,哪些字段可以显示,哪些不可以显示,这样一来,每一种字段搭配方案,都会有一个独立的节点菜单,以后,我们可以将不同的节点的权限分配给不同用户,来达到提高安全性的目的。只是需要注意的是,针对同一个表的多次生成,由于表名是一样的,所以相关的默认的窗体名称也完全一样,因此,只有第一次可以采用默认的窗体名称,不然,如若窗体名称出现重复,则第二次会将第一次生成的同名窗体全部覆盖;
    【双击打开编辑窗体】:这一选项是指在系统运行时,当我们在一条记录上双击鼠标左键时,是否需要弹出相应的编辑窗体——正常来说,是需要通过选定记录之后,单击【编辑(E)】按钮来进行——现在,如若需要附加这样一个辅助的功能,也未尝不可,只是有一点需要注意——由于我们学习教程时,一般都是使用的是拥有全部管理权限的管理员帐号,而在实际运行时,对于普通用户而言,如若他本来就不拥有一个菜单节点的编辑权限,那么,无论他如何双击,也是不会弹出相应编辑界面的——也就是说,即便启用了该功能,对于用户而言,能否享受到相应的便利,也需要权限的支持;
    【打开窗体不加载数据】:所谓加载数据,就是从后台数据表中读取数据,然后显示到前台界面中来——不加载,就是不显示数据,这里,当然不能启用该选项;
    【高亮显示当前记录】:这一点是指将当前鼠标光标所在的记录给予高亮显示,这一点便于数据库的操作,也比较醒目,通常是必要的,可以选中。
    完成上述设置之后,如下图所示:
 


   接下来,我们切换到【主窗体定义】选项卡,则如下图所示:


     如上图所示,【主窗体】的参数设置,相对复杂一点,我们将一一加以说明(前面已经讲过的,不再重复):
   【名称】:采用当前默认值即可;
   【标题】:员工编码管理——这个【标题】的值请特别注意,由于导航菜单的树形菜单和权限控制体系的树形菜单,是两个独立的菜单系统,因此,各自有各自的【菜单文本】——导航菜单的菜单文本来自于【导航菜单编辑器】中【菜单文本】(采用自动生成的方式,则来自于【数据模块生成器】中【常规】选项卡的【菜单文本】),那么,权限体系的菜单文本来自于哪里呢?如若在生成窗体时,勾选了【创建导航菜单】的复选框,那么,相应权限体系的树形菜单的菜单文本,就来自于当前的这个【主窗体定义】下的【标题】,因此,这个【标题】的设置,可以和导航菜单的【菜单文本】保持一致,也可以不保持一致,但总体的原则是两者之间,必须要有很强的关联性,不然,会带来管理方面的麻烦;
   【要查询的字段】:即哪些数据列提供查找的功能——即可以搜索其中含有我们指定字符的记录,这个通常采用默认值即可(即所有的字段的内容都可以检索)——当然,如若有一个数据列不想让用户检索,则可以取消选定;
   【按钮】:相应的按钮,对应于相应的功能,由于这个于tblCodeyg表比较简单,所以,我们只需要提供新增、修改、删除的功能就可以了,所以,在这里,我们也只须提供这几种按钮即可,其他的功能,针对如此简单的一个表,是不太需要的——当然,也可以选择——反正又不需要手工来开发,多一些功能总比少一些功能要好;
   【默认查询字段】:即在可查询的字段列表中,默认显示哪一个字段,在这里,我们当然选择ygxm字段,这个随实际的情况的需要而定,一般应该选择查询最为频繁的字段作为默认查询字段;
   【报表名称】:由于当前的表特别简单,所以,基本不会需要报表,所以,当我们前面取消【打印预览】和【打印】的按钮之后,这里报表相关的选项区,包括【打印内容】,都会变为不可用,所以,这个地方,就暂不讲解。
   【基于按钮的权限】:如若当前的系统,需要进行权限的控制,比如,谁只能查阅,谁可以编辑、删除数据,那么,这个选项就应该选中——选中之后,如若一个用户,他没有当前界面的【编辑】权限,那么,【编辑】这个按钮,在当前的界面中,就会变为不可用——也就是说,系统会检测当前登录的用户的权限,拥有哪些权限,就会将哪些命令按钮变为可用——可以说,基于按钮的用户权限控制,可以让我们比较精确地去管理数据,避免由不经授权的数据修改,而带来的数据混乱的状态的出现。
完成上述设置之后,如下图所示:
 


   接下来,我们切换到【编辑窗体定义】选项卡,则如下图所示:
 


   如上图所示,这个界面,比刚才的界面稍微简单一点,我们将一一解说其中的选项(已经解说过的,不再重复):
   【名称】:采用默认值即可;
   【标题】:员工编码编辑;
   【编辑字段】:即表中的哪些字段允许编辑——由于ygID字段已经交由系统来维护,所以,这里只选择ygxm字段也可以。当然,我们选择两个字段也可以——但是由于ygID字段已经交由系统来维护的关系,因此,按照平台的运行机制,如若将这个已经托管的ygID字段选中,那么,在生成的界面中,也会不可用(即可以浏览,但是无法修改)。在这里,我们建议将其选中,可以在生成之后,看一下实际的效果,并且,在检查和排错的时候——尤其是在牵涉到下面所说的【列表窗体的唯一字段】和【编辑窗体的唯一字段】的时候有用;
   【列表窗体的唯一字段】:tblCodeyg表的唯一字段是什么呢?当然是ygID。我们的平台系统,会自动识别该值,并将其填入该选项的文本框中,所以,通常不需要修改。所谓唯一字段,即是其值不会出现重复的字段,通常是主键,并且,是由单一字段所定义的主键(主键可以由多个字段联合定义)——tblCodeyg表的主键,毫无疑问,是ygID字段;
   【编辑窗体的唯一字段】:同上,也是一样的原理,当是ygID字段;
在这里,需要说明的是——如若这两个唯一字段的值不一致,那么,在一键生成之后,【编辑窗体】将无法正常弹出——所以,对于平台生成的窗体而言,新增和修改功能都将无法使用。
   【自定义自动编号字段】:这个已经反复论述过了,对于tblCodeyg表,当然是选择ygID字段;
   【自定义自动编号规则】:现在,我们就看到我们在前面所做的准备工作的重要性了,在这里,当然是选择ygID-tblCodeyg——我们需要说明的是,在前面,我们生成ygID-tblCodeyg规则,当时只是为将ygID字段交由系统托管做好了准备,事实上,这个规则,还必需要有一个宿主,才能正常发挥作用,这个宿主,无疑就是兼有新增和修改功能的   【编辑窗体】;
  【链接主字段】和【链接子字段】——由于我们在前面【常规】选项卡中,并没有选择【子表】,所以,这里变为不可用,由于我们这里并没有涉及到【子表】的操作,所以,就暂不讲述了。
   完成上述设置之后,如下图所示:
 


   现在,我们已经完成了所有的参数设置,接下来,我们单击最下端的【创建】按钮,就可以开始执行一键生成的功能了——需要说明的是,我们在所有选项卡的选项全部配置妥当之后,才可以执行该功能,否则,即便可以生成相关窗体,而是否可用,还是很难说。
   自动生成执行完成之后,如下图所示:
 
   如上图所示,新的一级节点已经顺利生成。尽管我们将新的节点,定义为一级节点,但事实上,我们仍然可以通过【导航菜单编辑器】来对其进行编辑,比如,向上移动,向下移动,也可以将其降级为二级节点,或者将二级节点提升为一级节点,还可以修改图标,以及菜单文本,甚至,该节点所打开的窗体所定义的操作以及打开的数据库对象,都可以修改,这个没有什么难度,大家可以反复测试——测试前,可以将工程目录整个复制一份,在复制的工程目录中进行测试,即便改坏了,也还有正本是好的,也是没有关系的。
    在这里,需要说明的是,如若大家需要做什么实验,尽量用副本来进行测试,不然,出现了问题,也很难将其恢复——其中的一些工作,可能就要白费——所以,无论是在学习,还是在开发的过程中,经常将开发中的中间环节版本进行备份,是很有必要的。
    如上图所示,双击【员工编码】节点,则如下图所示:
 
    接下来,我们就可以进行测试了,在这里,需要强调的是,尽管我们可以一次新增多条记录,但是,与手工开发窗体有所不同的是,当我们新增其中一条记录之后,系统并不会立即将数据刷新到前台界面来,这样做,是为了节省计算机资源和网络流量——对于通过自动生成功能生成的窗体,只有当我们完成记录的新增(一条记录或多条记录),并关闭用于新增数据的对话框时,才会把刚才新增的记录一次性全部刷新到前台界面来。
    当然,上述的这个差别,是可以调整的,也可以在新增一条记录之后,就立即将其刷新到前台来,至于如何调整,我们将在以后的章节中给予讲述。
    接下来,我们就来录入一条测试数据——首先,我们单击新增按钮,则如下图所示:
 

   这就是我们前面在自动生成的环节提到的【编辑窗体】,接下来,我们在【员工姓名】中录入“王九”,然后单击【保存(S)】按钮,则会弹出数据保存成功的提示,然后,我们关闭编辑窗体,则如下图所示:
 
    那么,如何修改呢?同样的原理,我们首先选中“王九”这条记录,然后再单击编辑按钮,则如下图所示:
 


接下来,我们将“王九”改为“王十”,然后单击【保存(S)】按钮,则如下图所示:
 

    如上图所示,“王九”已经被顺利地更新成了“王十”。并且,我们也清晰地看到在前面生成的环节中提到的【主窗体】和【列表窗体】的结构,总的来说,【列表窗体】是【主窗体】的一部分,是被作为子窗体嵌入到主窗体之中——对熟悉手工开发的人来说,这一点是很容易理解的。
    最后,我们不妨在强调几点:
    第一:即便在熟悉手工开发的情况下,我们仍然推荐使用一键生成功能来进行开发,不推荐经常性的手工开发,当然,如若有必要的手工开发的技巧,当然更好;
    第二:一键生成的功能虽然很好用,但是毕竟不能满足所有的功能需求,因此,我们可以在生成之后,再利用手工开发的技术,进行局部的修改,但是,毫无疑问,您要清楚您的修改,将会带来怎么样的效果和影响;
    第三:虽然一键生成功能比较便捷,但是,这也不代表我们可以轻视基本功的训练,因此,必要的手工开发技术,仍然是必要的。当然,平台可以快速地引领初学者入门,并快速地开发出非常专业的应用软件,但是这绝不代表平台就可以包办一切;
    第四:对于一些功能比较复杂的窗体,就目前的平台而言,可能是没有办法生成的,因此,仍然需要手工来开发,或者我们可以先通过生成功能生成相关的基本框架(节省一些基本的工作),然后,再进行大规模的增删,以完成下一步的工作,当然,前提是,要拥有比较娴熟的手工开发技术。
    由于这只是一个简化版的教程,所以,并没有嵌入相关的手工开发技术——如若想学习相关技术,一个途径,是可以通过各种书籍和资料自学,另外一个途径,是可以报名参加我们的培训(了解培训请前往:http://www.accessoft.com/training.asp),以获取进一步的学习资料。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助