分享

如何学Access2003

 zhandzhend 2012-01-09

废话:学Access我一直认为没有必要,学深点吧,没有能力,学浅点吧,没有意义,因为一般的情况用Excel已经足够用了,且更为方便。不过闲来无事,还是自学了一点,如果有人跟我一样无聊的话,倒不妨跟我学学,以避免自己浪费太多的时间。

要学之前,为了避免象我几个星期以前一样一头雾水,先介绍几个我自己学时用的我认为值得下载的资料,当然首先先要下载安装好Access2003。一个是《Access2000VBA一册通》,一个是《Microsoft Office Access 2003 Visual Basic 参考》,一个是《access编程-操作()》。

 

下面先谈谈我对Access2003的初浅认识:

表,没什么可说的,自然是用来存放基本数据的。

查询,我认为应该是Access2003的核心了,对于Excel来说,强大的功能是函数的计算,对于Access2003来说,我觉得就是查询了,通过查询,完成数据的连接和重组等,以我的理解也就是“计算”。

窗体,窗体就是界面,如果不使用窗体的话,学Access2003基本就没意义了,如果数据的输入处理直接从表上或查询中进行,那用Excel就行了。窗体是Access2003的意义所在,也是麻烦所在啊。

报表,顾名思义就是报表罗。Access2003的报表的设置也是麻烦事,哪象Excel想怎样就怎样,不过谁叫你想什么都自动呢,手动有时就是灵活嘛。

Access2003VBA主要理解几个概念:

属性,比如我的名字,“名字”就是我的属性。属性的设置有两种方式,不变的,就在属性表中设置好了,比如默认值什么的。需要变动的可以在VBA语句中设置,比如,要让空值时按键不起作用,当然只能在VBA语句中设置了。

方法,比如我吃饭,“吃饭”就是方法,可以理解为“动作”。各种的方法就是各种的“动作”。

事件,比如中午时我吃饭,“中午时”就是事件,就是“动作”发生的时间罗。

VBA语句就是说明“在什么时候,什么东东做什么或什么东东的属性改成什么”

 

接下来言归正传,既然查询是核心,也起着承上启下的作用,所以先把我对查询的总结分享给初学者。

(懒人需要相关示例的可联系QQ188291180

查询我认为可分成两类,一类包括简单查询、联接查询、联合查询,这类查询只能用手动组建。另一类包括追加查询、删除查询、生成表查询、数据定义查询,这类查询主要通过VBA语句完成,属自动组建。

类别 说明 SQL语句/VBA语句 示例文件名
简单查询 多字段 SELECT A班语文成绩.姓名, A班语文成绩.语文成绩 简单查询01
    FROM A班语文成绩;  
简单查询 单字段 SELECT 姓名 简单查询02
    FROM A班语文成绩;  
简单查询 全字段 SELECT * 简单查询03
    FROM A班语文成绩;  
简单查询 DISTINCT SELECT DISTINCT A班语文成绩.姓名 简单查询04
    FROM A班语文成绩;  
简单查询 DISTINCT SELECT DISTINCT A班语文成绩.姓名, A班语文成绩.性别 简单查询05
    FROM A班语文成绩;  
简单查询 TOP SELECT TOP 2 * 简单查询06
    FROM A班语文成绩;  
简单查询 TOP SELECT TOP 2 姓名, 语文成绩 简单查询07
    FROM A班语文成绩;  
简单查询 TOP /PERCENT SELECT TOP 73 PERCENT 姓名, 语文成绩 简单查询08
    FROM A班语文成绩;  
简单查询 WHERE/=>< SELECT * 简单查询09
    FROM A班语文成绩  
    WHERE (((A班语文成绩.姓名)="张三"));  
简单查询 WHERE/=>< SELECT * 简单查询10
    FROM A班语文成绩  
    WHERE 语文成绩=75;  
简单查询 WHERE/NULL SELECT * 简单查询11
    FROM A班语文成绩  
    WHERE 语文成绩 IS NOT NULL;  
简单查询 WHERE/LIKE SELECT * 简单查询12
    FROM A班语文成绩  
    WHERE (((A班语文成绩.姓名) Not Like "张*"));  
简单查询 WHERE/IN SELECT * 简单查询13
    FROM A班语文成绩  
    WHERE (((A班语文成绩.姓名) Not In ("张三","李四")));  
简单查询 WHERE/BETWEEN SELECT * 简单查询14
    FROM A班语文成绩  
    WHERE (((A班语文成绩.姓名) Not Between "张三" And "李四"));  
简单查询 WHERE/BETWEEN SELECT * 简单查询15
    FROM A班语文成绩  
    WHERE (((A班语文成绩.语文成绩) Not Between 60 And 80));  
简单查询 WHERE/OR/AND SELECT * 简单查询16
    FROM A班语文成绩  
    WHERE (((A班语文成绩.姓名)='张三' Or (A班语文成绩.姓名)='李四') AND ((A班语文成绩.性别)="男"));  
简单查询 WHERE/ORDER BY SELECT * 简单查询17
    FROM A班语文成绩  
    WHERE (((A班语文成绩.语文成绩)>60))  
    ORDER BY A班语文成绩.语文成绩, A班语文成绩.姓名;  
简单查询 ORDER BY/DESC SELECT * 简单查询18
    FROM A班语文成绩  
    ORDER BY A班语文成绩.语文成绩, A班语文成绩.姓名 DESC;  
简单查询 AS SELECT B.姓名 AS NAME, B.性别 AS XB 简单查询19
    FROM A班语文成绩 AS B;  
       
联接查询 INNER JOIN SELECT A班语文成绩.姓名, A班语文成绩.性别, A班语文成绩.语文成绩, A班数学成绩.数学成绩 联接查询01
    FROM A班语文成绩 INNER JOIN A班数学成绩 ON A班语文成绩.姓名 = A班数学成绩.姓名;  
    说明:INNER JOIN 关键字在表中存在至少一个匹配时返回行,没有匹配,就不会列出这些行。  
联接查询 LEFT JOIN SELECT A班语文成绩.姓名, A班语文成绩.性别, A班语文成绩.语文成绩, A班数学成绩.数学成绩 联接查询02
    FROM A班语文成绩 LEFT JOIN A班数学成绩 ON A班语文成绩.姓名 = A班数学成绩.姓名;  
    说明:LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。  
联接查询 RIGHT JOIN SELECT A班语文成绩.姓名, A班语文成绩.性别, A班语文成绩.语文成绩, A班数学成绩.数学成绩 联接查询03
    FROM A班语文成绩 RIGHT JOIN A班数学成绩 ON A班语文成绩.姓名 = A班数学成绩.姓名;  
    说明:RIGHT JOIN 关键字会右表那里返回所有的行,即使在左表中没有匹配的行。  
联接查询 FULL JOIN SELECT A班语文成绩.姓名, A班语文成绩.性别, A班语文成绩.语文成绩, A班数学成绩.数学成绩 联接查询04
    FROM A班语文成绩, A班数学成绩;  
    说明:会从左表和右表那里返回所有的行。  
       
联合查询 UNION SELECT * FROM A班语文成绩 UNION  SELECT * FROM B班语文成绩 UNION SELECT * FROM C班语文成绩; 联合查询01
联合查询 UNION SELECT 姓名,性别 FROM A班语文成绩 UNION  SELECT 姓名,性别  FROM B班语文成绩 UNION SELECT 姓名,性别  FROM C班语文成绩; 联合查询02
联合查询 UNION/ALL SELECT 姓名,性别 FROM A班语文成绩 UNION  ALL SELECT 姓名,性别  FROM B班语文成绩 UNION ALL SELECT 姓名,性别  FROM C班语文成绩; 联合查询03
    说明:UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型(是指语句所指向的列,并非指实际的各表,实际的各表列数可不同,只要所取的列相同即可)。同时,每条 SELECT 语句中的列的顺序必须相同(是指不同的顺序会造成联合段的错位)。默认地,UNION 操作符选取不同的值。如果允许重复的值,应使用 UNION ALL。另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。  
       
追加查询 VALUES/全字段 Private Sub 追加_Click() 窗体追加删除查询1
删除查询   DoCmd.RunSQL ("INSERT INTO A班语文成绩副本 VALUES (10, 010, 'A','王山', '男', 60)")  
    End Sub  
    Private Sub 删除_Click()  
    DoCmd.RunSQL ("DELETE * FROM A班语文成绩副本 WHERE 编号=10")  
    End Sub  
    说明:“编号”字段为自动编号,追加的编号不能重复,应大于现有的编号,或为已删除了的编号。  
追加查询 VALUES/选字段 Private Sub 追加_Click() 窗体追加删除查询2
删除查询   DoCmd.RunSQL ("INSERT INTO A班语文成绩副本 (学号,姓名,语文成绩 )VALUES ('010','王山', 60)")  
    End Sub  
    Private Sub 删除_Click()  
    DoCmd.RunSQL ("DELETE 姓名 FROM A班语文成绩副本 WHERE 学号='010'")  
    End Sub  
    说明1:“编号”字段为自动编号可不写,则表将按顺序自动编号。  
    说明2:删除都是删除一整行,不存在只删除一字段内容的情况。  
追加查询 表加表 Private Sub 追加_Click() 窗体追加删除查询2
删除查询   DoCmd.RunSQL ("INSERT INTO A班语文成绩副本 (学号,姓名,语文成绩) SELECT 学号,姓名,语文成绩 FROM B班语文成绩副本 ORDER BY 姓名")  
    End Sub  
    Private Sub 删除_Click()  
    DoCmd.RunSQL ("DELETE  FROM A班语文成绩副本 WHERE 班级 is null")  
    End Sub  
    说明:“编号”字段为自动编号可不写,则表将按顺序自动编号。  
       
生成表查询 全字段 Private Sub 生成表_Click() 窗体生成表查询1
删除查询   DoCmd.RunSQL ("select * into A班语文成绩备份 FROM A班语文成绩 WHERE (语文成绩>60)")  
    End Sub  
    Private Sub 删除_Click()  
    DoCmd.RunSQL ("DELETE * FROM A班语文成绩备份")  
    End Sub  
    说明:可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的  
       
生成表查询 选字段 Private Sub 生成表_Click() 窗体生成表查询2
数据定义查询 删除表 DoCmd.RunSQL ("select 姓名,语文成绩 into A班语文成绩备份 FROM A班语文成绩 WHERE (语文成绩>60)")  
    End Sub  
    Private Sub 删除表_Click()  
    DoCmd.RunSQL ("DROP TABLE A班语文成绩备份")  
    End Sub  
生成表查询 表加表 Private Sub 生成表_Click() 窗体生成表查询3
数据定义查询 删除表 DoCmd.RunSQL ("select A班语文成绩.姓名,A班语文成绩.语文成绩,A班数学成绩.数学成绩 into A班成绩备份 FROM A班语文成绩 inner join A班数学成绩 on A班语文成绩.姓名 = A班数学成绩.姓名")  
    End Sub  
    Private Sub 删除表_Click()  
    DoCmd.RunSQL ("DROP TABLE A班成绩备份")  
    End Sub  
    说明:生成表查询如果表已存在的将被删除。生成表查询可以用联接语句以从两表中取字段。生成表不产生主键。  
数据定义查询 增加列 Private Sub 增加列_Click() 数据定义查询1
数据定义查询 删除列 DoCmd.RunSQL ("ALTER TABLE B班语文成绩副本 ADD COLUMN 备注 string,上学期语文成绩 INT")  
    End Sub  
    Private Sub 删除列_Click()  
    DoCmd.RunSQL ("ALTER TABLE B班语文成绩副本 DROP COLUMN 备注 ,上学期语文成绩 ")  
    End Sub  
    说明1:删除表中列,但不能删除主键列  
    说明2:向表中增加列,应注意表中自动编号只能有一个,且列必须指定数据类型。  
数据定义查询 更改数据类型 Private Sub 更改数据类型_Click() 数据定义查询2
    DoCmd.RunSQL ("ALTER TABLE B班语文成绩副本 ALTER COLUMN 语文成绩 text")  
    End Sub  
    Private Sub 更改数据类型2_Click()  
    DoCmd.RunSQL ("ALTER TABLE B班语文成绩副本 ALTER COLUMN 语文成绩 int")  
    End Sub  
    说明:更改表中列的数据类型,主键的类型也可更改,但当表中有数据时,数据类型不能改为自动编号,要改应选删除所有数据  
数据定义查询 删除主键 Private Sub 删除主键_Click() 数据定义查询3
    DoCmd.RunSQL ("ALTER TABLE B班语文成绩副本 DROP CONSTRAINT PRIMARYKEY")  
    End Sub  
  增添主键 Private Sub 增添主键_Click()  
    DoCmd.RunSQL ("ALTER TABLE B班语文成绩副本 ADD PRIMARY KEY (编号,学号)")  
    End Sub  
    说明1:删除表中主键,注意PRIMARYKEY要连写  
    说明2:添加表主键,注意表中存在主键则显示出错,加一个或两主键都要用括号括起。  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多