Book1 第1章 ACCESS使用基础

  • 格式:doc
  • 大小:4.09 MB
  • 文档页数:18

第1章 ACCESS使用基础

1 第1章 ACCESS使用基础

1.1 简介

MS Access是一种运行于Windows平台上的应用数据库系统,它为开发者提供了一个功能强大、易于开发和管理的数据库工作环境。金蝶部门级财务软件选用的后端数据库即为Access,其版本有V2.0和V8.0两种,这两个版本对数据库的管理基本类似。

Access提供了六种对象用以构成一个数据库系统,这些对象分别是表(Table)、查询(Query)、表单(Form)、报表(Report)、宏(Macro)和模块(Module)。这六个对象高度概括了数据库应用开发中的实际需要,比如库结构的建立、数据录入、查询的制作、结果的输出等。在日常技术支持活动中经常要接触到的主要是表和查询,本章主要从表的索引和查询两方面讲解与技术支持有关的一些Access的重要操作。

1.2 索引

在Access中,索引(Index)是作为表(Table)的一个对象进行处理的,因为在表中所有的数据都是按照一定的顺序存储在表中,有时为了提高程序检索表中数据的速度,需要把数据按照某一顺序重新排列,这就引进了索引的概念。

为了给大家一个感性的认识,我们可以先看下图

索引示意图

从上面的索引示意图中可以看出:一个索引对象,包含有索引名称、字段名称、排列次序、是否主索引、是否唯一索引、是否忽略空值等六个属性,各属性含义如下: 第1章 ACCESS使用基础

2 索引名称:索引的标识,在索引集中具有唯一性。

字段名称:指明索引中包含表中的那些字段。

排列次序:指明表是按照何种方式(升序或降序)进行排序检索。

主索引:指明数据表是否实施唯一性检索并且是否为主关键字。

唯一索引:指明数据表是否实施唯一性检索。

忽略空值:在索引表中是否允许包含空值。

其中,主索引和唯一索引都对数据表实施唯一性检索,两者的区别在于是否为主索引。

每个表都有自己的索引集,这个索引集中可以包含一个或多个索引,也可以没有索引,不过在一般情况下都应有索引,因为它可以加快查询、检索及排序的速度。对于某个索引,它的索引字段可以有一个,也可以有多个。这就是下面的单一字段索引和多字段索引。

单一字段索引:在一个索引中,只包含一个字段的索引就是单一字段索引。如:索引示意图中的PrimaryKey索引就是一个单一字段索引,它只包含了EmployeeID(职员编号)字段。

多字段索引:在一个索引中,同时包含多个字段的索引称为多字段索引。根据索引中多个字段出现的先后顺序,分别称做第一字段、第二字段…第n字段。如:索引示意图中的SecondKey索引就是一个包含两个字段的多字段索引。在多字段索引中,检索的结果的排列的顺序为第一字段、第二字段…第n字段的次序依次排列下去。

StudentID StudentName Chinese Math English

001 Li 90 80 90

002 Cheng 90 90

80

003 Wu 80 80 80

004 Zhao 100 100 100

学生分数统计表

假如,现在要对上图所示的成绩单建立索引,名称为Achievement, 包含字段Chinese(升序、不唯一)和Math(升序、不唯一),检索时先比较第一索引字段(Chinese),当其值相同时,比较第二索引字段(Math),则可按以下设置方式建立该索引:

图2-2 学生分数表索引

建立Achievement索引后,Access将Chinese和Math两字段的数据(记录)进行排序,结果如下图所示:

第1章 ACCESS使用基础

3 StudentID StudentName Chinese Math English

003 Wu 80 80 80

001 Li 90 80 90

002 Cheng 90 90 80

004 Zhao 100 100 100

排序后的学生分数统计表

那么,如何在Access中新建索引呢?具体讲有两种方式:

1.直接在设计表结构时,对字段的索引属性选择“有”。

2.设计表结构时选[视图|索引],然后在出现的索引对话框中添加索引名和索引的其它属性。

采用这两种方式新建索引时,在表中没有数据时是非常简单的,但当表中有数据,并且有些数据会直接影响创建索引时,处理就较为复杂。如以下两种情况,在建立索引时就可能遇到:

CASE 1:金蝶帐套的权限表GLRight 主索引丢失,在重建主索引时Access提示错误信息:“Index or Primary Key can’t contain a Null value”。

CASE 2:金蝶帐套的权限表GLRight主索引丢失,在重建主索引时Access 提示错误信息:“The Change you requested to the table were not successful because they would create duplicate

values in the index, primary key or relationship, change the index in the field or fields that contain

duplicate data, remove the index or redefine the index or permit duplicate entries and try again”。

在CASE 1中,明显提示索引或主关键字不能包含空值。因此,解决的方法是首先排除含有空值的记录,然后再添加索引。具体请参考1.3查询部分。

在CASE 2中,Access提示添加索引或关系时有重复的的记录值出现。解决的方法是利用查询排除含有重复值的记录。具体请参考1.3查询部分。

在金蝶帐套中,有时会出现“错误号:XXX 非法的索引名”,然后系统就无条件退出。出现这种情况,一般是因为帐套数据库中相关表的索引丢失,导致系统发生致命性错误,又无法更正或忽略,系统只有选择退出。遇到这种情况时,若错误信息中指明发生在某个表是最好不过的了,这时可打开数据库,添加丢失的索引即可解决;否则,就只有凭经验进行判断处理了。不过,用《金蝶帐套维护工具》检测这类问题是很方便的,而且工具中能把检测到的丢失索引自动添加到相应的表中。

1.3 查询

在Access中,查询(Query)就是在数据库的表对象中根据给定的条件,筛选出有用的动态数据集。例如,可以在金蝶帐套数据库GLBal表中要求Access为你查询检索出第12期银行存款科目的期末余额。

Access的查询可以是对一个表的信息的简单检索,也可以是对若干个相互关联的表的信息的复杂检索。在建立了一个查询后,你可以运行它,Access可在数据表格中返回和显示你所需的记录集。这一记录集叫做动态集(Dynaset)。动态集在数据表格中显示,可同时显示多条记录,并带有记录行和字段列。你可以象操纵数据表格一样浏动态集。

动态集像一个表,但并不是表。动态集是动态的记录集,它并没有被存储到数据库中,也就是说,当关闭查询时,查询动态集将消失。当运行查询时,Access又重新生成动态集。需要注意的是,所谓保存查询是仅仅保存了查询的结构——表、字段、分类排序、记录限制条件、查询类型等,动态集并不被保存。 第1章 ACCESS使用基础

4 当把数据存储在数据库中,你可能需要用不同的方法浏览、使用数据库中存储的数据。根据预期的方式用不同的方法观察数据通称为执行特定查询。查询是伴随着数据库系统的发展而产生的灵活、强大的工具之一。Access提供的查询即体现了这一特点。在技术支持活动中,为了检测某个问题或修改某些数据时,就经常要用到查询。

在Access中查询可分为选择查询(SELECT Query)和动作查询(ACTION Query),在动作查询中又可分为生成表查询(Make-Table Query)、更新查询(Update Query)、追加查询(Append Query)、删除查询(Delete Query)。选择何种查询要视乎具体的需要。下面就针对各种查询的特点逐一讲解:

1.3.1 选择查询

1.3.1.1 建立单表查询

在数据库窗口界面,用鼠标选中查询(Query),然后选择[新建]就会出现添加表与查询窗口,选择需要的对象(Table or Query)添加到查询的表区域

图3-1 创建查询示范(1)

如上图所示,在字段栏内选择需要的字段、选择总计的方式、排序的方式、是否显示该字段,准则是什么等等需要设置的内容,就可以作出一查询。

作一简单的查询是相当容易的,很多情况下,设置可以直接使用缺省值。例如,总计栏不显示,准则栏不添或者是只是简单的数字、字符串或日期。有了这些基础的知识之后再作些复杂的查询,也不会很难。现解释一下出现在查询网格中的各个参数和在“总计栏”中常用的几个关键字的作用。

Field(字段) 可在此行设置字段名或字段表达式,用于限定查询的作用字段。

Sort(排序) 可在此行规定有关字段是否排序以及排序方式。 第1章 ACCESS使用基础

5 Show(显示) 可在此行确定有关字段是否在数据表格中显示。它以复选框形式出现,当选中(出现“╳”或“√”)时,相 关字段在数据表格中显示。

Criteria(准则) 可在此行输入查询的限定条件。

Or(或) 可在此行输入逻辑或限定条件。Or行以多行形式出现,相邻的Or行以及Criteria 行存在逻辑或的关系。

在总计栏中出现的几个关键字分别是:

Group by(分组) 对指定字段按值进行分组,使结果集中的记录该字段值是唯一的。

Sum(求和) 对各组求指定字段的总和。

Avg(求平均值) 对各组求指定字段的平均值。

Min(求最小值) 对各组求指定字段的最小值。

Max(求最大值) 对各组求指定字段的最大值。

Count(记数) 对各组求指定字段的记录数(经常与Group By 配合使用,排除重复记录)。

First(首条记录) 对各组求指定字段最头一次出现的记录。

Last(末条记录) 对各组求指定字段最后一次出现的记录。

Where(条件) 字段选定的条件。

Expression(表达式) 用在Field 行中建立计算的表达式。

在创建一个新的查询中,经常用到总计栏中的选项,往往利用它们与不同字段的组合,来生成我们所需要的结果。请看下例:

现要在凭证表(GLVch)中,统计出第9期科目代码在”101”到”205”之间的借贷发生额,并且只统计到一级科目,假设生成的查询名为NewQuery。

图3-2 创建查询示范图(2)

在这个例子中,对FPeriod、FID(Left([FAcctID],3)的别名)这两字段使用Group by,使查询结果中这两字段不会出现重复值,看似简单的查询,却已经运用了判断、表达式、求