菜鸟ACCESS学习日记(连载)
时间:2009-12-27
来源:互联网
下面是本人的学习日记。当有一些新的认识或体会时,就写在本贴中。本人在ACCESS方面,是一只笨菜鸟,希望大家不要见笑。如果理解有不对之处,也请大家帮忙指出呀!
谢谢了!
[ 本帖最后由 aliceshum 于 2009-12-27 14:35 编辑 ]
作者: aliceshum 发布时间: 2009-12-27
今天发现,ACCESS与EXCEL,互相之间居然都可以进行复制粘贴!这真是一个好消息!大大方便了工作!(考虑到公司数据多,直接在EXCEL中做数据透视,会出现假死机。本人尝试,每次把EXCEL新产生的数据行进行复制,粘贴追加到ACCESS表中;然后,在ACCESS中利用查询,做初步汇总;然后,再把汇总的查询复制到EXCEL中,进行数据透视。这样,最后出现在EXCEL中的数据源,数据就大大减少了,一般为原来的十分之一)
还发现,在ACCESS中,做数据透视,居然也有类似“增加计算字段”“组合”这样的功能,只是叫法,与EXCEL中不同而已。这又是一个好消息,也许,当对美观的要求不高时,数据透视,或者可以考虑直接在ACCESS中进行。
作者: aliceshum 发布时间: 2009-12-27
对ACCESS中查询的理解:
1、有点象EXCEL中的分类汇总,但比它进步得多,体现在:
A:查询不用对数据源排序;分类汇总必须排序
B:查询,当数据源变化时,可以同步更新;分类汇总无此功能
C:查询,可以根据多条件分类汇总;分类汇总,只能根据一个条件分类汇总
D:查询,不影响数据源,查询的结果,可以拿来做其他分析的数据源;分类汇总,多了“汇总”行,一般只能做结果,不能再做其他分析的数据源。
2、又有点象EXCEL中的数据透视表,但又不如数据透视表灵活,体现在:
查询,就象只有行字段,没有列字段,页字段的数据透视表。(如果用交互透视,又象限制行字段只有3个,列字段只有一个,而没有页字段的数据透视表)
综上理解,本人以为,查询,适合做简单的汇总统计,并为进一步的统计分析提供数据源。
[ 本帖最后由 aliceshum 于 2009-12-27 15:00 编辑 ]
作者: aliceshum 发布时间: 2009-12-27
查询中的条件设置,有点象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
作者: zhc19620430 发布时间: 2009-12-27
作者: aliceshum 发布时间: 2009-12-27
也就是说,ACCESS的表与表之间有关联的字段,关联的字段间存在一对一,一对多的关系.
比如:
员工表中有字段:
员工编号 员工名
工资表中有字段:
自动编号 员工编号 月份 工资额
这个"员工编号"是主键,在员工表中有唯一性,不同的记录中不能有相同的员工编号。
但在工资表中在多个记录中可以存在相同的“员工编号”。
所以,员工表与工资表存在一对多的关系. 员工表是"一"的一方,工资表是"多"的一方.
学习ACCESS类的所谓关系型数据库,这是要点。
[ 本帖最后由 pgwq 于 2009-12-27 15:32 编辑 ]
附件

2009-12-27 15:31

2009-12-27 15:32, 下载次数: 69
作者: pgwq 发布时间: 2009-12-27

作者: aliceshum 发布时间: 2009-12-27
在ACCESS查询中,表示日期时,前后要加"#",才能被识别。今天没注意这个问题,折腾了半天,就错在没用"#"上。
实例是这样的:
我想做一个查询,里面要加一个字段:“期间”
这个期间取值为:
当日期<=2009-11-30,就为“~20091130”
当日期>2009-11-30,就为日期本身。
开始,我这样设表达式,结果提示错误;
然后,改成这样,设计视图倒是没提示错误,可是返回数据表视图时就出现错误了;
直到最后,用了"#",才OK。
[ 本帖最后由 aliceshum 于 2009-12-27 16:48 编辑 ]
作者: aliceshum 发布时间: 2009-12-27
作者: qwbdl 发布时间: 2009-12-28
作者: ihtfngfi 发布时间: 2009-12-29
作者: sevensmile 发布时间: 2009-12-29
作者: fiki2000 发布时间: 2009-12-30
今天继续学习ACCESS。
在对表进行筛选过程中,要设条件时,发现,要表示包含XX时,LIKE的通配符要用*,而不是%。
比如,要筛选“客户名称”字段中包含“行政部”的,条件应设为"like *'行政部*'",如下图:
开始不知道,反复试了like "行政部" ,like"%行政部%",都不行。呵呵。
在用ACCESS进行筛选的过程中,也发现,筛选时不象EXCEL那么直观,每个字段都有个下拉箭头,可以方便地筛选。当你不太清楚,这个字段都有哪些值时(比如,备注的内容就千变万化)利用它来做筛选就不太容易。
20100102补充:
但ACCESS的筛选也有优点, 根据这个图标 ,一眼就可以看出, 数据是否被筛选过, 并且可以方便点击一下这个图标,快捷地取消筛选. 而EXCEL中, 根本无法通过这个图标 , 判断是否已对数据进行了筛选, 而想取消筛选, 还得"数据--筛选--全部显示",不如ACCESS快捷。
今天试验,刚发现,在筛选中,要筛选不包含“XX”的数据,只要把LIKE改成NOT LIKE就行了,真是方便呀。比如,不包含“样品”,就在条件行输入
即可。
[ 本帖最后由 aliceshum 于 2010-9-17 14:37 编辑 ]
作者: aliceshum 发布时间: 2010-01-01
作者: bibisin 发布时间: 2010-01-01
关于“表关系”的设置
我有两个表:
A表包含"省份""客户名"及其他销售信息字段
B表包含"省份""客户名""区域"三个字段.
现在,我想将B表的"区域"字段,用关系引到A表中.但是,不同"省份"的"客户名"可能有重复,
而同一省份的"客户名"就没有重复。如图:
所以,必须是"省份""客户名"都相同,才能确定唯一的客户,去对应区域.
开始, 我以为要设“复合主键”什么的,弄来弄去都不行。后来请教了别人,才知道,原来,只要在查询时,同时设置“省份”对应“省份”,“客户名”对应“客户名”即可。如图:
还要记得,设置一下“关系”的联接属性:
这样,才能保证,“客户销售表”中所有数据都被包含在里面。
最后的结果如图:
这个设置“表关系”的功能是十分有用的,可以大大减少我们的工作量。比如,我们有两个表,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
ACCESS查询中,使用日期函数
因为要做库存日动态表,显示每天各产品的出库,入库数。 我这样设计,一般只表现近一个月来每天的出库,入库数,一个月前的,通通用“开业至09XXXX”表示。开始,我在查询中,这样设置:
结果日期是这样的,
导到EXCEL后,做数据透视表,不能自动按日期顺序排序(2009-12-2和2009-12-8居然排在2009-12-11的后面)
后来,改了一下设置,让日期都显示完整的八位数
这回再导到EXCEL中,做数据透视表,它就听话地按日期排序了!
[ 本帖最后由 aliceshum 于 2010-1-2 11:54 编辑 ]
作者: aliceshum 发布时间: 2010-01-02
设"表关系"时,注意有个联接键,必须唯一。
今天我就出错了.。是这样的:
我有两个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
总觉得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
作者: lfue 发布时间: 2010-01-19

作者: purpledragoon 发布时间: 2010-01-20
今天做一个查询求和时, 因为有空格, 出了错; 后来, 请教了别人, 用了NZ函数, 才得出正确的结果.
原表如下图:
一\ 当这样设查询条件时:
结果是错的, 如下(可以看到, 第二,第三行"全天"列均错):
二\当加了"NZ"函数后:
得出了正确的结果.
那为什么呢? 本人理解:在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
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28