返回列表 回复 发帖
补充一:设置图表选项


  要想设置图表选项,首先要将鼠标移动到图表上,激活绘图区域。然后在绘图区域上用右键单击,这时会弹出一个菜单,在这个菜单上单击“图表选项”命令,如下图所示。

  这时就会弹出一个“图表选项”对话框,如下图所示。

  在这个对话框中对图表的“标题”、“坐标轴”、“网格线”、“图例”、“数据标志”和“数据表”等相应内容进行设置。设置完以后单击对话框上的“确定”按钮就可以了。
  




补充二:设置坐标轴的格式


  设置坐标轴的格式,只要将鼠标移动到一条数值轴上,当鼠标右下角出现“数值轴”三个字时就可以双击鼠标左键,这时就会弹出一个“坐标轴格式”对话框,如下图所示。

  在这个对话框上就可以设置坐标轴的“图案”、“刻度”、“字体”、“数字”、“对齐”这些属性。完成设置后,单击对话框上的“确定”按钮就可以保存设置并退出。
  




补充三:设置图表区格式


  设置图表区格式,只要在图表区中的空白部分双击鼠标左键。就会弹出一个“图表区格式”对话框,如下图所示。

  在这个对话框中可以设置图表区的“图案”和“字体”属性。同样完成设置后单击“确定”按钮就可以了。 




补充四:设置图形区格式


  在绘图区中双击绘图区中的空白区域,就会弹出一个“图形区格式”对话框,如下图所示。

  在这个对话框中就可以设置绘图区的“图案”属性。完成这些后就可以单击“确定”按钮。
提问题时注意版块要与你所要问的问题相对应,
补充五:设置图表标题格式


  在绘图区域中单击图表标题,激活这个标题,然后右键单击这个标题,会弹出一个菜单,单击菜单上的“图表标题格式”命令,就会弹出一个对话框,如下图所士。

  在这个对话框上可以设置图表标题的“图案”、“字体”、“对齐”这几个属性。  
  




补充六:设置数据系列格式


  在绘图区域中单击数据系列,激活系列,然后右键单击这个标题,会弹出一个菜单,单击菜单上的“数据系列格式”命令,就会弹出一个“数据系列格式”对话框,如下图所示。

  在这个对话框上可以设置图表标题的“图案”、“坐标轴”、“误差线”、“数据标志”、“选项”这几个属性。   




补充七:设置数据点格式


  在绘图区域中单击数据点,激活该数据点,然后右键单击这个标题,会弹出一个菜单,单击菜单上的“数据系列格式”命令,就会弹出一个“数据系列格式”对话框,如下图所示。

  在这个对话框上可以设置图表标题的“图案”、“数据标志”、“选项”这几个属性。   
  




补充八:设置图例格式


  在绘图区域中双击图例,就会弹出一个“图例格式”对话框,如下图所示。

  在这个对话框上可以设置的“图案”、“字体”、“位置”这几个属性。 
提问题时注意版块要与你所要问的问题相对应,
什么是宏


  到底什么是宏呢? 我们把那些能自动执行某种操作的命令统称为“宏”。
  宏也是一种操作命令,它和菜单操作命令都是一样的,只是它们对数据库施加作用的时间有所不同,作用时的条件也有所不同。菜单命令一般用在数据库的设计过程中,而宏命令则用在数据库的执行过程中。菜单命令必须由使用者来施加这个操作,而宏命令则可以在数据库中自动执行。
  在ACCESS中,一共有五十三种基本宏操作,这些基本操作还可以组合成很多其他的“宏组”操作。在使用中,我们很少单独使用这个或那个基本宏命令,常常是将这些命令排成一组,按照顺序执行,以完成一种特定任务。这些命令可以通过窗体中控件的某个事件操作来实现,或在数据库的运行过程中自动来实现。
  事件操作即像“单击”按钮、“双击”列表选项这些行为都是对控件的事件操作。所以我们常常会听到别人说“单击‘某某’按钮执行‘某某宏命令’”,就是这个意思。




为什么要用宏


  先看个例子,有这样一个窗体,上面有一个数据表。现在在这个数据表中添加一个功能,用一个文本框输入要查询的内容,而用一个“查询”按钮来完成查询的工作,并将查询后的数据打印在报表上。
  在窗体那一课里讲的命令按钮向导就能实现这个功能,但对于每个控件来说,要实现相应的功能光凭借向导是远远不够的。
  要让这些控件实现一定的功用,在ACCESS中有四种办法。当然最简单的就是使用控件向导了,除此之外还有“宏”、“VBA”和“SQL语言”,使用这些方法可以使控件完成几乎所有的数据库操作。而这其中,向导最简单,但实现的功能有限,而宏虽然只有53种基本操作,但可以组合成很多种宏组命令,这样就能实现很多ACCESS中有关窗体、报表、查询的功能,使用起来也非常方便。而VBA和SQL语言相对起来对用户的要求也要高一些,当然VBA和SQL语言可以实现的功能也更加全面,自主性也更强,但它们都要写程序。对于很多普通的用户,他们不要求会得太多,只要能完成手上的工作就可以了,所以这时使用宏就是他们最好的选择了。
  使用宏非常方便,不需要记住各种语法,也不需要编程,只需利用几个简单宏操作就可以对数据库完成一系列的操作,中间过程完全是自动的。




查看宏设计窗口


  磨刀不误砍柴功,要学会使用宏,我们先来看看宏的设计窗口吧。
  将鼠标移动到数据库窗口中的宏对象上,单击左键,就切换到“宏”对象上了,现在的所有操作都是针对宏的了。在这个窗口右侧的“创建方法和已有对象列表”列表栏中什么都没有,这是因为宏的创建方法非常简单,也很单一,所以既不需要有什么“宏向导”,也不必有很多的视图,在宏的创建过程中只有一个设计窗口。这个设计窗口非常简单,现在我们将鼠标移动到数据库窗口的“新建”菜单上,单击鼠标左键,就会在屏幕上弹出宏设计窗口,如下图所示。在这个窗口中就可以设计宏了。

  在宏的设计窗口中,“操作”下面的那一列就是宏所能执行的各种操作,在ACCESS2000中,一共有五十三种基本操作,这些操作我们可以通过单击这列中任何一个值弹出的下拉选单中来选择,而“备注”下面的那一列中可以输入执行这种操作时的备注。
  在宏设计器中,还有两个列的内容是可选的,这就是“宏名”和“条件”字段,现在将鼠标移动到工具栏上,单击“宏名”按钮,就会发现在宏设计器上出现了一个“宏名”列,并且这个“宏名”按钮也凹陷下去,同样单击工具栏上的“条件”按钮,在设计器上就会再出现一个“条件”列。这时的“条件”按钮处于凹陷状态。此时的宏的设计窗口如下图所示。

  宏名这一列就是用来定义一个或一组宏操作的名字,以后要执行这个宏操作时,只要直接运行就可以了。如果我们想在宏执行某个操作之前,对宏是否能执行进行一些限制,就需要在条件这一列中输入相应的条件表达式,这样可以实现在宏执行之前先判断条件是否满足,如果满足则执行这个宏,如果不满足,则不能执行这个宏。




创建宏


  讲了宏的设计窗口,现在该亲手来创建一个宏了。首先我们要打开一个数据库,单击数据库窗口选项卡上的“宏”对象,然后单击数据库窗口上的“新建”选项。这时就弹出了宏设计器窗口。
  因为这“宏名”和“条件”两列并不是宏设计窗口上的默认选项,没有这两列,如果要用到这两个选项,就需要单击工具栏上的这两个选项。现在这两列都出现在窗口上了。这时我们就可以先为这个宏取个宏名,就叫“查询”吧,然后我们将鼠标移动到操作这一列的第一行中,左键单击下拉框右面的“向下”按钮,这时就会弹出一个下拉菜单,在这个菜单上选择所需的操作命令,然后单击这个选项,那这个操作就会出现在这个下拉框中了。现在我们要执行一个叫“Gotocontrol”宏命令,那么就在这个下拉框中选中这个操作命令,如下图所示。

  在选择了基本宏操作后,我们还要在宏设计窗口下部的操作参数“控件名称”中输入此操作需要的参数,为了确定操作对象的焦点,我们在这个位置输入“姓名”,这样当我们执行这个宏的时候窗口上的焦点就会移动到“姓名”这个字段上来了。基本上每个操作都有操作参数,有的多一些,有的少一些,有的是必须填写的,有的则可以取默认的值。只有设置好参数的宏操作才是合法的。不然ACCESS就不会接受。
  刚才我们所做的只是这个宏的第一个操作,将查询的焦点移到“姓名”这个字段上,下一步我们要再加一个操作去找到“姓名”这个字段中的相应记录。要实现这些,就将鼠标移动到表格的第二行,然后在操作这一个格选取“FindRECORD”,现在我们来设定操作参数,参数“查找内容”这一栏中,我们输入“=[需要查询的值].value”,这个“需要查询的值”是窗体上一个专门用来输入查询值的文本框的名字,而“匹配”这一栏中选择“整个字段”,“格式化搜索”选“是”,其他的几个参数都可以取默认,将这些选好以后。“查询”宏就建好了。当然别忘了保存整个宏啊。   




了解宏包含的操作


  虽然建好了整个宏,但这些操作之间是如何执行的?
  其实这很简单,我们再看一个例子,如下图所示。

  在这个例子当中,有三个宏名,这三个宏可以成为一个宏组。如果我们执行整个宏组,这些宏将会按照从上到下的顺序执行,相应的操作也都会从上到下执行,如果我们只是执行这个宏组中的某个宏,那么在执行过程当中,只有这个宏的各个操作会按照从上到下的方向一一执行,而其他宏的操作就不会执行。
  如果宏一的第一个操作条件不满足后,宏一的其他几个操作仍然要执行,在宏的设计表格中,每行的“条件”字段只是对同一行的“操作”字段有约束力,而对其他的操作则不起条件约束作用了。




执行宏


  在ACCESS中,宏并不能单独执行,必须有一个触发器。而这个触发器通常是由窗体、页及其上面的控件的各种事件来担任的。比如在窗体上单击一个按钮,这个单击过程就可以触发一个宏的操作。
  现在建立一个窗体。用一个按钮单击事件来触发我们刚才新建的宏“查询”。首先将表“员工简历”上的“姓名”等字段显示在这个窗体上,然后在这个窗体上再添加一个文本框,用这个文本框来输入要查询的员工姓名,注意还要将这个文本框的名字改为“需要查询的值”,完成之后在窗体上添加一个按钮,并把它的名字改为“查询”。添加好以后就可以在这个按钮的属性上设置宏“查询”的触发事件了。
  首先我们选中这个按钮,然后打开这个按钮的属性,如下图所示。

  在属性选项卡上选择“事件”选项,然后将鼠标移动到“单击”选项右边的方框内,单击鼠标左键,这时在这个方框右侧会出现一个“向下”按钮,单击这个按钮,在弹出的下拉选单中单击“宏1.查询”项,这样可以了。以后当这个窗体以数据表视图出现的时候,单击这个按钮就可以执行我们刚才建立的宏了。
  现在我们将视图切换到窗体的数据表视图。我们可以通过单击记录选定器上的不同按钮移动到不同的员工记录上去,现在我们将我们需要查询的员工姓名输入到文本框“需要查询的值”中去,输入完以后,单击“查询”按钮,现在员工记录已经跳到我们刚才所输入的那个员工位置上去了。
提问题时注意版块要与你所要问的问题相对应,
补充:打开/关闭宏设计窗体中的条件和宏名栏


  要打开宏设计窗体中的条件或宏名栏,只要将鼠标移动到工具栏上的“条件”或“宏名”按钮上,然后单击这个按钮,看到这个按钮凹陷下去,这时在设计窗体上就打开了“条件”或“宏名”栏。
  而要关闭这两个栏或其中的一个栏时,也只要将鼠标再移动到工具栏上的“条件”或“宏名”按钮上,单击这个按钮左键,当这个按钮变平以后,“条件”或“宏名”栏就关闭了。





为宏的操作设定条件


  在宏执行之前给宏设定条件是非常普遍的一种做法,这样就可以有条件地执行某些宏命令,在这个输入框内我们可以像在给查询制定规则那样使用“表达式生成器”来完成条件的设定,要打开“表达式生成器”只要在这个条件网格内单击鼠标右键,并单击弹出菜单上的“生成器......”命令就可以了,如下图所示。  





调试宏


  在Access中,可以直接执行创建好的宏,这通过在宏设计器窗口中单击工具栏上的“执行”按钮就可以执行宏了,但常常会遇到一些问题,这时就需要依靠Access提供的测试功能来修改错误,其中一个主要的方法就是单步执行宏。
  首先要单击“执行”菜单上的“单步”命令。这时会弹出一个对话框,如下图所示,在这个对话框上,单击“单步”按钮以执行显示在“甑ゲ街葱小倍曰翱蛑械牟僮鳎セ鳌巴V埂卑磁ィ酝V购甑闹葱胁⒐乇斩曰翱颉5セ鳌凹绦卑磁ィ怨乇盏ゲ街葱胁⒅葱泻甑奈赐瓿刹糠帧?/P>

  如果宏中存在错误,在按照上述过程单步执行宏时将会在窗口中显示“操作失败”对话框,这个对话框将显示出错误操作的操作名称、参数以及相应的条件。利用该对话框可以了解在宏中出错的操作,然后,单击“暂停”按钮进入宏设计窗口对出错宏进行相应的操作修改。




将宏转化为模块补


  将宏保存为模块,可以加速宏操作的执行速度。要将宏转化为模块,只要在数据库窗口中,选中这个宏,然后“文件”菜单下的“另存为”命令,如下图所示,然后选择将它保存为模块。并单击“确定”按钮就可以将这个宏保存为同名的“模块”了。

提问题时注意版块要与你所要问的问题相对应,
什么是VBA和模块


  虽然宏很好用,但它运行的速度比较慢,也不能直接运行很多WINDOWS的程序。尤其是不能自定义一些函数,这样当我们要对某些数据进行一些特殊的分析时,它就无能为力了。
  由于宏具有这些局限性,所以在给数据库设计一些特殊的功能时,需要用到“模块”对象来实现,而这些“模块”都是由一种叫做“VBA”的语言来实现的。使用它编写程序,然后将这些程序编译成拥有特定功能的“模块”,以便在Access2000中调用。
  VB,就是微软公司推出的可视化BASIC语言,用它来编程非常简单。因为它简单,而且功能强大,所以微软公司将它的一部分代码结合到OFFICE中,形成我们今天所说的VBA。它的很多语法继承了“VB”,所以我们可以像编写VB语言那样来编写VBA程序,以实现某个功能。当这段程序编译通过以后,将这段程序保存在Access中的一个模块里,并通过类似在窗体中激发宏的操作那样来启动这个“模块”,从而实现相应的功能。
  “模块”和“宏”的使用是差不多的。其实Access中的“宏”也可以存成“模块”,这样运行起来的速度还会更快呢。“宏”的每个基本操作在“VBA”中都有相应的等效语句,使用这些语句就可以实现所有单独“宏”命令,所以“VBA”的功能是非常强大的。如果你要用Access来完成一个负责的桌面数据库系统,你就应该掌握“VBA”,它可以帮你实现很多功能。但如果你只是偶尔使用一下Access或者只是用Access来做一些简单的工作,你只要简单了解一下它就可以了。




VBA开发环境


  既然我们要编写“VBA”程序,就需要先看看“VBA”的开发环境。“VBA”的开发环境开发“VBA”程序相应的“设计器”,但我们不这么称呼它,而是叫它“VBA开发环境”,这种说法是继承了计算机语言对开发器的一种统一叫法。
  我们首先要打开一个数据库,然后选定数据库窗口上的“模块”选项,再用鼠标单击数据库窗口上的“新建”按钮,这时就会弹出一个窗口,这就是“VBA”的“开发环境”,如下图所示。

  VBA开发环境分为“主窗口”、“模块代码”、“工程资源管理器”和“模块属性”这几部分。“模块代码”窗口用来输入“模块”内部的程序代码。“工程资源管理器”用来显示这个数据库中所有的“模块”。当我们用鼠标单击这个窗口内的一个“模块”选项时,就会在模块代码窗口上显示出这个模块的“VBA”程序代码。而“模块属性”窗口上就可以显示当前选定的“模块”所具有的各种属性。
  所有的“VBA”程序都是写在“模块代码”窗口中的。我听说程序光写完还不行,还要“编译”什么的,这又是怎么回事呀? 小博士:任何一种高级计算机语言都不能直接被计算机看懂,它们必须通过编译器的编译才能使计算机明白这些语句所要表达的数值运算和逻辑关系。就像我们和外国人交谈一样,如果我们相互之间都不懂对方的语言,就需要一个翻译将所说的话翻译过来,这样双方才能明白对方想要表达的意思。同样编译器也起了相互沟通的中介作用。
  在VBA中,由于我们在编写代码的过程中会出现各种各样的问题,所以编写的代码很难一次通过,并正确地实现既定功能。这时就需要一个专用的调试工具,帮助我们快速找到程序中的问题,以便我们消除代码中的错误。“VBA”的开发环境中“本地窗口”、“立即窗口”和“监视窗口”就是专门用来调试“VBA”的,如下图所示。
 
  




变量和常量


  在做这个程序之前必须要申请变量,并对其中要用到的常量进行定义。
  这儿的变量和我们在数学中所遇到的变量的概念基本上是一样的,它是一个数据,但随时可以改编它所对应的数值。 常量这个概念和变量是对应的,变量的值在程序运行过程当中允许变化,而常量的值却是不变的。


  在计算机中,变量和常量在使用之前都必须先定义,不然在程序当中就会被认为是非法的字符。 在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”。




函数和子程序


  讲了变量,现在也要讲讲“函数”和“子程序”了。
  像“sin( )”、“abs( )”这些都是函数都是内部函数,现在我们要来讲讲外部函数,外部函数和变量一样在使用之前也是要先申明。它们的结构如下图所示。


  
函数则会把“a+b-c”的值返回给函数名“Getnumber”,如果我们输入Getnumber(9,4,2),则会返回“9+4-2”即“11”给函数“Getnumber”。“Function”的英文含意就是“函数”。它在这儿用来作为函数申明的一个内容。在它后面跟着的就是这个函数的函数名。在这个函数名后面的括号中,列的是这个函数中的参数。每个函数之间要用逗号隔开,并用“As”语句后跟“数据类型”来定义数据的类型。 括号外面的“As 数据类型”用来定义“函数名”的。它表示函数返回的数据的数据类型。
  其实子程序和函数很相似,两者结果对比如下图所示。


  这两种类型的过程都可以接收参数,函数可以返回单一的数据值,但子程序不能。另外,你可以从ACCESS中任何地方执行一个函数,包括从查询中的表达式中和宏中。然而你只能从一个函数、子程序或作为一个窗体或报表中的一个事件过程来执行子程序。
提问题时注意版块要与你所要问的问题相对应,
查询SQL视图的切换
  在使用过程中,我们经常会使用到一些查询,但这些查询用各种查询向导和设计器都无法做出来,不知道你还记不记得,在查询那一课中我们讲过SQL查询,用这种查询就可以完成比较复杂的查询工作。当时你还刚刚开始使用ACCESS,用设计视图和向导就可以建立很多有用的查询,这些足够你掌握一段时间了,而且它的功能已经基本上能满足我们的需要。而SQL语言作为一种通用的数据库操作语言,并不是ACCESS用户必须要掌握的,但在实际的工作中有北匦胗玫秸庵钟镅圆拍芡瓿梢恍┨厥獾墓ぷ鳌?
  单纯的SQL语言所包含的语句并不多,但在使用的过程中需要大量输入各种表、查询和字段的名字。这样当你建立一个涉及大量字段的查询时,就需要输入大量文字,与用查询设计视图建立查询相比,就麻烦多了。所以我在建立查询的时候也都是先在查询设计视图将基本的查询功能都实现了,最后再切换到SQL视图通过编写SQL语句完成一些特殊的查询。下面我们就介绍一些在ACCESS使用中常常会用到的一些SQL语言。
  我们说过在建立查询的时候可以切换到SQL视图去,下面来看看是怎么切换的:

  当你打开一个查询以后,单击“新建方法”列表的时候并没有一个“使用SQL视图创建查询”的选项,

  这也表明ACCESS并不提倡在工作中使用SQL语言,那我们就单击“在设计视图中创建查询”这一项,之后将会在屏幕上出现一个设计视图,

  现在我们要切换到SQL视图,只要将鼠标移动到工具栏最左面的“视图”选项按钮右边的向下按钮上,单击鼠标左键,在弹出的下拉菜单中选中“SQL 设计视图”项就可以将视图切换到SQL状态。
基本的SQL语句  
  在SQL语言中用得最多的就是SELECT语句了。我们就先讲讲SELECT语句吧。    SELECT语句构成了SQL数据库语言的核心,它的语法包括5个主要子句,分别是FORMWHEREGROUP BYHAVINGORDER 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语句的单一功能非常简单,掌握起来也很容易。但要将这些语句组合起来建立一个较大的查询,还需要在输入各种表、查询和它们中的字段名时要非常仔细。
提问题时注意版块要与你所要问的问题相对应,
使用SQL语句联接表
  在SQL中,很多威力都来自于将几个表或查询中的信息联接起来,并将结果显示为单个逻辑记录集的能力。在这种联接中包括INNER、LEFT、RIGHT这三种JOIN操作。
  首先我们来讲讲INNER JOIN 的用法:INNER JOIN 语句可以用来组合两个表中的记录,只要在公共字段之中有相符的值即可,在语法上,INNER JOIN 是这样定义的。

  举个例子:我们现在要将“图书资料表”和“出版社资料表”联接起来,然后列出出版社所出的图书。让我们先看看这两个表,

  然后在SQL设计视图中输入以下内容

  现在我们执行这个SQL语句,

  发现现在的查询结果将所有出版社和图书都列了出来。
  这个查询好像也可以用下面的语句来实现。

  将两个查询都切换到数据表视图后我们会发现两个查询的查询结果虽然一样,但在使用INNER JOIN操作的查询中可以添加新的数据。就像在表中添加数据一样。而没有使用INNER JOIN 操作的查询就不能添加新数据,相比之下使用INNER JOIN操作的查询更像将两个具有相关内容的表联接在一起新生成的表。
  知道了它的用处,我们来看看LEFT JOIN 的结构:
FROM [表名1] LEFT JOIN [表名2]
ON [表名1.字段A] 〈关系运算符〉[表名2.字段B]

  其实LEFT JOIN 的功能就是将LEFT左边的表名1中的所有记录全部保留,而将右边的表名2中的字段B与表名1.字段A相对应的记录显示出来。而RIGHT JOIN 和LEFT JOIN 相反。
  所以刚才的那个例子还可以写成:

  单击工具栏上的“执行”按钮,我们看到这时显示的数据表和刚才显示的用LEFT JOIN 的数据表一样。现在看出来了吧,原来它们的功能是可以互换的。

  如果想将几个表联接起来,在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”了。
提问题时注意版块要与你所要问的问题相对应,
何时使用导入或联接
  在Access中,可以很方便地从外部数据库中获取数据,这些数据库包括现在所有的各种主流数据库,像Dbase、Sybase、Oracle、Foxpro等。这样你就不用去一个一个地重新输入原来的数据了。 在Access中,可以用“获取外部数据”命令来获取外部数据库的数据,这个命令包括两种方式“导入”和“链接表”。对于不同的外部数据库可以用不同的获取方式。而且在Access中,不光可以获取外部数据,还可以导出别的数据库,就是将用Access建立的数据库保存为别的数据库形式,像FOXPRO,DBASE数据库等。
  单击“文件”菜单中的“获取外部数据”项,弹出一个子菜单,上面有“导入”和“链接表”两个选项。我们单击其中的一个选项就可以实现导入或联接一个外部的数据库。虽然这两个命令的功用都是打开外部的一个数据库,并从中获取需要的数据,但在使用上,还是有差别的。

  在我们使用“导入”这个方法来获取外部数据时需要注意几个条件。
一、需要我们打开的数据库文件相对来说比较小,而且不会被其他数据库应用程序的用  户频繁更改。
二、不需要与其他数据库应用程序的用户共享数据。
三、你正在替换以前的数据库应用程序,而且不再需要以前的数据格式。
四、在使用其他数据库中的数据时,需要最佳性能。

  使用“链接表”方法来获取外部数据时也需要注意几个条件:
一、需要打开的文件比较大,甚至比本地Access数据库的最大容量(1GB)还要大。
二、这个文件经常被其他数据库应用程序的用户更改。
三、必须在网络上与其他数据库应用程序的用户共享这个文件。
四、需要把应用程序分布到几个单独的用户那里,而且,你可能要不断更新开发的应用程序接口,将“应用程序”与数据分开可以更容易地更新应用程序,而不会干扰用户积累的数据。

   这就是为什么要在“获取外部数据”这个过程当中设置两种方法。如果要用的数据库并不大,但每天都可能要修改,而且由几个人来修改不同的部分,对于这种情况,最重要的是每天都有新的数据要处理,而单纯的将表导入进来,由于在Access中开发新的系统需要一定的时间,在这段时间内就有可能有新的数据输入进来。开始导入的数据就有很多可能已经更新了。所以这时使用“链接表”就不会出现这种问题,干扰到别的用户积累的数据。当然在Access中执行现在这台机器上的数据库文件是最快的,使用链接常常会因为很多原因使你的工作变得很慢,这点是你必须考虑的。 如何联接外部数据
  我们先来打开一个Access数据库,

  单击“文件”菜单上的“获取外部数据”项,并单击其子菜单上的‘链接表’命令。现在弹出一个对话框,很像Access中打开一个文件的对话框。

  我们现在导入一个DBASE数据库文件。先将鼠标移动到“文件类型”下拉框上,单击鼠标左键,弹出一个下拉列表。

  这些文件类型链接的方法基本上是一样的,你只要选中相应的数据库类型,并且选中需要的数据库文件,就可以完成链接工作。
  例如,现在我要将DBASE 5数据库文件“用户数据库.dbf”中的表链接到Access中来,只要先在文件类型下拉框中选中“DBASE 5”,然后在“查找范围”下拉框中选中这个文件的所在目录,选择“用户数据库.DBF”项,双击,

  很快在屏幕上就会弹出一个提示框,告诉我们这次链接操作已经成功,单击“确定”按钮。
  我们又回到“链接”对话框上了,将这个导入对话框关闭,现在会发现在数据库窗口的表对象中“已有的对象列表”中已经有了一个名字为“用户数据库”的表了。

  打开这个表看看,表中的数据和原来DBASE 5数据表中的数据是一致的。这样就能很方便地将原来的系统更新,不必担心数据转化的问题了。导入一个数据库文件
  刚才我们已经知道如何使用“链接表”的方法来获得DBASE上的数据,现在讲讲怎样“导入”外部数据的方法。
  打开一个Access数据库,单击“文件”菜单中的“获取外部数据”项,选择“导入”命令。

  我们先将鼠标移动到“文件类型”的下拉框上,单击鼠标左键,弹出下拉列表框里面列出了多种数据库文件类型。

  现在要将PARADOX 数据库文件“库存.db”导入到Access中来,只要先在“文件类型”下拉框中选中“Paradox”,然后在“查找范围”下拉框中选中这个文件的所在目录,选择“库存.db”文件,并单击“导入”按钮。

  Access提示我们刚才导入PARADOX文件已经成功了。关闭导入对话框,会发现在数据库窗口的表对象中“已有的对象列表”中已经有了一个名字为“用户数据库”的表了。

  双击“库存”这一项,打开这个表看看,我们发现原来“导入”和“链接表”来获取外部数据的方法基本一样的。如何导出数据
  刚才我们讲了两种获取外部数据的方式,而我们有时也需要将Access生成的数据库中的数据导出,成为其他类型数据库文件中的数据,以便别人使用,所以Access也设置了一种导出功能。它和导入功能正好相反。Access中凡是能导入的数据库文件格式,在导出数据库中的数据时也都是在导出时文件的一种选择类型。
  如果我们要将表“书目”导出成一个DBASE 5中的表,可以先在“已有表列表”中选择这个表,

  然后单击“文件”菜单上的“导出”命令,先在导出的“保存类型”下拉框中选中DBASE 5,

  然后选择要保存的位置,输入要保存的文件名,

  之后单击“保存”按钮就可以了。这样一个新的DBASE 5文件已经生成了。
  现在的这个文件已经是一个独立的DBASE 5文件了。你可以随时使用别的软件调用这个新的DBASE 5文件了。如何导入一个SYBASE数据库中的表
  在Access中,要想导入一个SYBASE数据库中的表,并不能像导入DBASE表那么容易,这时会用到ODBC DATABASE,实际上在我们导入DBASE数据表的时候也用到了ODBC,但是因为Access直接就带有DBASE的ODBC驱动程序,所以我们可以很方便地将这些数据表导入、链接或导出。而对于像SYBASE这样的数据库,Access中并不带它的ODBC驱动程序。所以先要在WINDOWS的ODBC管理器中先添加SYBASE的ODBC驱动程序。如果WINDOWS的ODBC中已经有了SYBASE的驱动,只要像导入DBASE数据表那样,先在弹出的对话框中的“文件类型”下拉框中选择Odbc datebase,这时就会弹出一个“选定数据源”对话框,

  单击“机器数据源”选项卡,选中“Powersoft demo db V6”项,然后再单击“确定”按钮。并在导入对象列表中选择需要导入的Sybase表就可以了。
提问题时注意版块要与你所要问的问题相对应,
如何导入一个文本文件
  在科研中,常常用文本文件来保存程序的计算结果,当计算完成以后,所有的计算结果都会按照一定的顺序进行存储,但这样保存的数据在进行数据的再处理时非常不方便,如果能将这些数据输入相应的Access数据库中就能很方便地对他们进行统计计算,分类和绘制图表了。为了实现这个目的,Access就提供了导入这样的文本文件的能力。  例如现在要导入文本文件“data1.txt”,那就先单击“文件”菜单上的“导入”命令,选择“文本文件”类型,找到文本文件“data1.txt”,
什么是ODBC
  虽然很多数据库中都用SQL语言,而且SQL语言也有标准,但是大多数的软件公司在使用这种语言来处理其产品的特殊功能时,都有一些变化或者有所发展,还有,在标准建立以前,就已经发展了几个产品,所以生产这些产品的公司都发明了自己的SQL语法,这种语法与正式标准不同。
  为了解决这个问题,在几年前,由三十多家著名的软硬件公司组成了一个组织,这个组织的目的是定义执行SQL的共同基础,以使其成员的产品都可以使用它来彼处交流数据,后来微软公司宣布了针对Windows操作系统设计的那个产品,就是使用这个接口来访问SQL数据库的的产品,并将这个产品正式称为开放数据库连接性标准,即ODBC,接着十多个数据库和应用软件供应商开始在他们的产品中提供ODBC支持。这样就使得在今天的Access中可以方便的从别的支持ODBC的数据库中获取数据.
提问题时注意版块要与你所要问的问题相对应,
怎样对数据库中的表进行分析和优化
  
  现在基本的操作你已经会了,但有时候建立的数据库用起来很慢,那是因为数据库在建立的时候,没有对它进行过优化分析。现在我们就讲讲数据库的优化分析。
  我们先打开一个要进行分析的数据库,然后单击“工具”菜单上的“分析”选项,弹出的菜单上有“表”、“性能”和“文档管理器”三个命令。这三个命令可以对相应的内容进行优化。
  首先要对对表进行一下优化,单击“表”这个命令。ACCESS开始准备这个表分析器向导,在这个向导的第一页中,为我们提供了建立表时常见的一个问题。这就是表或查询中多次存储了相同的信息,而且重复的信息将会给我们带来很多问题。看完了这些,我们就可以单击“下一步”按钮。
  第二步告诉我们这个分析器是怎样解决第一步中遇到的问题。解决的办法是将原来的表拆分成几个新的表,使的新表中的数据只被存储一遍。
  单击“下一步”按钮,在这一步中的列表框中我们选择需要做分析的表,在这儿,虽然ACCESS提示你只要选择有重复信息的表,但最好对所有的表都做一个分析,这样并花不了很多时间。反而能使你的工作能更加规范。 晓宇:那我以后建立的表都进行一下优化分析。 小博士:这是个好习惯。当你选择好要分析的表以后,单击“下一步”按钮,在这一步中我们选择“是”,让向导决定,这样就可以让ACCESS自动为我们完成对这个表的分析。单击“下一步”按钮,通过分析就会在屏幕上弹出一个对话框,在这个对话框中将会告诉我们在上一步中所选的表是否需要进行拆分来达到优化的目的。如果不需要拆分,就单击“取消”按钮,就可以退出这个分析向导,建立的表就不用再优化了。
  如果单击了“下一步”按钮后,并没有弹出这样一个对话框啊。而是出现了另外一个窗口。这就说明你所建立的表需要拆分才能将这些数据合理的进行存储。现在ACCESS的分析向导已经将你的表拆分成了几个表,并且在各个表之间建立起了一个关系。你只要为这几个表分别取名就可以了。这时你只要将鼠标移动到一个表的字段列表框上,双击这个列表框的标题栏,这时在屏幕上会弹出一个对话框,在这个对话框中就可以输入这个表的名字。输入完以后,单击“确定”按钮就行了。
  现在再单击“下一步”按钮。我们就到了这个向导的最后一步。在这一步中问我们是否自动创建一个具有原来表名字的新查询,并且将原来的表改名。 这样做,首先可以使基于初始表的窗体、报表或页能继续工作。这样既能优化初始表,又不会使我们原来所做的工作因为初始表的变更而作废。所以我们在这儿通常都是选择“是,创建查询”,并且不选“显示关于处理新表和查询的帮助信息”。当这一切都完成以后,我们单击“完成”按钮,这样一个表的优化分析就完成了。 怎样对数据库的性能进行分析
  
  刚才我们对表进行了分析,看见在菜单上分析这个选项下还有“性能”和“文档管理器”两个选项,下面就讲讲这两个选项。
  首先单击“工具”菜单中的“分析”项,选择“性能”命令。现在我们就开始对整个数据库进行性能分析了。为了使用的方便,我们常常选择“全部对象类型”选项,

  并且单击这个选项卡上的“全部选定”按钮,这样虽然会使我们多花一些时间进行性能分析,但却是非常值得的。完成这些后,单击这个选项卡上的“确定”按钮,现在ACCESS就开始为我们的数据库进行优化分析了。
  分析结果出来了,

  列表中每一项前面都有一个符号,每个符号都代表一个意思,在这个对话框中都有介绍,现在如果在列表框中有“推荐”和“建议”,我们就将鼠标移动到“全部选定”按钮上,单击鼠标左键,这时在列表框中的每个选项都被选中了。
  完成这些以后,将鼠标移动到按钮“优化”上,单击鼠标左键,等一会儿,我们会发现原来的“推荐”和“建议”项都变成了“更正”项,说明我们已经将这些问题都解决了。

  带“灯泡”符号的“主意”项没有变化。当我们选中其中一个“主意”选项时,就会发现在这个对话框中的“分析注释”中会详细列出ACCESS为解决这个问题所出的主意,

  你只要记住这些方法,单击“关闭”按钮,然后一步步按照它提示的方法操作就可以了。
  这个菜单中的“文档管理器”选项可以打印出所建数据库各对象的全部信息,将鼠标移动到这个选项上,单击鼠标左键,这时就会在屏幕中弹出一个对话框,

  在这个对话框中也有选项卡,我们选中“查询”选项卡,然后在相应的列表框中选择需要的对象名,选好以后,单击“确定”按钮就可以将这些选项的各种内容显示出来,你如果需要可以将这些内容打印出来。
  在这个对话框上有一个“选项”按钮,这个按钮是用来确定打印表的含义,让我们单击这个按钮,这时会弹出一个对话框,

  在这个对话框中包含“表含义”、“字段含义”、“索引含义”这三个含义组,选择组中不同的选项,会改变打印表,也就是将要显示的信息的内容。当我们完成这些工作,单击“确定”按钮就可以了。
  有了这些信息,有经验的ACCESS使用者就可以从打印出的信息资料上分析出所建立的数据库有哪些问题了。 安全管理
  在使用过程中,我们还会积累很多的经验,这些经验可以帮助我们更加合理的使用数据库。现在就来讲讲ACCESS数据库的安全管理。

  通常我们建立的数据库并不希望所有的人都能使用,并且能修改数据库中的内容。这就要求我们的数据库实行更加安全的管理。就是限制一些人的访问,限制修改数据库中的内容。访问者必须输入相应的密码才能对数据库进行操作,而且输入不同密码的人所能进行的操作也是有限制的。除了这些,数据库的安全还包括对数据库中的数据进行加密和解密工作。这样你建立的需要保密的数据库就不能被别人轻易攻破。起到了安全保密的作用。

  要进行安全管理就需要实现刚才所说的那几个目标,在ACCESS中提供了几个命令,它们就能帮助我们实现这些目标。

  现在我们就来为数据库“地址簿”添加安全管理。 我们要对那个数据库进行安全管理,首先需要将这个数据库打开,然后单击“工具”菜单上的“安全”项。这时还会在“安全”项右边弹出一个小菜单,在这个菜单上有五个选项。每个选项都能执行一定的功能。 设置和取消数据库密码
  首先我们先讲讲设置和取消数据库密码。将鼠标单击ACCESS菜单栏上的“工具”主题,将鼠标移动到随后弹出的菜单上的“安全”项上,这时在“安全”项的右面弹出一个更小的菜单。将鼠标移动到这个菜单的第一项“设置数据库密码”上,单击鼠标左键。就会弹出一个“设置数据库密码”的对话框,

  在这个对话框中要我们在第一个文本框中要我们输入数据库密码,并在第二个文本框中再输入一遍刚才输入的密码,以保证我们输入的密码不会因为误输造成我们以后无法打开自己的数据库。将这些完成以后,就单击确定按钮。
  这时候弹出一个提示窗口,它提示要用独占方式打开数据库才能设置或撤销数据库密码。

  记住要设置数据库的密码时,必须要保证这个数据库的打开方式是独立打开方式。好在这个提示框中告诉我们怎样以独立方式打开一个数据库。那我们现在就单击这个提示框上的确定按钮,然后单击“设置数据库密码”对话框上的取消按钮。再单击数据库按钮上的关闭按钮来关闭这个数据库,然后再将鼠标移动到ACCESS工具栏上的打开图标按钮上,单击鼠标左键,这时会弹出一个“打开”对话框,

  在这个对话框中选择需要打开的数据库,然后将鼠标移动到这个对话框中“打开”按钮右面的向下按钮。在弹出的菜单中选择“以独占方式打开”,并单击这个选项。
  现在我们打开的数据库就可以设置它的密码了。按照刚才我们输入密码的过程再来一遍,这样就可以给这个数据库设置密码了。当下次打开这个数据库的时候,就会发现在打开数据库之前就会在屏幕上出现一个对话框,要求你输入这个数据库的密码。

  只有你输入正确的密码才能打开这个数据库,否则就不能打开这个数据库。

  撤销密码也很简单,当你给一个数据库已经设置了一个密码后,要想撤销这个密码,就再用独立方式打开这个数据库,然后单击原来是“设置数据库密码”那个命令的位置,现在已经是“撤销数据库密码”命令了,单击这个命令,这时会在屏幕上弹出一个对话框,

  这次我们只要再输入一次正确的密码,就可以将这个数据库密码撤销了。设置用户与组的权限和帐号
  单纯的密码只能起到等不能打开这个数据库的作用,要使数据库的使用者拥有不同的权限,即有的人可以修改数据库你的内容,而有的人只能看看数据库的内容而不能修改。这就需要为不同的用户或某群用户组设置权限了。
  首先将鼠标移动到主菜单上的工具按钮上,然后单击鼠标左键,会弹出一个子菜单,将鼠标移动到这个菜单上的安全选项上,会在这个选项右面弹出一个菜单,将鼠标移动到这个菜单上的“用户与组权限”上,单击鼠标左键,这样会在屏幕上弹出一个对话框,

  在这个对话框中,我们可以更改不同用户对数据库或其中的某个对象的访问权限。假如我们想使用户李明只能打开运行数据库的窗体,而不想要他能打开其他的表或查询,只需要先在用户名中选择“李明”,然后在对象类型下拉框中选择“窗体”,现在选择一个窗体,完后将鼠标移动到权限框中选中李明可有的“打开/运行”项,完成这些后,单击“确定”按钮就可以使李明在使用中只能看到窗体,而不能修改其他的数据内容了。也不能看到表或查询了。
  上面我们只讲了怎样设置用户或组的权限,但怎样才能将所需要的人都有一定的权限,当然还必须要给每个用户或组一个帐号,这样才能进行管理,以便分配权限。
  要实现这个功能,就象刚才一样,在安全选项右面的菜单中单击鼠标,只是这次单击的是“设置用户与组的帐号”,随后弹出的也是“用户与组帐号”对话框。

  我们还要在这个对话框中管理用户或组。在这个对话框中有三个选项卡,第一个用来在在现有的组中管理用户的名称。在这个选项卡上,我们可以单击“新建”按钮在“用户组”或“其它组”中添加新的用户,也可以单击“删除”按钮将组中的这个用户删去。单击“清除密码”就可以取消原来这个用户的密码。
  下面的这两个组列表中,左面的是现在所有的组,而右面的则是在上面文本框中的这个用户所在的组。通过中间的选择按钮就可以控制用户所在的组了。不同的组可以有不同的权限,所有这样管理以后,处于同一组中的用户就有了同样的权限了。
  而“组”选项卡则是用来管理组的,

  我们可以单击“新建”按钮添加组,也可以单击“删除”按钮删除一个组。而每一个组,都可以通过单击组合框来获得。
  “更改登陆密码” 选项,

  是当一个用户用他原来的密码登陆到Access中以后,为了安全原因,可以修改自己的访问密码。当你设置好这些以后,单击“确定”按钮就可以了。如何加密/解密数据库
  对于一个普通的Access数据库文件,由于可以使用一些工具绕过它的密码,直接读取里面的数据表,所以必须有一种方法将这种数据库文件进行加密编码,以非法的访问情况,这样这个数据库才能算是安全的。
  如果要对某个某个数据库文件进行加密,只要单击“工具”菜单下“安全”选项下面的子菜单上的“加密/解密数据库”命令,就会弹出一个“加密/解密数据库”对话框,

  在这个对话框中选取要进行加密的“数据库文件”然后单击“确定”按钮,这时又弹出一个“数据库加密后另存为”对话框,

  在这个对话框输入加密以后保存的数据库文件名。完成好后单击“保存”按钮就可以将这个数据库加密了。
  如果要解密这个数据库,只要按照这个步骤再作一次,只是选取的是加密的数据库文件,新生成的是解密以后的文件罢了。
提问题时注意版块要与你所要问的问题相对应,
返回列表