站内搜索

Access数据库开发技巧

在当前数据库领域,已有越来越多的人开始采用Access。它是一个功能强大的数据库管理系统和MIS系统开发工具,具有界面友好、易学易用、开发简单、接口灵活等特点。现将本人在使用Access时体会到的一些经验在此与大家交流。
数据库设计的技巧
1. 统一规划
所谓数据库设计是指从对现行非计算机管理的数据库系统的分析到最终实现由计算机管理的数据库系统的全过程。它包括表、查询、报表等的设计。总的原则应从提高数据处理效率及便于数据处理两方面考虑。
以设计学生成绩管理系统为例,在表的设计中,是将全校学生成绩设计成一个表,还是分年级设表,经分析按年级设表将提高数据处理速度且便于数据的处理,相应须设置一个参数表以描述各年级的一些情况,这样以后在进行数据处理时可从参数表中提取有关参数。考虑到在输入学生成绩时可能出错,故应设计相应的副成绩表,这样每一成绩分二次输入,然后再建立相应的主副查询来核对主副表中的成绩是否一致,不一致则进行修改。再比如要进行十分段、单科每分段、总分每分段等数据的统计,可设计相应的表用Visual Basic程序来进行处理并将统计数据自动填入相应的表中。在字段的设计中要尽量减少字段数,比如,学生名次有班级名次与年级名次,我们可以将这两个名次用一个字段来表示,如用“m/ n”表示,“m“表示班级名次,“n“表示年级名次,这同样可用Visual Basic程序来实现。在设计报表时是以表为基础来建立报表还是以查询为基础来建立报表,显然以查询为基础来建立报表灵活方便,可以方便地通过修改查询及查询中的有关条件从而打印出所需要的报表。总之在进行数据库设计时要全盘考虑才能设计出合理的数据库对象。
2. 设置好关键字和表间关系
表的设计中关键字的设置很重要,设置关键字可以提高查询等操作的速度。有时可以用多字段作关键字。两个表的关系也很重要,比如主成绩表与副成绩表间若没有建立正确的关系,则主副查询将得不到正确的结果。
3. 设计好字段的缺省值
字段的缺省值有时也需引起注意。比如,在数字型字段中,因有些记录中可能没有输入过数据,在用Visual Basic程序处理时可能会出现一些不正确的结果(不知这是否是Access 97的Bug),但当将其缺省值设置为“0”后一切正常。

 

将窗体、查询、报表、宏联合使用可以解决许多问题,是一项重要的技巧。

 1、从窗体中获得查询中的条件
  对于这个问题这里以成绩表的打印为例来说明。我们要打印不同班级的成绩表,首先建立相应报表的查询,在查询中的班级字段下的条件中输入条件:Between [forms]![打印表格]![开始班号] And [forms]![打印表格]![结束班号]。然后再建立一个“打印表格”窗体,在窗体中添加两个组合框控件,即“开始班号”、“结束班号”两个组合框控件,并且通过“打印表格”窗体中的命令按钮来执行报表的打印,则报表所依赖的查询中的班级条件可以从“打印表格” 窗体中的“开始班号”、“结束班号”两个组合框中所输入的数据而获得。
 
  2、从窗体中获得宏中所需要的条件
  对于这个问题现以主副成绩比较查询为例来说明。我们可以为不同的科目建立不同的主副成绩比较查询,然后再建立相应的宏,在宏中根据不同的条件如 [选择科目]=“语文”来打开相应科目的查询。然后再建立一个“主副比较”窗体,在窗体中添加一个组合框控件,即 “选择科目”组合框控件,并且通过“主副比较”窗体中的命令按钮来执行相应的宏,则宏所依赖的条件可以从“主副比较” 窗体中的“选择科目”组合框中所输入的数据而获得。

  报表的生成技巧
 
  1、运用查询生成报表  
  如何产生报表在前面已经讲过,应以查询为基础来建立报表,这样灵活方便。具体来说就是先由基表生成一个查询,将条件设置好,再用报表生成器以该查询为基础生成报表,不需要的字段可以从报表中删去,若以后需要可再在报表中添上,报表中需要的表头信息若经常变动,也可从窗体中来获得表头中所需的信息,可参见前面所述。

  2、表格线的制作
  报表中若需要表格线,不能再用制表符来构造,可以在报表的设计视图中用画线工具来制作,程序中不便画表格线。

 

Access最重要的特征就是一般不必去写程序,然而可能因为要执行复杂或专业的操作而必须在模块中用Visual Basic编写程序,然后通过窗体中的命令按钮来执行相应的程序完成相应的任务。比如排名次、分段统计等。在编写Visual Basic程序时要注意以下一些问题和技巧。

1、变量的运用
  
  ①对象变量的运用
  在Access中运用Visual Basic编写程序,需要运用其数据访问对象。它包括数据库引擎(DBEngine)、工作空间(Workspace)、数据库以及数据库对象中的表、查询、记录集等对象。如缺省工作空间:DBEngine.Workspaces(0),当前数据库:DBEngine.Workspaces(0).Databases(0)。我们可以用一个对象变量来表示一个对象,这样将为编程带来很大方便。为对象变量赋值要用Set语句,而不要直接赋值。例如:
  Dim thedb As Database
  Set thedb = DBEngine.Workspaces(0).Databases(0)
  
  ②Variant 数据类型的运用
  Variant 数据类型是所有没被显示声明(如 Dim、Private、Public 或 Static等语句)为其他类型变量的数据类型。Variant 是一种特殊的数据类型,除了定长 String 数据及用户定义类型外,可以包含任何种类的数据。Variant 也可以包含 Empty、Error、Nothing 及 Null特殊值。Empty 值用来标记尚未初始化(给定初始值)的 Variant 变量。内含 Empty 的 Variant 在数值的上下文中表示 0,如果是用在字符串的上下文中则表示零长度的字符串 ("")。Null 表示未知数据或丢失的数据,即无效数据。不应将 Empty 与 Null 弄混。Null 是表示 Variant 变量确实含有一个无效数据。
  当有些量可能出现Null值时,可将该变量定义为Variant 数据类型。Variant 数据类型为编程者提供很大的灵活性,但牺牲了代码的速度和长度。

  ③通过变量来间接引用数据库对象及限定条件
  为了增加灵活性,提高控制能力,减少代码的重复和运用循环语句,在程序中应充分运用变量来间接引用数据库对象和限定条件。比如各个年级学生成绩排名次的处理程序,只是各年级的成绩表名不同,我们可以将程序中的成绩表名用一个变量如“bzcjb”来表示,具体处理时再替换为具体的表名,如替换为高一年级的成绩表名“g1cjb”。

 

各子系统集成的技巧

  1、选项组、开关按钮、组合框等控件的运用
  在窗体上将这些控件巧妙地加以运用可以有机地将有关系统通过一个窗体来控制,这些控件选择值可以传递到查询、报表及宏中的条件中去,从而使得对查询、报表及宏的控制显得灵活方便。

  2、选项卡控件的运用
  在Access 97 版中新增加了“选项卡”控件,这更使Access可以在有限的窗体中集成更多的子系统。比如在“打印表格”窗体中就可集成“成绩表”、“十分段统计表”、单科每分段统计表“等子系统”,每个子系统对应一个标签页。

  3、开关面板窗体的运用
  运用开关面板窗体可以将所有的子窗体集成到一起。开关面板窗体可以运用新建一个窗体并在其上放置各命令按钮来集成各子系统窗体的方法来建立。开关面板窗体可以说就是一个系统主窗体,它可以指引用户选择所需进行的操作。我们也可以运用Access中的“开关面板管理器”来建立开关面板窗体。具体方法如下:
  ①单击“工具”、“加载项”,然后单击“开关面板管理器”命令。
  ②如果 Microsoft Access 询问是否要新建开关面板时,请单击“是”按钮。
  ③在“开关面板管理器”对话框中,单击“编辑”按钮。
  ④在“编辑开关面板页面”对话框中的“开关面板名”框中输入开关面板的名称,然后单击“新建”按钮。
  ⑤在“编辑开关面板项目”对话框的“文本”框中,为第一个开关面板按钮输入相应的文本,然后在“命令”框中单击所需的命令。如在“文本”框中输入“打印表格”,然后单击“命令”框中的“以编辑方式打开窗体”命令。
  ⑥Microsoft Access 是否会在“命令”框下显示另一方框取决于单击的命令。如果有必要,请单击该方框中的项目。例如,如果在步骤 5 的“命令”框中单击了“以编辑方式打开窗体”命令,可以在“窗体”框中单击要打开的窗体名称,例如“打印表格”,然后单击“确定”按钮。
  ⑦重复步骤 4 至 6,直到已经在开关面板中添加了所有要添加的项目。如果要编辑或删除项目,可以在“开关面板上的项目”框中单击该项目,然后单击“编辑”或“删除”按钮。如果要重新安排项目,可以在框中单击项目,然后单击“往上移”或“往下移”按钮。
  ⑧单击“关闭”按钮。

  • 上一篇:Access秘密、技巧和陷阱
  • 下一篇:当Access文件大于指定的大小时就自动压缩