+ -
当前位置:首页 → 问答吧 → 菜鸟ACCESS学习日记(连载)

菜鸟ACCESS学习日记(连载)

时间:2009-12-27

来源:互联网

初识ACCESS是在今年年中,决定要开始正式学习,并慢慢找机会应用到工作中,是在最近。因为公司的数据越来越多,用EXCEL做统计,常常假死机,十分烦恼。很多高手,都建议数据多时,要用ACCESS做后台,EXCEL做前台,于是决定开始学习ACCESS。

下面是本人的学习日记。当有一些新的认识或体会时,就写在本贴中。本人在ACCESS方面,是一只笨菜鸟,希望大家不要见笑。如果理解有不对之处,也请大家帮忙指出呀!

谢谢了!

[ 本帖最后由 aliceshum 于 2009-12-27 14:35 编辑 ]

作者: aliceshum   发布时间: 2009-12-27

091227:

今天发现,ACCESS与EXCEL,互相之间居然都可以进行复制粘贴!这真是一个好消息!大大方便了工作!(考虑到公司数据多,直接在EXCEL中做数据透视,会出现假死机。本人尝试,每次把EXCEL新产生的数据行进行复制,粘贴追加到ACCESS表中;然后,在ACCESS中利用查询,做初步汇总;然后,再把汇总的查询复制到EXCEL中,进行数据透视。这样,最后出现在EXCEL中的数据源,数据就大大减少了,一般为原来的十分之一)

还发现,在ACCESS中,做数据透视,居然也有类似“增加计算字段”“组合”这样的功能,只是叫法,与EXCEL中不同而已。这又是一个好消息,也许,当对美观的要求不高时,数据透视,或者可以考虑直接在ACCESS中进行。

作者: aliceshum   发布时间: 2009-12-27

091227:

对ACCESS中查询的理解:

1、有点象EXCEL中的分类汇总,但比它进步得多,体现在:
A:查询不用对数据源排序;分类汇总必须排序
B:查询,当数据源变化时,可以同步更新;分类汇总无此功能
C:查询,可以根据多条件分类汇总;分类汇总,只能根据一个条件分类汇总
D:查询,不影响数据源,查询的结果,可以拿来做其他分析的数据源;分类汇总,多了“汇总”行,一般只能做结果,不能再做其他分析的数据源。
2、又有点象EXCEL中的数据透视表,但又不如数据透视表灵活,体现在:
  查询,就象只有行字段,没有列字段,页字段的数据透视表。(如果用交互透视,又象限制行字段只有3个,列字段只有一个,而没有页字段的数据透视表)

综上理解,本人以为,查询,适合做简单的汇总统计,并为进一步的统计分析提供数据源。

[ 本帖最后由 aliceshum 于 2009-12-27 15:00 编辑 ]

作者: aliceshum   发布时间: 2009-12-27

091227:

查询中的条件设置,有点象EXCEL中的高级筛选,同行是“与”,不同行是“或”。但又有不同:
高级筛选中,同一字段可以出现多次,比如:
   日期                      日期                   客户
>=2009-10-1      <=2009-11-30            中国联通
查询中,一个字段只能出现一次,如果要对此字段设两个以上条件,必须用其他方式表达,比如上例,应改为:
                             日期                               客户
between #2009-10-1# and #2009-11-30#          中国联通

[ 本帖最后由 aliceshum 于 2009-12-27 14:57 编辑 ]

作者: aliceshum   发布时间: 2009-12-27

有些不一样吧,我也在学习ACCESS,向你学习。

作者: zhc19620430   发布时间: 2009-12-27

我只是菜鸟哦,在这里一起学习吧。

作者: aliceshum   发布时间: 2009-12-27

从EXCEL转向ACCESS学习,需要了解ACCESS是关系型数据库.
也就是说,ACCESS的表与表之间有关联的字段,关联的字段间存在一对一,一对多的关系.

比如:
员工表中有字段:
员工编号   员工名     

工资表中有字段:
自动编号  员工编号  月份   工资额

这个"员工编号"是主键,在员工表中有唯一性,不同的记录中不能有相同的员工编号。
但在工资表中在多个记录中可以存在相同的“员工编号”。
所以,员工表与工资表存在一对多的关系.  员工表是"一"的一方,工资表是"多"的一方.

学习ACCESS类的所谓关系型数据库,这是要点。

[ 本帖最后由 pgwq 于 2009-12-27 15:32 编辑 ]

附件

表的关系.JPG(64.18 KB)

2009-12-27 15:31

lizi.rar(6.94 KB)

2009-12-27 15:32, 下载次数: 69

作者: pgwq   发布时间: 2009-12-27

谢谢分享.

作者: aliceshum   发布时间: 2009-12-27

091227:

在ACCESS查询中,表示日期时,前后要加"#",才能被识别。今天没注意这个问题,折腾了半天,就错在没用"#"上。

实例是这样的:
我想做一个查询,里面要加一个字段:“期间”
这个期间取值为:
当日期<=2009-11-30,就为“~20091130”
当日期>2009-11-30,就为日期本身。

开始,我这样设表达式,结果提示错误;
未命名1.jpg (29.46 KB)
2009-12-27 16:48


然后,改成这样,设计视图倒是没提示错误,可是返回数据表视图时就出现错误了;
未命名2.jpg (14.99 KB)
2009-12-27 16:48


未命名2.5.jpg (14.21 KB)
2009-12-27 16:48


直到最后,用了"#",才OK。
未命名3.jpg (15.62 KB)
2009-12-27 16:48


[ 本帖最后由 aliceshum 于 2009-12-27 16:48 编辑 ]

作者: aliceshum   发布时间: 2009-12-27

继续努力....我正想学习...

作者: qwbdl   发布时间: 2009-12-28

看不懂,哎!还是要从头学起啊!

作者: ihtfngfi   发布时间: 2009-12-29

我们一起学习,我也刚开始学ACC

作者: sevensmile   发布时间: 2009-12-29

正在学习,谢谢分享!

作者: fiki2000   发布时间: 2009-12-30

20100101:
今天继续学习ACCESS。
在对表进行筛选过程中,要设条件时,发现,要表示包含XX时,LIKE的通配符要用*,而不是%。
比如,要筛选“客户名称”字段中包含“行政部”的,条件应设为"like *'行政部*'",如下图:
未命名.jpg (16.38 KB)
2010-1-1 20:51


开始不知道,反复试了like "行政部" ,like"%行政部%",都不行。呵呵。

在用ACCESS进行筛选的过程中,也发现,筛选时不象EXCEL那么直观,每个字段都有个下拉箭头,可以方便地筛选。当你不太清楚,这个字段都有哪些值时(比如,备注的内容就千变万化)利用它来做筛选就不太容易。

20100102补充:
但ACCESS的筛选也有优点, 根据这个图标
未命名5.jpg (1.24 KB)
2010-1-2 21:35
,一眼就可以看出, 数据是否被筛选过, 并且可以方便点击一下这个图标,快捷地取消筛选. 而EXCEL中, 根本无法通过这个图标
未命名6.jpg (907 Bytes)
2010-1-2 21:35
, 判断是否已对数据进行了筛选, 而想取消筛选, 还得"数据--筛选--全部显示",不如ACCESS快捷。

今天试验,刚发现,在筛选中,要筛选不包含“XX”的数据,只要把LIKE改成NOT LIKE就行了,真是方便呀。比如,不包含“样品”,就在条件行输入
未命名.jpg (8.03 KB)
2010-1-2 21:32

即可。

[ 本帖最后由 aliceshum 于 2010-9-17 14:37 编辑 ]

作者: aliceshum   发布时间: 2010-01-01

谢谢LZ分享,好有干劲啊

作者: bibisin   发布时间: 2010-01-01

20100102

关于“表关系”的设置

我有两个表:
A表包含"省份""客户名"及其他销售信息字段
未命名3.jpg (42.55 KB)
2010-1-2 10:26


B表包含"省份""客户名""区域"三个字段.
未命名4.jpg (29.45 KB)
2010-1-2 10:26


现在,我想将B表的"区域"字段,用关系引到A表中.但是,不同"省份"的"客户名"可能有重复,
而同一省份的"客户名"就没有重复。如图:
未命名6.jpg (22.56 KB)
2010-1-2 10:26


所以,必须是"省份""客户名"都相同,才能确定唯一的客户,去对应区域.

开始, 我以为要设“复合主键”什么的,弄来弄去都不行。后来请教了别人,才知道,原来,只要在查询时,同时设置“省份”对应“省份”,“客户名”对应“客户名”即可。如图:
未命名.jpg (22.75 KB)
2010-1-2 10:26


还要记得,设置一下“关系”的联接属性:
未命名2.jpg (38.97 KB)
2010-1-2 10:26

这样,才能保证,“客户销售表”中所有数据都被包含在里面。

最后的结果如图:
未命名5.jpg (48.04 KB)
2010-1-2 10:26


这个设置“表关系”的功能是十分有用的,可以大大减少我们的工作量。比如,我们有两个表,A表是所有产品的销售信息;B表是所有单个产品本身的信息,可能包括产品代码,名称,规格,单位,单价等等。那么,有了B表,我们在A表中,可以只输每个产品的代码,至于“名称,规格,单位,单价”等等,都可以不输了,用“表关系”引过去即可。是不是很省力呢?

它其实,有点类似于我们在EXCEL中的VLOOKUP,但又有不同:
1、VLOOKUP有时不小心,就会出错(比如,查找区域忘记用绝对引用加$;比如,第四个参数该用0是没用0;比如,查找值与查找区域第一列数字类型不一致。。。)而这个“表关系”一旦设好了,就很顺利。
2、另外,用VLOOKUP,当有新数据时,还得执行“公式下拉”这一步;而“表关系”一旦设好,表一变,查询跟着自动更新。
3、正如VAT会员说的,用EXCEL时,常常是把数据、分析和展示混到一起了,无法防止对原始数据的有意无意间的变动,而在EXCEL中用VLOOKUP时,当然也不例外,其实公式与表现形式在同一单元格中,有时,可能手不小心就动到,把公式改了,出错了都不知道,;而用ACCESS中的表关系,数据和展示相分离,极少会有不小心改动的情况出现。

[ 本帖最后由 aliceshum 于 2010-1-2 11:42 编辑 ]

作者: aliceshum   发布时间: 2010-01-02

20100102:
ACCESS查询中,使用日期函数

因为要做库存日动态表,显示每天各产品的出库,入库数。 我这样设计,一般只表现近一个月来每天的出库,入库数,一个月前的,通通用“开业至09XXXX”表示。开始,我在查询中,这样设置:
未命名1.jpg (18.56 KB)
2010-1-2 11:53


结果日期是这样的,
未命名2.jpg (22.8 KB)
2010-1-2 11:53


导到EXCEL后,做数据透视表,不能自动按日期顺序排序(2009-12-2和2009-12-8居然排在2009-12-11的后面)

后来,改了一下设置,让日期都显示完整的八位数
未命名3.jpg (20.79 KB)
2010-1-2 11:53


未命名4.jpg (27.77 KB)
2010-1-2 11:53


这回再导到EXCEL中,做数据透视表,它就听话地按日期排序了!

[ 本帖最后由 aliceshum 于 2010-1-2 11:54 编辑 ]

作者: aliceshum   发布时间: 2010-01-02

02100102:

设"表关系"时,注意有个联接键,必须唯一。

今天我就出错了.。是这样的:
我有两个ACCESS表,A表记录产品的出入库情况;B表记录每个单个产品的信息,包括产品代码,品名,规格,单位等。然后,我做查询,用产品代码作为两表的联接键,把B表中的品名,规格,单位等信息,引到A表中。(联接属性,设为“包括A表所有记录,和B表中联接字段相等的记录”)

结果不对:A表只有2000行,但查询出来的结果,为2096行。我反复地检查,看不出哪里错了;删掉查询,重做一次,仍然如此。这时,想到,有可能是B表的“产品代码”有重复记录。于是,导出到EXCEL中,用COUNTIF一查,果然,有四个产品重复。删掉后,再重新查询,这回终于对了!

所以,在做表关系时,要注意,做联接键的那个字段,值不能重复。(因本人是菜鸟,现在还不知道,要怎么限制重复。好象是在设表字段属性那里,“索引”选“有,无重复”可以吧,呵呵。再学习。)

(对ACCESS查询不熟的时候, 只好多用用笨办法,  查询后,对比一下查询结果的行数,与原表的行数是否一致了. )

[ 本帖最后由 aliceshum 于 2010-1-2 14:19 编辑 ]

作者: aliceshum   发布时间: 2010-01-02

不同表的字段不要有重复.
  
详见:

关系型数据库必须遵循的三个完整性规则

[ 本帖最后由 pgwq 于 2010-1-2 18:25 编辑 ]

作者: pgwq   发布时间: 2010-01-02

100107:

总觉得EXCEL的筛选比ACCESS更方便(当然, 如15楼所说, 在筛选方面, ACCESS也有个优于EXCEL的地方, 就是, 一眼可以看出, 当前数据是否被筛选过, 而在EXCEL中, 是看不出来的). 今天, 又学会了ACCESS中的部分筛选方法.
EXCEL自定义筛选中的"始于1""止于1""并非起始于1""并非结束于1",来到ACCESS后,对应:
like"1*"
like"*1"
not like"1*"
not like"*1"

作者: aliceshum   发布时间: 2010-01-07

留个记号,正想学access

作者: lfue   发布时间: 2010-01-19

非常有用,便于我这样的新手了解,谢谢

作者: purpledragoon   发布时间: 2010-01-20

初识"NZ"函数:
今天做一个查询求和时, 因为有空格, 出了错; 后来, 请教了别人, 用了NZ函数, 才得出正确的结果.

原表如下图:

原表.jpg (10.61 KB)
2010-2-4 23:37



一\ 当这样设查询条件时:

错误的公式.jpg (22.36 KB)
2010-2-4 23:37


结果是错的, 如下(可以看到, 第二,第三行"全天"列均错):

出错.jpg (8.61 KB)
2010-2-4 23:37


二\当加了"NZ"函数后:

正确的公式.jpg (26.41 KB)
2010-2-4 23:38


得出了正确的结果.

正确.jpg (8.06 KB)
2010-2-4 23:38


那为什么呢? 本人理解:在ACCESS中, 空格和数值相加, 是不允许的, 所以结果为空; 而NZ的功能, 就是把空格变成0, 那么, 0就可以和数值相加了.

NZ, 可能是NULL ZERO的缩写吧. 从NULL(空格)到ZERO(0), 我是这样记的. 呵呵.

[ 本帖最后由 aliceshum 于 2010-2-4 23:46 编辑 ]

作者: aliceshum   发布时间: 2010-02-04

跟着楼主学习

作者: 安贤   发布时间: 2010-02-05

关注,我也学习过,但总是半途而废

作者: ymh282   发布时间: 2010-02-17

工作中用得不多.

作者: hyhhh   发布时间: 2010-02-18

关注中。。。。

作者: b2k4   发布时间: 2010-02-19

你继续讲,我期待听你讲。
哈哈......实际ACCESS就是我们常说的数据库管理系统(DataBase Management System,DBMS),它比Execl存储数据量大,易于开发,但也存在使用上的不方便和不灵活。我也是刚学习,认识比较潜伏吧,说的不对还请大家包涵。
  首先,你要开发你的模块时必须先做个模型(实际Excel也一样)。所谓模型就是说你要做什么,需要达到什么目的和效果,勾勒出自己草图来。根据这个模型,你就可以做出你的关系数据库。

[ 本帖最后由 zhc19620430 于 2010-2-19 11:16 编辑 ]

作者: zhc19620430   发布时间: 2010-02-19

向你学习!!!

作者: liechun1983   发布时间: 2010-02-19

这样的笔记很适合我们,谢谢

作者: sonjab   发布时间: 2010-02-20

热门下载

更多