Software 版 (精华区)

发信人: checcy (老巴夺), 信区: Software
标  题: 深入探讨ACCESS
发信站: 哈工大紫丁香 (Sat Apr 11 13:14:04 1998), 转信

深入探讨ACCESS
□广州   方伟


我在本刊98年第1期上已介绍了如何用ACCESS构造一个简
单的数据库,为什么现在还要就一个比较复杂的数据库
而大书特书?因为ACCESS是我见到的最容易学会和掌握
的数据库系统,ACCESS中含有很多特殊设计的向导对话
框,引导我们创建一个数据库所需要的大部分工作,不
需要像其他编程软件需掌握很多编程知识。但毕竟ACCESS
不是解决所有数据库唯一的方法,比如EXCEL和LOTUS 
1-2-3已内建了的处理能力,我们再去花时间来编写程
序就有所不值。

下面以“购销存数据库”为例,继续我们的讨论。

      一、 总体设想

购销存数据库,就是购进、销售和库存,它离不开商品,
也就要涉及商品的来源和商品的去向,从贸易角度来讲,
我们称为供应商和客户。因此,我们在创建数据库时就应
包括如下表格来记录相应的数据:

(1) 商品表格,用来记录商品名称,为了方便记录,
我们把它设为品名规格;

(2) 采购订单表格,用来记录商品的购进情况,包括
订购日期和送货日期;

(3) 采购交易表格,用来记录商品的购进和销售的明细
记录,包括交易日期、进货单价、订货量、入库量、销售
量、销售单价、凭证编号、计量单位、包装、产地和付款
等;

(4) 供应商表格,用来记录供应商的具体情况;

(5) 客户表格,用来记录客户的具体情况;

(6) 类别表格,用来对商品进行具体分类;

(7) 付款表格,用来记录每次销售的付款情况。

朋友们也可根据具体情况进行调整。

      二、在视图中创建表格

ACCESS创建表格有几种方法:用ACCESS向导来创建;
通过视图来创建;从已经存在的别的数据库中链接或
导入表格。具体方法以前已详述过,这里只以商品表
格为例(见图1)。

也许你会问,怎么知道哪些数据类型需要查询项?当
然,在当初设计的时候并不知道,但在建立了窗体后
就会觉得,在这个字段里最好是可选项,不用每次输
入相同的数据,在碰到问题以后再修改都可以。

这里补充表格中带有查询功能的外部关键字的行来源
的设计。单击商品表格名称,单击设计按钮打开设计
视图,单击类别ID字段,单击查询,单击行来源右手
边带三个点的查询生成器,显示查询生成器设计视图
,单击菜单查询项选择显示表,在显示表对话框中选
择类别表格并双击鼠标向查询生成器添加表格,单击
关闭按钮,如图2所示。

在第一列单击字段选择类别.,第二行表则会自动添
加相应的表格(如果是向查询生成器窗口添加了多于
一个表格的话,就要注意被选中的字段与表格相同),
在第四行显示单击选择打钩;在第二列选择类别名称字
段,排序选择升序。然后单击鼠标右键选择属性,把唯
一值设置为否,唯一的记录设置为是,关闭查询属性窗
口,关闭查询生成器。


依照上述列子可对采购订单表格中的供应商ID字段和送
货方式ID字段,以及采购交易表格中的产品ID字段和客
户ID字段进行添加设置。

下面对这七个表格创建六个关系,如图3所示。

      三、 链接或导入表格

链接或导入表格就是使用已存在的表格或其他数据库已
存放的数据。链接表格时,影射一个表格到当前数据库,
数据的修改和存储仍然保留在原来的文件中;导入表格时
,拷贝表格结构和存储的所有数据到当前数据库中,数据
的修改和存储不会影响原来的表格文件。用链接或导入表
格创建表格同用表格向导创建表格一样容易。只要在菜单
栏单击文件把鼠标箭头指向获取外部数据导入或链接并单
击,选取表格以后,链接表格显示链接按钮,导入表格显
示导入按钮。

为了便于说明,我们现在用刚刚创建的表格进行操作。首
先把刚创建的表格存盘,关闭ACCESS。重新启动ACCESS,
选择空数据库,单击确定按钮,在创建对话框中输入文件
名称,我们就以“企业购销存”来命名(不要同前面创建
的名称相同),然后单击创建按钮。这时显示企业购销存
空白数据库,因为是采用链接或导入表格,所以不用单击
新建按钮,在菜单栏单击文件并把鼠标箭头移动至获取外
部数据指向链接并单击。选定文件并双击鼠标,显示链接
表对话框,单击全选按钮,所有表格全部打亮,单击确定
,ACCESS自动把所有选定表格链接进当前数据库。所有链
接进来的表格图标前都有一个箭头,说明该表格是外部表
格。链接表格可以在网络中与其他数据库共享数据,并且
方便数据更新和维护。

      四、 数据操作
数据操作有两种方法,一种是在数据表视图中进行操作,
另一种比较常见的是通过创建窗体来进行输入。用数据表
视图进行数据操作,其操作和界面大体与传统的电子表格
没有多大区别。双击商品表格打开商品数据表视图。现在
产品ID显示了自动编号,如果你在品名规格输入产品名称
,自动编号即时显示1,下面记录器也显示1,说明该数据
表记录有一个记录。记录器有五个带箭头的按钮,左边第
一个是移到第一条记录,左边第二个按钮是向前一个记录
,右边前两个与左边按钮作用相反,最后一个是移到新记
录,也就是让光标跳到表格下面新的一行。

在数据表视图中进行数据操作,如果表格只是用来记录简
单的较小的数据集,那么作用很好。如果在比较复杂的数
据库的数据表视图中进行数据操作,在操作上就很容易出
错,而且操作比较烦琐。比如在我们刚刚建立的数据库中
进行数据表视图数据操作时,如果你是比较熟悉该数据库
的结构,那么你首先会打开商品数据表进行商品品名规格
的录入,其后再打开采购订单数据表视图。如果你是新手
,不知道其结构,可能你首先会打开采购订单数据表视图
,那么在商品品名规格字段复选框内还没有建立商品名称
时,你直接在该字段输入商品名称,在退出时ACCESS系统
就会出现错误信息,导致数据不能存储。我们可以通过建
立程序代码捕获数据输入时的错误;通过窗体输入数据,
不用展示所有表格的数据,以避免误操作而导致数据丢失
;还可以使用组合框、文本列表、选择框和选择按钮使数
据输入操作简便。

     五、 创建查询

ACCESS含有四种查询向导,还有一个设计视图。当你单击
数据库查询,然后单击新建按钮时,就会显示新建查询对
话框。从对话框中我们可以看到第一项是设计视图,实际
上她不是查询向导,而是给你有一个选择的机会,如果你
完全不需要向导的任何帮助,自己动手设计一个查询。另
外四个查询向导分别是:“简单查询向导”,她能够直接
而又简单快速帮助我们从已有的表格中创建一个查询; “
交叉查询向导”,她能够帮助汇总表格中的数据;“重复
记录查询向导”,用于查找数据库中的重复记录;“不匹配
查询向导”,用于查找表格中的不匹配记录。  

利用简单查询向导来创建一个选择查询,我们可以从一个或
多个表中选择字段进行查询,例如我们可以从商品表格中选
择品名规格字段,从采购交易表格中选择交易日期、入库量

、计量单位、进货单价、订货量字段来创建一个帮助我们了
解商品入库的情况。 具体步骤如下:



(1) 打开数据库,单击查询标签,单击新建按钮,选择简
单查询向导,单击确认按钮,在简单查询对话框中从表/查询
复选框中选择商品表格,双击品名规格字段,使该字段向选定
字段框中添加,然后在从表/查询复选框中选择采购交易表格
,分别双击交易日期、入库量、计量单位、进货单价等字段,
再从类别表格中选定类别名称字段,然后单击下一步按钮,输
入查询标题,我们把她定为商品入库查询,单击完成,这时我
们已创建了一个简单的选择查询。

(2) 打开该查询,在该入库查询中添加合计这一计算字段。
单击商品入库查询,单击设计按钮,在查询设计图中右击空白
列的第一行字段,把鼠标箭头移到生成器并单击,在表达式生
成器键入“合计:[入库量][进货单价]”(注意:冒号和方括
号用英文符号输入)如图4所示;关闭设计视图,保存修改。

(3) 在查询中使用简单条件来选择记录。如果在查询中不加
任何条件,那么查询返回的结果将是数据表中所有的记录数量
。比如我们已在“购销存”数据库中输入了几十个商品或更多,
想查询某一商品的入库量,就有必要在查询中加入限制返回条件
。用设计方式打开商品入库查询,在“准则”行中输入要设定的
条件,比如想要查询电脑商品,则输入“电脑”,如图5所示。还
可以创建一个带参数的查询,带参数的查询和选择查询的方法一样
,只不过在准则行中输入的不是文字类的值而是一段短语并用方
括号括起来。

同理可创建销售查询和库存查询,还可根据自己的需要创建查询。

      六、 创建窗体

用所创建的七个表格创建六个窗体、两个子窗体,分别为商品窗
体含一个商品子窗体;采购订单窗体含一个采购交易子窗体;供
应商窗体;客户窗体;类别窗体和送货方式窗体。下面着重讲解
商品窗体的创建,其余的窗体朋友可按窗体向导自己创建。

单击窗体标签,单击创建按钮,选定窗体向导,选择商品表格,
单击确定按钮,选取所有字段,再选定采购交易表格,除交易ID
、产品ID和采购订单ID外,其余字段全部选定。单击下一步按钮
,在窗体向导对话框中按缺省值设计,选带子窗体的窗体,单击
下一步按钮,选取缺省值子窗体布局为数据表格式,单击下一步
按钮,选取石墙风格样式,单击下一步按钮,显示最后一个对话
框,可对窗体和子窗体进行命名,我们把子窗体改名为商品子窗
体,单击完成按钮,向导直接显示所创建的商品窗体。关闭窗体。
现在所创建的商品窗体所反映出来的字段还比较单调,不能及时
反映一些必要的统计数据,如销售量合计、销售毛利等。因此应
在商品子窗体中增加一些计算字段来进行后台运算,然后从商品
窗体上的计算字段中反映出来。因为子窗体是一个数据表窗体,
能同时显示相关的几条记录,在这些相关的记录中运用加、减、
乘、除、汇总等运算,把计算结果调用到商品窗体上,以达到我
们即时查询的目的。

(1) 单击商品子窗体,单击设计按钮,打开商品子窗体设计视
图,如图6所示。把窗体字段调整一下,把鼠标箭头移至窗体页脚
横杠处,当箭头变成十字型时按住鼠标拖拉横杠往下移动,然后
把字段移至窗体主体内,如图7所示,如果怕麻烦,不移动字段,
只是把字段缩小也可以,以便查看编辑。

(2) 在窗体主体内添加营业额和余额字段,在窗体页脚增加库
存量、合计、销售合计和毛利等字段。单击工具箱的文本框,然
后把鼠标移至想添加字段的地方单击鼠标,窗体增加一个带标签的
文本框,如图8所示;然后把标签和文本框的位置调整好,用鼠标
右键单击标签,选择属性,在标题栏输入营业额,然后用鼠标单击
文本框,进入文本属性对话框,单击格式标签,在格式栏选择货币
格式,单击数据标签,单击控件来源栏右边带三个点的表达式生成
器,在表达式对话框输入[销售量][销售单价],单击确定按钮,
单击其他标签,在名称栏输入营业额(该名称是宏和过程使用的标
识名称,非常重要,注意不要输错和漏输),关闭属性对话框,完
成该字段的设置。然后按照上述步骤,增加余额字段创建,标签
名称为“余额”,文本框格式为“货币”,其他为“余额”,表
达式为“[营业额]-[付款]”。

(3) 移动鼠标至窗体页脚横杠下面,当鼠标箭头变成十字型时,
按住鼠标往下拖拉,在窗体页脚空白处按上述步骤添加库存量、合
计、销售合计和毛利等字段,为了便于讲述,下面我给出以上各字
段的数据。库存量字段标签名称为“库存量”,其他宏名称为“库
存量”,表达式为“sum(nz([入库量])-nz([销售量]))”(引号
不用输入);合计字段标签名称为“合计”,其他宏名称为“合计
”,表达式为“sum(nz([销售量])nz([销售单价]))”;销售合
计字段为标签名称为“销售合计”,其他宏名称为“销售量合计”
(避免与字段销售量同名),表达式为“sum(nz([销售量]))”;
毛利字段标签名称为“毛利”,格式为“货币“,其他宏名称为”
毛利“,表达式为“sum(nz([销售单价]-[进货单价])nz([销售
量]))”。完成创建以后如图9所示。关闭保存设计视图。

(4) 单击商品窗体,单击设计按钮,调整窗体尺寸,按上述步骤
增加库存量、销售量合计、合计和毛利等字段到窗体。库存量标签
名称为“库存量”,文本框格式为“一般数字”,其他宏名称为“
库存量”,表达式为“[商品 子窗体].[form]![库存量]” (如果
商品子窗体中间有空格,这里输入的字段也应有空格);销售量合
计标签名称为“销售量合计”,格式为“一般数字”,其他宏名称
为“销售量合计”,表达式为“[商品 子窗体].[form]![销售量合计
]”;合计标签名称为“合计”,格式为“货币”,其他宏名称为“
合计”,表达式为“[商品 子窗体].[form]![合计]”;毛利标签名
称为“毛利”,格式为“货币”,其他宏名称为“毛利”,表达式
为“[商品 子窗体].[form]![毛利]”。设置好以后如图10所示。保
存设计,关闭窗体,试打开运行一下,如果字段没有显示错误或名
称,则设计无误。

      七、 在窗体字段中创建设置

当你在采购订单子窗体输入进货单价、产地、订货量、包装和计量
单位等数据时,在商品窗体的子窗体中还要重输入一遍,这样就容
易把数字输错,所以有必要将上述字段设置为列表框查询。单击商
品子窗体,单击设计按钮,在设计视图中单击工具菜单的列表框图
标,把鼠标放在窗体的空白位置,然后单击鼠标,在列表框向导中
选择第一项(缺省值),单击下一步按钮,选择采购交易表格,单
击下一步,选择进货单价字段,添加到选定字段框中,单击下一步
,出现查询字段,这时可对列的宽度进行调整,单击下一步,选定
保存该值到这个字段中,选择进货单价字段,单击下一步,在文本框
中输入标签名“单价”,单击完成。调整该列表框尺寸,删除原来进
货单价字段,把该列表框字段移到原来字段位置。然后用鼠标右键单
击该字段,选择属性,单击格式标签,把列数从2改为1,删除列宽数
据,单击数据标签,在来源行单击右边带三个点的查询生成器,删除
第一列交易ID,在显示行单击方格去掉打钩,然后单击鼠标右键,在
查询属性对话框中把唯一值改成是,关闭属性对话框,在显示行的方
格中单击鼠标,恢复打钩,关闭查询向导,保存修改。

计量单位因为是可事先输入预定的数据,所以我们可以在采购交易子
窗体中对计量单位字段先设置一些值供日后选用。单击采购订单子窗
体,单击设计按钮,当进入列表框查询向导对话框时选择第二项,“
我想键入我想要的值”,单击下一步,在列数中保持1,在查询字段中
键入你想设定的值,比如你想设定“打、箱、支、张、卷”等值,那
么就在每一行中键入相应的字符,键入所有字符后,单击下一步,选
定保存该值到这个字段中,选择计量单位字段,单击下一步,输入标
签名,单击完成按钮,调整字段尺寸,删除原来字段,把新字段移到
原来处,关闭设计视图,保存修改。修改后的字段TAB键次序已经改变
,我们可以在窗体设计视图中单击菜单视图选择TAB次序重新调整TAB
键的位置。



      八、 创建报表

下面我们将使用报表向导创建一个销售报表。
(1) 单击数据库报表标签,单击新建按钮,选择报表向导,选择
采购交易表格,单击确定,选定字段并添加。我们选交易日期、销
售量、销售单价、计量单位、产地、包装等字段,然后选定客户表
格,添加购货单位字段,再选定商品表格,添加品名规格字段,单
击下一步,添加分组级别,选定购货单位,再选定品名规格,单击
下一步,对销售量进行汇总,然后单击汇总选项,选择总计,单击
确定,单击完成。关闭报表,进入报表设计视图,对一些字段根据
记录的大小进行调整。我们在这里所创建的报表只不过是一个范例
,报表的数据可以来自表格,也可以来自查询,并可根据需要和爱
好编排报表,增加或删减字段,也可以增加一些必要的计算字段。



      九、 在窗体上增加按钮

当进入商品窗体,在输入商品规格品名后需要在采购订单窗体上输
入采购数据,然后返回商品窗体,在商品子窗体上进行商品销售数
据输入,这样就会产生多个窗体跳转的过程,如果不添加一些按钮
,那么只能打开又关闭,既复杂又容易出错。因此我们首先应在商
品窗体上增加打开采购订单窗体的按钮。


(1) 单击商品窗体,单击设计按钮,把鼠标移至窗体页脚横杠下
方往下拖动窗体增加页脚下面窗体位置,单击工具箱命令按钮,把
鼠标放在页脚的窗体上单击,选择窗体操作,打开窗体,单击下一
步,选择打开窗体名称,单击下一步,选定打开窗体并显示所有记
录,单击下一步,选择文本,输入“采购”,单击下一步,输入按
钮名称“打开采购订单”,单击完成。关闭设计视图,保存修改。

(2) 单击采购订单窗体,单击设计按钮,同上所述,选定窗体操
作,关闭窗体,选择图标,输入按钮名称“关闭”,单击完成。

(3) 在商品窗体和子窗体、采购订单窗体中增加一些字段的事件
过程。首先在商品窗体中增加类别ID字段的事件过程。单击商品窗
体,单击设计按钮,鼠标右键单击类别ID字段,选择属性,单击事
件标签,分别在不在列表中和双击行中选择事件过程。关闭设计视
图,保存修改。

(4) 按上述步骤对商品子窗体的客户ID字段和采购订单窗体的供
应商和送货方式等字段进行修改。

(5) 鼠标右键单击采购订单子窗体交易日期字段,选择属性,单
击数据标签,单击默认值右边带三个点的表达式生成器,输入“
[forms]![采购订单]![订购日期]”,如图11所示。



      十、 在窗体中添加必要程序码

首先单击商品窗体,单击设计按钮,单击菜单栏视图,选择
代码项,进入窗体类模块编辑窗体,窗体左边有对象复选框,
右边有过程复选框,假设我们现在想编辑类别ID的程序码,
那么就在左边选取类别ID对象,左边过程选取双击,就会自
动出现如下语句:

    Private Sub 类别ID_DblClick(Cancel As Integer)

        End Sub
然后在两句中间插入程序码。编写好以后,还要进行调试,在
菜单单击调试,选取调试所有模块,如果有错误,则会显示出
错语句。

但是有些对象在窗体中是没有的,因此在如下程序码中碰到这
样的程序码,在创建时需要向模块窗体添加过程,具体步骤如
下:在模块窗体单击菜单栏插入选取过程,出现插入过程对话
框,比如我们现在要插入商品窗体模块中的“Private sub 采
购订单_Enter()”过程,就在插入过程对话框输入“采购订单
_Enter”,在类型框选择“子程序”,在范围框选择“私有”
。又比如在采购订单模块窗体中需要添加
“Function isloaded(byval strformname as string)as integer”
,因为是函数程序码,所以,在插入过程对话框中的类型框中需选择
“函数”,然后在模块窗体中再添加变量定义。

下面以供应商窗体为例:
Private Sub Form_Load()
    If Me.OpenArgs = "GotoNew" And Not IsNull([供应商ID])
Then
    DoCmd.DoMenuItem acFormBar, 3, 0, , acMenuVer70
    End If
End Sub


      十一、 创建必要的数据库面板

面板的创建可以根据自己喜好通过窗体设计视图创建面板窗体,
然后在窗体设置命令按钮,也可加插图标和文字。另一种简单的
方法是通过ACCESS本身带有的面板生成器创建。下面是面板创建
的步骤:单击菜单工具项选取加载项选取开关面板管理器,单击
是按钮,进入面板管理器对话框,单击编辑按钮,单击新建按钮
,在编辑切换面板项目对话框中的文本框输入“查看/输入商品”
,在命令框选择“Open Form in Edit Mode”,在窗体框选择商
品窗体,如图12所示;单击确定按钮,如果还想创建其他项,再
单击新建,进入编辑切换面板对话框,如果想退出则单击关闭,
再单击关闭。为了方便一打开数据库就进入切换面板,必须把面
板设置为启动缺省窗体。请单击菜单的工具项选择启动,在显示
窗体框选择“Switchboard”,如图13所示,单击确定,即完成切
换面板的创建。如果在面板窗体模块中增加如下语句,则面板打
开同时,数据库窗体将以最小化显示在显示器左下角。语句如下:

    DoCmd.SelectObject acForm, "Switchboard", True
DoCmd.Minimize
另外面板窗体左边是图像框,可以加插图片,可以自己动手制作
一个图片,或者从ACCESS本身带来的图片中加插都可以。在面板
设计视图中右键单击图像框,选择属性,单击图片右边代三点的
图片生成器和选择文件路径,ACCESS自带14幅图片,存放在
c:\program files\microsoft office\office\bitmaps\dbwiz\。

                           GO BACK




-- 
Chengyan Che - Software Freelancer, Harbin, P.R.China
-----------------------------------------------------------
Do you need a software developer for your project or just
for your killer money-making idea? Drop me a line and let
me know how I can help you out! 
mailto:checcy@public.hr.hl.cn
ICQ:5116726

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: checcy@public.hr.hl.]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:240.649毫秒