第4章使用Access数据库和表.docx
- 文档编号:30560877
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:77
- 大小:63.42KB
第4章使用Access数据库和表.docx
《第4章使用Access数据库和表.docx》由会员分享,可在线阅读,更多相关《第4章使用Access数据库和表.docx(77页珍藏版)》请在冰豆网上搜索。
第4章使用Access数据库和表
第4章使用Access数据库和表
本章要点
•定义Access数据库的元素•向现有的数据库添加一个新表
•理解关系型数据库•设置字段的默认值
•使用Access数据库文件和表•使用关系、关键字字段和索引
•创建一个新数据库•更改字段和关系
•理解表和字段的属性•复制和粘贴表
•选择字段数据类型、大小和格式•疑难解答
•理解NorthwindTraders示例数据库•现实世界—数据库策略和表战术
4.1定义Access数据库的元素
数据库的传统定义是以一定的组织方式存储的一组有关的数据项的集合。
Access由于其全
环绕数据库文件结构而在桌面数据库开发应用中显得与众不同。
在一个单个的Access.mdb中,
可以包含有数据对象(表、索引和查询)和应用对象(窗口、报表、宏和VBA代码模块)。
因此,
你可以创建一个完整的Access数据库应用并将之存储在一个单个的.mdb文件中。
Access的这种
“包罗万象”的.mdb文件结构使得数据库应用的创建和发布变得更为简单了。
Access数据库可以将以下元素包含在单个的.mdb数据库文件中:
•表以行列格式存储数据项,这一点与电子数据表应用极为相似。
一个Access数据库可
以包含有多达32768个对象(可以是表、窗体、报表、查询等等的组合),并且只要你有
充足的资源可用,则可以同时打开多达1024个表。
你可以从其他应用(例如dBASE、
FoxPro和Paradox)、客户/服务器数据库(例如MicrosoftSQLServer和Access2000中包含
的新Microsoft数据引擎MSDE)以及电子数据表应用(例如MicrosoftExcel和Lotus1-2-3)
中导入表。
你还可以将其他类型的数据库表、格式化文件(Excel工作表和ASCII文本)以
及其他Access数据库链接到Access数据库。
第7章“链接、导入和导出表”中讲解了如何
在Access2000中使用其他数据源。
•查询显示从多个表(最多可以为16个)中选取的数据。
借助于查询,你可以指定如何表示
数据,选择构成查询的表,并可以从所选表中提取多达255个特定的字段(列)。
你可以
通过指定查询中数据必须满足的标准或者说条件来决定哪些数据包含在显示中。
第二部
分“最大限度地利用查询”解释了如何设计Access查询。
•窗体用于显示包含在表或者查询中的数据,向之添加新的数据以及更新或者删除现有
的数据。
你可以在窗体中加入图片和图形,并且如果你有声卡的话,你甚至可以在窗体
中包含叙述、音乐和活动视频。
子窗体是包含在主窗体中的窗体。
在第12章“创建和使
用窗体”和第13章“设计自定义多表窗体”中,我们将学习如何设计窗体;在第19章
“往窗体和报表添加图表和图形”中,我们将学习如何在窗体中使用图形。
Access2000窗体还可以在类模块中包含VBA代码,为窗体和窗体上的控件提供事件处理
子过程。
第4章使用Access数据库和表73
•报表以几乎你想使用的任何形式打印表或者查询中的数据。
Access允许你向报表添加
图形,这样你便可以从Access数据库打印一份完整而清晰的产品目录了。
Access的报表
能力比起其他关系数据库管理应用,包括那些为小型机和大型机而设计的应用在内,其
报表处理显得更为灵活。
与窗体相似,你也可以在Access2000报表中包含VBA事件处理
子过程。
第14章“打印基本报表和邮件标签”和第15章“高级报表”两章对如何创建报
表进行了详细的介绍。
第28章“用VBA6.0响应事件”描述了有关编写存储在窗体和报
表背后的事件处理VBA代码的具体细节。
•宏用于Access操作的自动化。
在早期的Access版本中,宏相当于其他应用(如xBase)所
需要的程序设计代码,用于执行特殊的操作与响应用户激发的事件,例如单击命令按钮。
现在宏已经过时了,Access2000之所以支持宏完全是为了能够与用Access的早期版本所创
建的数据库应用保持兼容。
Microsoft建议你在Access2000数据库中使用VBA程序代码进行
事件处理。
在将来的Access版本中极有可能取消对宏的支持而完全采用VBA程序设计。
•模块在模块中编写VBA代码的目的主要有两个,创建在窗体、报表和查询中使用的自
定义函数,提供在所有类模块中都可以使用的公共子过程。
通过向数据库添加VBA代码,
你便可以创建出带有自定义菜单、工具栏和其他功能的完善的数据库应用。
第26章“编写VBA代码”描述了如何编写VBA代码。
•关系定义数据库中一个表和另一个表之间的联系。
关系并没有出现在“数据库”窗口
的对象栏中。
为当前的数据库打开“关系”窗口时,需要选择“工具”、“关系”。
•页即数据访问页(DAP),通过页可以在由intranet服务器交付的Web页面上显示和编辑
Access数据。
第18章“设计数据访问页”中提供了有关DAP的更为详尽的信息。
DAP的简要介绍请参见1.2节“用OfficeWeb组件部署数据访问页”。
注意Access数据项目(ADP)引进了三个新的对象类—视图(与查询相似),存储过程(也与查询
有关)和数据库图表(与关系相似)。
ADP只使用OLEDB和ActiveX数据对象(ADO)连接到MSDE
或者SQLServer6.5+数据库,OLEDB和ActiveX数据对象都是在Access2000中新引入的。
具体
的细节请参见第25章“创建Access数据项目”。
第27章“理解通用数据访问、OLEDB和ADO”
详细地介绍了这些新的Access2000特征。
关于ADP的介绍请参见1.3节“为Microsoft数据引擎创建Access数据项目”。
Access数据库更为合适的定义是一组相关数据项的集合,加上一组可选的选择、显示、更
新数据以及形成报表的方法。
这个定义强调了Access和其他管理应用的重要区别。
甚至客户/
服务器数据库系统,例如MicrosoftSQLServer,也在一个单个的数据库中包含所有相关的表,
但是它没有在数据库中包含窗体和报表的等价物。
你必须使用另一个应用,叫做前端来显示、
编辑存储在客户/服务器数据库中的数据和形成数据报表。
你可以通过从客户/服务器数据库到
Access数据库的链接表,用Access为客户/服务器数据库创建前端。
为客户/服务器数据库创建
前端是Access在中大型公司的主要应用之一。
提示一种较为合理的数据库应用开发方法是在一个Access数据库(.mdb)文件中维护存储应用数
据的表,而在另一个单独的.mdb文件中维护应用的其余对象,例如窗体和报表。
为了简化问题,
本章使用的NorthwindTraders示例数据库是一个只有单个.mdb文件的自包含应用。
第7章和第24
章“多用户网络应用的安全”描述如何使用或者创建单独的.mdb文件来存储数据和应用对象。
本章向你介绍Access数据库和表—Access应用的基本元素。
本书中很多地方都使用了
Access应用这个术语,它是一个具有下列特征的Access数据库:
•它包含查询、窗体、报表和宏。
能够以一种更有意义的方式显示数据和根据需要对数据
进行更新。
本书将这些元素叫做应用对象。
•它不需要数据库用户了解如何设计它的任何元素。
数据库的所有元素在应用的设计阶段
就已经完全预定义好了。
在大多数情况下,你都会限制其他用户有意或无意地改变应用
的设计。
•它由VBA代码实现操作的自动化,所以用户可以从命令按钮或者自定义菜单中进行选择,
而不用使用在“数据库”窗口中的列表。
学习如何创建Access应用的最简单的方法便是修改由Access提供的NorthwindTraders示例
数据库。
在后续的章节中,我们将向PersonnelActions应用添加新的功能,直到能够完成一种
完善的添加和编辑PersonnelActions数据的自动化方法。
因此,你至少应该按顺序阅读到第15
章“高级报表”,因为后续的例子是建立在你前期的工作上的,在你每次遇到PersonnelActions
应用时都要按部就班地执行其练习例子。
4.2理解关系型数据库
所有桌面数据库管理器都可使你能够完成输入、编辑、查看和打印以行列形式包含在一个
或者多个表中的数据的任务。
在这一点上,数据库管理器的定义与电子数据表应用没有太大的
差别—大多数电子数据表都可以仿效简单的数据库函数。
将关系型数据库管理系统
(RDBMS)与电子数据表应用区分开来主要有三个特征:
•所有RDBMS都是为更为高效地处理大量的数据而设计的—比电子数据表可以从容处理
的数据量要多得多。
•RDBMS可以很容易地链接两个或者更多个
表,使之在用户看来就像一个表一样。
这
种处理用电子数据表很难或者根本就无法
完成。
•RDBMS只需要保存诸如产品号或者顾客号
这样的数据冗余,而这些数据在链接多个
表时是必须的,这样就可以把信息的副本
减少到最少。
图4-1所示为一个制造或者分销公司可能会
使用的典型关系数据库。
该数据库结构与Access
所提供的NorthwindTraders示例数据库相似。
关于关系数据库原理的介绍请参见22.3.2节“数据库设计过程”。
如果你的工作是创建一个发票输入数据库,你不需要多次输入顾客的名字和地址。
只需为
每个顾客分配一个唯一的编号或者编码并向Customers表添加一个包含该信息的记录即可。
与此
类似,你不需要为每个发票多次输入标准产品的名字和价格。
你只需向每个产品分配一个唯一
的代号,然后向产品表添加相应的记录即可。
当你想为一个现有的顾客创建一个新的发票时,
你只需输入顾客代号和所定购的产品的代号和数量即可。
这个过程将向Invoices表添加一个记录
(由自动分配的序列编号进行标识),并为所购买的每个不同的项向InvoiceItems表添加一个记录。
如果想学习如何连接有关的表,请参见10.2节“创建多表查询”。
每个表都通过顾客、发票和产品代号和编码与其他的表相联系,在图4-1中由表之间的连
线表示。
在框中所示的代号和编号都是唯一的;对于一个给定的代号只有一个顾客与之对应;
对于一个给定的编号只有一个发票或者产品与之对应。
当你显示或者打印一个发票时,该发票
74第一部分Access基础
图4-1制造或者分销公司使用的
典型数据库的一部分
便通过其代号与Customers和InvoiceItems表建立连接。
反过来,InvoiceItems表与产品表通过
InvoiceItems表的ProductCode和产品表的ProductNumber的公有值建立联系。
链接或者连接都
叫做表之间的关系。
销售订单的查询(视图)从链接记录中显示适当的顾客、发票、项和产品信
息(在后面的章节中将解释查询)。
你可以通过将表中存储的数据乘以适当的值来计算各种价格
值,包括折扣。
你可以添加扩展项、销售税和运费;你还可以计算总的发票数量。
这些计算值
不需要被包含在数据库表中(并且在正确设计的数据库中从不会包含这样的项)。
4.3使用Access数据库文件和表
Access有其自己的数据库文件结构,与客户/服务器RDBMS所使用的有些相似,使用.mdb
作为扩展名。
正如在本章引言中所讨论的,Access与传统的PC数据库不同,它将所有有关的
表、索引、窗体和报表定义都包含在一个单个的数据库文件中。
.mdb文件甚至可以包含用
VBA编写的程序设计代码。
你不需要过多地考虑.mdb文件结构,因为Access为你处理了所有的
文件管理细节。
记录一般叫做行,字段常常叫做列。
本书在引用数据库表时使用术语记录和字段,而在指
称由查询所返回的记录集合时使用了行和列。
4.3.1Access系统数据库
除了包含以.mdb为扩展名的数据库文件之外,Access还包含一个主数据库文件,叫做工作
组文件,命名为System.mdw。
这个文件包含的信息如下:
•可以打开Access的用户和用户组的名字。
•用户口令和一个唯一的二进制编号,叫做SystemID(SID),用以标识当前的Access用户。
•通过从“工具”菜单中选择“选项”而建立的操作首选项。
•每个用户创建的自定义Access2000工具栏的定义。
关于用户首选项的更多信息请参见3.4节“设置默认的选项”。
第24章讲述如何共享数据库文件和授权其他的用户使用该文件。
4.3.2Access库数据库
另一类Access数据库文件是加载项,也叫做库。
加载项是Access库数据库,通常以.mde
或者.mda为扩展名,可以通过扩展名将之与用户数据库区分开来,你可以通过从模块窗口的工
具菜单中选择“引用”或者通过加载项管理器(可以通过选择“工具”,“加载项”进行访问)将
它链接到Access。
当你链接一个Access库时,该库数据库的所有元素在你打开Access之后便都可以使用了。
Access2000向导(可以用来创建窗体,报表和图形)被存储在一系列Access库数据库文件:
Acwzlib.mde、Acwztool.mde和Acwzmain.mde中。
另一个向导可以用于为Access数据库创建数
据字典。
数据字典是对数据库中每个元素的一个详细的书面描述。
加载项库数据库十分重要,
并且是Access所特有的功能。
Microsoft和其他第三方公司提供了广泛的Access库,可以向
Access添加新功能和能力。
4.4创建一个新数据库
如果你有使用关系型数据库管理系统的经验,那么在使用本书的过程中你或许希望能够开
第4章使用Access数据库和表75
始建立自己的数据库。
这时,需要创建一个新的数据库文件。
但是,如果数据库管理系统对你
来说相当陌生,你就应该在使用本书的过程中仔细研究Access提供的示例数据库,在第22章再
使用数据库原理设计你的第一个数据库。
然后返回本节,创建新的数据库文件。
如果要创建一个新的数据库,请遵循如下步骤:
1)如果你没有运行Access,启动它并跳到步骤3。
2)如果Access正在运行并且“数据库”窗口也是可见的,单击其标题栏将之激活。
如果
“数据库”窗口不可见,单击工具栏上的“数据库窗口”按钮,从菜单中选择“窗口”、“1数据
库”或者按下F11键。
3)单击工具栏上的“新数据库”
按钮,或者选择“文件”菜单中的
“新建”,“数据库”。
为了使数据库工
具栏变为可见,当你打开文件菜单时
新数据库和其他文件选项能够显示出
来,Access应用窗口必须为空或者
“数据库”窗口必须处于活动状态。
“新建”对话框如图4-2所示。
“新建”对话框的“常用”页允
许你创建一个空白的数据库,而“数
据库”允许你使用10数据库模板中的
任何一个。
Access2000所带的数据库
模板主要是供资产跟踪、联系和事件
管理以及其他几种典型的商业数据库
使用。
你可以挑选一个与你所创建的
新数据库的目标最为接近的模板。
4)对于眼下这个例子来说,单击
“常用”选项卡,选择“数据库”,然
后单击“确定”,这时显示的“文件
新建数据库”对话框如图4-3所示。
Access为新数据库提供了默认的
文件名,db1.mdb(如果你以前曾在
当前的文件夹中保存有一个名为db1
.mdb数据库文件,Access将会提议
db2.mdb作为默认值)。
5)在“文件名”文本框中,为新
数据库键入一个文件名。
使用传统的
Windows9x文件命名规则;可以在名字中使用空格和标点符号。
在文件名中不要包含扩展名,
Access会自动地提供.mdb作为扩展名。
6)单击“创建”或者按“回车”键,创建新的数据库。
如果当创建新的数据库时有一个数据库是打开的,Access将关闭该数据库和“数据库”窗
口附带的任何窗口。
在新数据库的创建过程中,在状态栏中将显示如下的消息:
“正在验证系统对象”
76第一部分Access基础
图4-2“新建”对话框,在这个对话框中
你可以选择要创建的数据库的类型
图4-3“文件新建数据库”对话框,在这个对话框中
你需要为新建的数据库输入名字
无论何时你打开一个新的或者现有的数据
库,Access都将检查是否所有的数据库的元素
都保持完好。
新数据库(在这个例子中为
db2.md)的Access的主窗口和“数据库”窗口如
图4-4所示。
每个新Access2000数据库在创建时大约占
据96KB磁盘空间。
96KB空间中的绝大部分是被
隐藏系统表消耗掉了,隐藏系统表用于添加说
明数据库文件中其他元素的名字和位置所需要
的信息。
4.5理解表和字段的属性
在你向自己创建的数据库或者Access提供的示例数据库之一添加表之前,你需要花时间了
解一下Access用以描述表中包含数据项的字段和表本身结构的一些术语和约定。
然后使用
Access指定表和字段的属性。
Access表的属性适用于整个表。
表属性
的输入是可选的。
表属性的输入可以在“表
属性”窗口的文本框中的进行(见图4-5),该
窗口可以通过单击“表设计”视图中工具栏
上的“属性”按钮将之打开。
以下是对
Access表基本属性的一个简短描述,所有属
性都是可选的,具体如下:
•说明一段用于解释表的目的的可选性
文字。
如果你从菜单中选择“视图”,
“详细信息”,“数据库”窗口中将显示
这段说明。
同时,这段说明对于数据字
典也是有用的,数据字典主要用于文档数据库和数据库应用。
•有效性规则一个可选的表达式(公式),可用于为表中的多个字段建立域完整性。
你在
此处输入的有效性规则将对整个表产生影响,并非仅仅应用到一个单个的字段上。
有效
性规则和域完整性是第5章“输入、编辑和验证表中的数据”的两个主题。
•有效性文本一个可选的属性,用于指定一段文本,当你违反了表的有效性规则后,在
打开的对话框中将显示这段文字。
•筛选一个可选的属性值,用于说明无论何时打开表都会执行的一个限制规则。
筛选基
于你提供的选择条件对显示记录的数目进行控制。
第6章“排序、查找和筛选表中的数据”
将详细讨论筛选。
•排序依据一个可选的属性值,用于指定当表被打开时所使用的排序次序。
第6章也解释
了排序次序。
如果你没有指定排序次序,则记录将以主键的次序进行显示。
在本章后面
的“使用关系、关键字字段和索引”一节将对主键字段进行详细的讨论。
子数据表是Access2000的一个新功能,我们曾在第1章的“浏览和编辑子数据表中的相关
记录”一节中对之进行过简单的描述。
子数据表可以显示嵌套数据表中关联表中的记录集合。
你可以在表和查询的“数据表”视图以及子窗体中使用子数据表。
子数据表的表属性有:
第4章使用Access数据库和表77
图4-4新创建数据库的“数据库”窗口
图4-5NorthwindTraders示例数据库的
OrderDetails表的“表属性”窗口
•子数据表名称一个可选的值,用以确定子数据表是否和如何显示有关记录中的数据。
默认的值为[自动],该值可以自动地为从相关表中链接的记录添加子数据表。
值[None]将
关闭子数据表。
•链接子字段如果提供了子数据表名称值,链接子字段则用于指定其记录将出现在子数
据表中的链接表的链接字段的名字。
如果子数据表名称属性值为[自动],则不需要为该
属性指定一个值。
•链接主字段如果提供了子数据表的名称值,链接主字段则用于为高层数据表或者子数
据表指定表的链接字段的名字。
•子数据表高度如果提供了子数据表名称值,则用子数据表高度指定子数据表的最大高
度。
值0(默认)允许子数据表显示所有有关的记录,具体值受限于高层数据表或者子数据
表的大小。
•子数据表展开如果提供了子数据表的名称值,子数据表展开将控制子数据表的初始显
示。
将该值设为Yes(是)将导致打开该数据表时其所有的子数据表都处于展开状态。
Access2000提供了一个索引窗口,用以指定主键和所有的表索引。
本章后面的“往表中
添加索引”一节中描述了如何使用索引窗口。
你可以给一个Access表的每个字段都赋予一组属性。
前三个字段属性是在“表设计”窗口
中上方的窗格内的表设计网格中设定的,如图4-6所示。
需要指定“主键”属性时,选择字段,
单击工具栏上的“主键”按钮(图4-6中的OrderDetails表具有一个两个字段之上的主键,叫做
组合主键)。
其余的属性值在“表”设计窗口下方的窗格—字段属性中进行设定。
图4-6NorthwindTraders示例数据库的OrderDetails表的“表”设计窗口
下面对在“表”设计网格中设定的属性进行了总结:
•字段名称在“表”设计网格的第一列键入字段的名字。
字段名可以长达64个字符并且
可以包含嵌入的(但是不能以之作为开头)空格和标点(句点(。
)、惊叹号(!
)和方
括号([])除外)。
字段名有严格的管理,不能将同一个字段名用于多个字段。
在字段名中
不使用空格是一个很好的数据库程序设计习惯(可以用一个下划线代替空格并使用大小
写来增强字段名的可读性)。
减少字段名的长度可以节省资源。
•数据类型可以从“表”设计网格第二列的下拉列表中选择数据类型。
数据类型包含文
本、备忘录、数字、日期/时间、货币、自动编号、Yes/No、OLE对象、超级链接和查找
向导。
选择数据类型是下一节的主题。
78第一部分Access基础
•说明你可以在“表”设计网格第三列的文本框中输入一段可选的描述性文字。
如果添
加了说明,则当你选择该字段进行数据输入或者编辑的时候,它将在Access窗口的右下
角状态栏中显示出来。
•主键在选择一个字段作为主键字段时,可以单击“字段名称”列左边的字段选择按钮
来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 Access 数据库