在做这个程序之前必须要申请变量,并对其中要用到的常量进行定义。
这儿的变量和我们在数学中所遇到的变量的概念基本上是一样的,它是一个数据,但随时可以改编它所对应的数值。 常量这个概念和变量是对应的,变量的值在程序运行过程当中允许变化,而常量的值却是不变的。
在计算机中,变量和常量在使用之前都必须先定义,不然在程序当中就会被认为是非法的字符。 在VBA中,有几种定义变量和常量的方法,首先,我们可以用“Public Const 常量名= 常量表达式”来定义一个常量,就像
Public const PI = 3.1415926
这个语句就定义了一个很常用的常量,以后当我们想使用圆周率的时候只要用“PI”代替就可以了。在这个语句中“Public”用来表示这个常量的作用范围是整个数据库的所有过程。如果我们这时用“Private”来代替它,则这个常量只能在现在的这个模块中使用了。“Const”语句用来表示要申明的是个常量而非变量。
申请变量和申请常量差不多,通常我们用“Dim 变量 As 变量类型”语句来申明一个变量,其中“Dim”和常量申请语句中的“Const”作用类似,它告诉Access,现在申请的是“变量”而不是常量。比如
Dim number As Integer
就是说现在我们申明了一个整数类型的变量“number”,以后在程序中“number”就表示一个变量,而不再是普通的字符组合了。变量在程序中可以被赋予新的值,“number = 4”这个语句就是一个赋值语句。这样变量“number”就有了一个值“4”。如果后来又有一个相似的语句“number = 3223”,则变量“number”的值就会变成“3223”了。 让我们看一个例子:
Public Const PI=3.1415926
DIM a,number As Integer
number = 159
a = number *23/ PI+323
在四个语句中,第一条申明了一个常量“PI”,第二条申明了两个整数类型的变量“a”和“number”,第三条是一个赋值语句,通过它将变量“number”赋予值“159”,而第四条语句则是将变量“number”的值乘以“23”,然后除以常量“PI”,也就是除以“3.1415926”,然后将所得的值加上“323”,并把最终的值赋给变量“a”。
查询SQL视图的切换
在使用过程中,我们经常会使用到一些查询,但这些查询用各种查询向导和设计器都无法做出来,不知道你还记不记得,在查询那一课中我们讲过SQL查询,用这种查询就可以完成比较复杂的查询工作。当时你还刚刚开始使用ACCESS,用设计视图和向导就可以建立很多有用的查询,这些足够你掌握一段时间了,而且它的功能已经基本上能满足我们的需要。而SQL语言作为一种通用的数据库操作语言,并不是ACCESS用户必须要掌握的,但在实际的工作中有北匦胗玫秸庵钟镅圆拍芡瓿梢恍┨厥獾墓ぷ鳌?
单纯的SQL语言所包含的语句并不多,但在使用的过程中需要大量输入各种表、查询和字段的名字。这样当你建立一个涉及大量字段的查询时,就需要输入大量文字,与用查询设计视图建立查询相比,就麻烦多了。所以我在建立查询的时候也都是先在查询设计视图将基本的查询功能都实现了,最后再切换到SQL视图通过编写SQL语句完成一些特殊的查询。下面我们就介绍一些在ACCESS使用中常常会用到的一些SQL语言。
我们说过在建立查询的时候可以切换到SQL视图去,下面来看看是怎么切换的:
当你打开一个查询以后,单击“新建方法”列表的时候并没有一个“使用SQL视图创建查询”的选项,
这也表明ACCESS并不提倡在工作中使用SQL语言,那我们就单击“在设计视图中创建查询”这一项,之后将会在屏幕上出现一个设计视图,
现在我们要切换到SQL视图,只要将鼠标移动到工具栏最左面的“视图”选项按钮右边的向下按钮上,单击鼠标左键,在弹出的下拉菜单中选中“SQL 设计视图”项就可以将视图切换到SQL状态。 基本的SQL语句
在SQL语言中用得最多的就是SELECT语句了。我们就先讲讲SELECT语句吧。 SELECT语句构成了SQL数据库语言的核心,它的语法包括5个主要子句,分别是FORM、WHERE、GROUP BY、HAVING、ORDER BY子句。
SELECT语句的结构是这样的。 SELECT 〈字段列表〉 FROM 〈表列表〉 [ WHERE〈行选择说明〉][GROUP BY 〈分组说明〉][ HAVING 〈组选择说明〉] [ORDER BY 〈排序说明〉];
实际上,当我们要将表1的字段1和字段3用来建立一个查询的话,只需要书写下面这样一条语句就可以了。 SELECT 表1.字段1,表1.字段3(表的名字、字段名最好和具体的例子结合起来,下同) FROM 表1;
我们可以这样理解这句话,从表1中选择出字段1和字段3,选中的每个字段都用逗号隔开,并且每个字段前面都列的有表或查询的名字,并用“.”联起来。而FROM后面则需要有包含这些字段的所有表的名称,各个名称之间要用逗号联接起来。
现在我们可以单击“工具”菜单上的“执行”按钮,
现在我们看到了这个查询的结果,和直接用查询视图设计的查询产生了相同的效果。其实ACCESS中所有的数据库操作都是由SQL语言构成的,微软公司只是在其上增加了更加方便的操作向导和可视化设计罢了。
当我们直接用设计视图建立一个同样的查询以后,将视图切换到SQL视图,你会惊奇的发现,在这个视图中的SQL编辑器中有同样的语句。看来是ACCESS自动生成的语句。 原来ACCESS也是先生成SQL语句,然后用这些语句再去操作数据库。
现在我们再讲讲SELECT语句中后几种子句的用途吧。你发现这些子句都被方括号适起来了,这是表明这些子句在SELECT语句中都是可选项目,其中WHERE 子句是一个行选择说明子句,用这个语句可以对我们所选的行,就是表中的记录进行限制,当WHERE 后面的行选择说明为真的时候才将这些行作为查询的行,而且在WHERE中还可以有多种约束条件,这些条件可以通过“AND”这样的逻辑运算符联接起来。
SELECT 表1.字段1,表1.字段3
FROM 表1
WHERE 表1.字段2 = 2;
现在我们再单击工具栏中的“执行”按钮,这个操作就不能在查询设计视图中做出来。让我们将视图切换到设计视图,你看,这个功能在设计视图中也能实现。
原来只需要将字段“单价”也作为一个字段放入查询表格中,并在准则中将这个字段的值设置为“
单击工具栏上的“执行”按钮就会发现这个SQL语句将字段2中的所有记录分成了几组,并将这几组的总消耗都统计了出来,其中SUM函数是用来产生合计的函数。
现在再讲讲HAVING子句,当你在使用GROUP BY 子句对表或查询中的记录进行分组的时候,有时我们会要求对所选的记录进行限制,只允许满足条件的行进行分组和各种统计计算。于是我们写到 SELECT 表1.字段2,SUM( 表1.字段3)
FROM 表1
GROUP BY 字段2
HAVING 表1.字段2= 2;
单击工具栏上的“执行”按钮,我们发现这两个查询产生的结果是一样的。
但在标准的SQL语言中,要和GROUP BY 共同使用的条件限制语句只有 HAVING 子句,所以要记住在使用GROUP BY 子句时最好不要用WHERE 子句来对条件进行限制。 在这个SELECT 语句中还有一个ORDER BY 语句,这个语句是用来将各种记录进行排序。
SELECT 表1.字段2,SUM( 表1.字段3)
FROM 表1
ORDER BY 表1.字段3;
现在执行这个查询,我们发现所有记录的顺序是按照字段3来进行的。
通过这个例子你现在会使用这个子句了吧?
SQL语句的单一功能非常简单,掌握起来也很容易。但要将这些语句组合起来建立一个较大的查询,还需要在输入各种表、查询和它们中的字段名时要非常仔细。
如果想将几个表联接起来,在JOIN操作中我们可以进行嵌套操作,有三个表:表1、表2、表3,现在将三个表联接起来:
FROM (表1 INNER JOIN 表2 ON 表1.序号=表2.序号)
INNER JOIN 表3
ON 表1.序号=表3.序号
这样这三个表就联接起来了。 定义新的字段名
在有的时候,将要建立的查询中的字段名意义有了新的变化,不能再使用,或者有的新字段是由表达式构成的,这样的字段都需要在查询中为它们设定新的名字。在SQL中可以用“AS”操作来实现定义新的字段名。
例如在新建的查询中将“表1”中的“字段1”的内容对应到新字段“新字段1”中: SELECT 表1.字段1 AS 新字段1 FROM 表1; 现在再看看这个查询的数据表,可以看到在表中的字段名已经换成了“新字段1”了。