第 8 章 Access 编程基础

54
第8第 Access 第第第第

description

第 8 章 Access 编程基础. 知识网络图. 窗体结构. 窗体类型. 图 8.3 纵栏式窗体. 窗体类型. 窗体类型. 图 8.5 主 / 子窗体. 窗体类型. 图 8.6 图表窗体. 窗体类型. 图 8.7 数据透视表窗体. 8 . 2 创建窗体. 8.2.1 使用向导创建窗体. 【 例 8.1】 创建一个纵栏式窗体,窗体名为 “ 学生基本信息 ” ,窗体视图如图 8.3 所示,窗体上显示学号、姓名、性别、所在学院、照片五个字段。. 8.2.1 使用向导创建窗体. 【 例 8.1】 创建一个纵栏式窗体,窗体名为 “ 学生基本信息 ” - PowerPoint PPT Presentation

Transcript of 第 8 章 Access 编程基础

Page 1: 第 8 章 Access 编程基础

第 8 章 Access 编程基础

Page 2: 第 8 章 Access 编程基础

知识网络图

Page 3: 第 8 章 Access 编程基础

窗体结构

Page 4: 第 8 章 Access 编程基础

窗体类型

图 8.3 纵栏式窗体

Page 5: 第 8 章 Access 编程基础

窗体类型

Page 6: 第 8 章 Access 编程基础

窗体类型

图 8.5 主 / 子窗体

Page 7: 第 8 章 Access 编程基础

窗体类型

图 8.6 图表窗体

Page 8: 第 8 章 Access 编程基础

窗体类型

图 8.7 数据透视表窗体

Page 9: 第 8 章 Access 编程基础

8 . 2 创建窗体

Page 10: 第 8 章 Access 编程基础

8.2.1 使用向导创建窗体【例 8.1 】创建一个纵栏式窗体,窗体名为“学生基本信息”,窗体视图如图 8.3 所示,窗体上显示学号、姓名、性别、所在学院、照片五个字段。

Page 11: 第 8 章 Access 编程基础

8.2.1 使用向导创建窗体【例 8.1 】创建一个纵栏式窗体,窗体名为“学生基本信息” 1 、单击“使用向导创建窗体”,选择数据源和字段

Page 12: 第 8 章 Access 编程基础

8.2.1 使用向导创建窗体

2 、选择一种窗体布局“纵栏表”

Page 13: 第 8 章 Access 编程基础

8.2.1 使用向导创建窗体3 、选择一种样式“标准”

Page 14: 第 8 章 Access 编程基础

8.2.1 使用向导创建窗体4 、输入窗体标题“学生基本信息”, 。

Page 15: 第 8 章 Access 编程基础

8.2.1 使用向导创建窗体窗体的设计视图

Page 16: 第 8 章 Access 编程基础

8.2.2 使用设计视图创建窗体【例 8.2 】采用“使用设计视图创建窗体”方式完成【例 8.1 】。

1、单击“使用设计视图创建窗体”,

Page 17: 第 8 章 Access 编程基础

8.2.2 使用设计视图创建窗体

2 、选择数据源:鼠标右击窗体主体节以外的灰色区域,弹出如图 8.14 所示快捷菜单

鼠标点击这里

Page 18: 第 8 章 Access 编程基础

8.2.2 使用设计视图创建窗体

保存窗体

Page 19: 第 8 章 Access 编程基础

8. 3 设计窗体

8.3.1 常用控件

Page 20: 第 8 章 Access 编程基础

8. 3 设计窗体

【例 8.3 】在【例 8.1 】的基础上,向窗体添加 5个命令按钮“上一学生”、“下一学生”、“添加学生”、“删除学生”、“关闭窗体”,且按钮具有相应功能,增加一个标签“学生基本信息管理”。其运行界面如图 8.18 。

Page 21: 第 8 章 Access 编程基础

8. 3 设计窗体

先确认“控件向导”处在开启状态,选定工具栏上“命令按钮”,然后在窗体相应位置上单击,出现如图 8.19 窗口

Page 22: 第 8 章 Access 编程基础

8. 3 设计窗体

选择按钮风格

Page 23: 第 8 章 Access 编程基础

8. 3 设计窗体

为命令按钮命名,每一个按钮的名字在一个窗体中是唯一的

Page 24: 第 8 章 Access 编程基础

8. 3 设计窗体

8.3.3 控件的属性

图 8.22 “ 关闭窗体”按钮的属性窗口 图 8.23 “ 关闭窗体”按钮的事件属性

Page 25: 第 8 章 Access 编程基础

名称 属性 说明

窗体

标题 运行时显示在窗体标题栏上的文字。图片 可以将一幅图片作为窗体的背景。记录源 用来选择窗体要管理的数据来源的表或查询。

文本标签

名称 文本对象的名字,代码中使用名称来引用一个对象,如 t1

标题 显示出来的文本内容,代码中使用 caption 表示,在程序中可以通过修改 caption的属性来修改显示出来的文字。如一个文本标签的名字为 t1 ,则 t1.caption 表示文本标签的标题属性。 t1.caption=" 北京奥运 " 将该文本标签显示的文字改为了“北京奥运”。

字体大小 代码表示:名称 .fontsize 如设定字体大小为 12 代码表示 t1.fontsize=12

字体颜色 代码表示:名称 .forecolor 如设定字体为红色,代码表示 t1.forecolor=255

文本框

名称 含义同文本标签,如 score 。控件来源 将该文本框同记录源中的某个字段绑定,用来显示或修改该字段的内容

默认值 文本框里的初始值。代码表示:名称 .value 。如 score.value=80 表示将名称为 score 的文本框里的值赋值为 80 。

按钮

名称 使用向导生成的按钮或已经编写事件过程的命令按纽,名称不能随意改变,如果要改名称,必须在生成的代码里要做相应改变。

标题 显示在命令按钮上的文字。图片 命令按钮的外观可以使用图片代替。

Page 26: 第 8 章 Access 编程基础

8.3.4 控件的事件:所谓事件是一个控件可以辨认的动作,

图 8.23 “ 关闭窗体”按钮的事件属性

Page 27: 第 8 章 Access 编程基础

8 . 4 模块

类模块 标准模块

Page 28: 第 8 章 Access 编程基础

8 . 5 VBA 编程基础

8.5.1VBA 注释在 VBA 程序中,注释可以通过以下两种方式实现: 使用 Rem 语句 :Rem 注释语句 用“ '”号 ' 注释语句【例 8.4 】Dim MyStr1,MyStr2MyStr1 = "Hello" :Rem 注释在语句之后要用冒号

隔开。MyStr2 = "Goodbye" ' 这也是一条注释;无需使用冒号。

Page 29: 第 8 章 Access 编程基础

8.5.2 VBA 数据类型数据类型 存储空间 说明

Boolean(布尔) 2字节 True或 false

Byte(字节) 1字节 用于存储二进制数,范围: 0~255( 0~28)Integer(整型) 2字节 “整数,最高位是符号位,类型符 %”,如 10、 -10、 10

%

Long(长整型) 4字节 “整数,最高位是符号位,类型符 &”,如 10&, 123456&

Single(单精度)

4字节 浮点数,精确度 7 “位,类型符 !”,如 10.5!、 10.5

Double(双精度)

8字节 浮点数,精确度 16 “位,类型符 #”,如 10.5#

Currency(货币)

8字节 “定点数或整数,用于货币计算,类型符 @”,如 10.5@

Decimal(小数)

14字节 存储从 -10^28-1 到 10^28-1 范围的数字

Date(日期) 8字节 “日期文字须以数字符号 #”扩起来,例如, #January 1, 2006#

String(字符) 字符长度 “对应表中文本数据类型,定界符为 "”,如 "123", "welcome"

Object(对象) 4字节 储存对象地址来引用对象Variant(变体) 根据需要 可以表示上述任何一种类型

Page 30: 第 8 章 Access 编程基础

8.5.3 变量

使用 Dim 语句声明变量格式: Dim 变量名 A s 数据类型【例 8.6 】声明一个名为 MyName 的字符串变量。 Dim MyName As String给变量赋值: MyName=" 姚明 "改变变量的值: MyName=" 小巨人 "

Page 31: 第 8 章 Access 编程基础

8.5.4 表达式

1 .数学运算 +:加法运算,也适合于字符串的之间的连接运算。 -:加法运算。 * :乘法运算。 / :除法运算。用来进行两个数的除法运算并返回

一个 浮点数。 \ :整除运算。返回两数相除后的整数部分。 Mod :求余运算。例如: 21 Mod 2 表示 21 被 1整

除以后 的余数,结果为 1。^ :幂运算。例如: 3^2 表示以 3为底的 2次方,

结果为 9。

Page 32: 第 8 章 Access 编程基础

关系运算也称比较运算,它表示不等式的真或假,主要用于数值、日期等之间的比较。 VB共提供六种运算符,分别是: =(等于), > (大于), < (小于), >=(大于等于), <=(小于等于)和 <> (不等于)。 3.逻辑运算

2.关系运算

  A B Not A 非 And 与 Or 或T T F T T

T F F F T

F T T F T

F F T F F

4 .连接运算 连接运算符作用是将两个字符串连接起来,包含“ +”和

“ &”。“+”只能连接两个字符串,“ &”可以将两个不同类型的表

达式强制连接。

Page 33: 第 8 章 Access 编程基础

8.5.2 VBA 数据类型

图 8.26 立即窗口

在 VBE窗口,运行菜单【视图】【立即窗口】命令,弹出如图 8.26立即窗口,输入“ ?”号,在问号后输入表达式,回车后即可显示表达式结果

Page 34: 第 8 章 Access 编程基础

8.5.5 系统函数

按功能来分,常用的可分为数学函数、字符函数、转换函数、日期函数、测试函数等。

函数的使用格式:函数名(参数列表)

函数格式 说明 应用举例CStr(表达式 )

将表达式转换为字符串。其他类型转化函数有: CBool、 CByte、 CCur 、 CDate 、 CDbl、 CDec、CInt 、 CLng、 CSng、CStr、 CVar、

CInt(2345.5678) 结果: 2345CStr(437.324) 结果: "437.324""北京 "+cstr(2008)相当于 "北京 "+"2008"

Val(字符串 )

将字符串转化为数值型 Val("16 8th Street.") 结果: 168

Int(数值 ) 返回小于数值的整数部分 Int(99.8) 结果: 99Int(-99.8) 结果: -100。

Len(字符串 )

返回字符串长度 len("北京奥运 ") 结果: 4

Page 35: 第 8 章 Access 编程基础

函数格式 说明 应用举例Right(字符串 ,

n)字符串右取 n个字符 right("北京奥运 ",2) 结果:奥运

Left(字符串 ,n) 字符串左取 n个字符 left("北京奥运 ",2) 结果:北京Mid(字符串 ,n,

m)字符串从 n位置起取m个字符,无m则取后面所有字符

mid("北京奥运 ",3 ,2) 结果:奥运mid("北京奥运 ",3) 结果:奥运

ucase(字符串 ) 将字符串转化为大写 ucase("hello") 结果: HELLO

lcase(字符串 ) 将字符串转化为小写 lcase("HELLO") 结果: hello

Date() 返回当前日期 Date() 结果: 2006-12-20(若系统日期为 2006-12-20)

Day(日期 ) 返回某个日期中的日,类似函数: year(日期)、month(日期 )

Day(Date()) 结果: 20Year(Date()) 结果: 2006-12-28Month(Date()) 结果: 12

iif(条件 ,表达式 1,表达式2)

条件为真,返回表达式1,否则返回表达式2

Score=80iif(score>=60,"及格 ","不及格 ") 结果:及格

Page 36: 第 8 章 Access 编程基础

8 . 6 VBA 程序流程控制语句

A

B

顺序结构

循环结构图

A

条件Y

N

选择结构

BA

条件NY

Page 37: 第 8 章 Access 编程基础

8.6.1 顺序结构【例 8.8 】创建一个窗体名为“计算圆面积和周长”,功能是能接受用户输入一个圆的半径,根据用户输入的半径进行计算圆的面积和周长,窗体设计视图如图 8.28(a),窗体运行图如图 8.28(b),在第一个文本框输入半径后,单击“计算”按钮,将计算出来的圆的面积和周长分别显示在相应的文本框中,单击“关闭”按钮,可以关闭窗体

Page 38: 第 8 章 Access 编程基础

属性

控件名称 标题 说明半径 该标签在程序运行时仅仅作为提示,名称可采用默认或随意

周长 同上

面积 同上

bj 文本框,用来输入半径,文本框无标题属性

zc 文本框,用来显示周长

mj 文本框,用来显示面积

Command1

计算 采用非向导方式生成,该名称可采取默认,但一旦编写相应事件过程后,名称不宜随便修改。

关闭 “ ” “ ”采用向导方式生成,选择 类别 为窗体操作, 操作 为关闭窗体,名称可采用默认或随意命名,一旦创建后,不要随意改变其名称。

Page 39: 第 8 章 Access 编程基础

创建事件过程,单击选定“计算”按钮,单击鼠标右键,执行快捷菜单中“属性”项,在属性窗口中选择“事件”页面,在“单击”项后选择“事件过程”,单击“…”,进入 VBA 界面,系统自动生成如下代码: Private Sub Command1_Click() End Sub( 4)编写代码,在两行代码中间输入如下命令序列 zc.Value = 3.14 * bj.Value * 2 mj.Value = 3.14 * bj.Value ^2

Page 40: 第 8 章 Access 编程基础

条件语句 —— if语句

格式 1 :if < 条件 > the

n

< 语句序列 1>

end if

格式 2 :if < 条件 > then

< 语句序列 1>

else

< 语句序列 2>

end if

格式 3 :If < 条件 1> Then

< 语句序列 1>

ElseIf < 条件 2> Then

< 语句序列 2>

Else

< 语句序列 3>

End If

Page 41: 第 8 章 Access 编程基础

【例 8.9 】创建一个窗体名为“判断成绩”,功能是能接受用户输入一个成绩,根据用户输入的成绩进行判断成绩是否及格,窗体运行图如 8.29(a),输入成绩后,单击“判断成绩是否及格”按钮,弹出图 8.29(b) 对话框,若成绩大于等于 60,对话框里提示“成绩及格”,若成绩小于 60,对话框提示“成绩不及格”。

Page 42: 第 8 章 Access 编程基础

控件名称

标题 说明

标签 1 成绩 该标签在程序运行时仅仅作为提示,名称可随意

score 文本框,用来输入成绩,文本框无标题属性

Command1

判断成绩是否及格

采用非向导方式生成,该名称可采取默认,但一旦编写相应事件过程后,名称不宜随便修改。

属性设置

Page 43: 第 8 章 Access 编程基础

( 3 )单击选定“判断成绩是否及格”按钮,单击鼠标右键,执行快捷菜单中“属性”项,在属性窗口中选择“事件”页面,在“单击”项后选择“事件过程”,单击“…”,进入 VBA 界面,系统自动生成如下代码: Private Sub Command1_Click() End Sub( 4 )在两行代码中间输入如下命令序列 If score.Value >= 60 Then MsgBox " 成绩及格 " Else MsgBox " 成绩不及格 " End If

Page 44: 第 8 章 Access 编程基础

条件语句 —— Select Case 语句

格式:Select Case < 检验表达式 >

Case < 比较列表 1>

< 语句序列 1>

Case < 比较列表 2>

< 语句序列 2>

……

[Case Else]

< 语句序列 n>

End Select

说明:1 、 < 比较列表 > 可以是如下几种形式:( 1 )表达式(如 60 , 2*x )。( 2 )表达式 1 to 表达式 2 (表示在表

达式 1 和表达式 2 之间)。( 3 ) is 关系运算符(如 is <=100 )。( 4 )表达式 1 ,表达式 2 ,……。2 、如果有一个以上的 Case 子句与 < 检

验表达式 > 匹配,则 VBA 只执行第一个匹配的 Case 字句后面的语句组。

3 、如果前面的 Case 子句与 < 检验表达式 >都不匹配,则可在 Case Else 子句后面的语句块。

Page 45: 第 8 章 Access 编程基础

【例 8.10】创建一个窗体“成绩绩点计算”,功能是能接受用户输入成绩,根据用户输入的成绩按照表 8-6进行计算成绩绩点,窗体设计视图如图 8.30 (a),窗体运行图如图 8.30 (b),在第一个文本框输入成绩后,单击“计算”按钮,将计算出来的绩点分别显示在相应的文本框中。

表 8-6 成绩绩点转换表

绩 点

0 1.3

1.7 2.0 2.3 2.7 3.0 3.3 3.7 4

百分制

<60 61 62~65

66~70

71~74

75~77

78~81

82~84

85~89

≥90

Page 46: 第 8 章 Access 编程基础

控件名称 标题 说明成绩 该标签在程序运行时仅仅作为提示,名称可随意

绩点 同上

score 文本框,用来输入成绩,文本框无标题属性

scorepoint 文本框,用来显示绩点。

Command1 计算 采用非向导方式生成,该名称可采取默认,但一旦编写相应事件过程后,名称不宜随便修改。

Page 47: 第 8 章 Access 编程基础

Private Sub Command1_Click()

Select Case score.ValueCase Is < 60 scorepoint.Value = 0Case Is = 60 scorepoint.Value = 1Case Is = 61 scorepoint.Value = 1.3Case 62 To 65 scorepoint.Value = 1.7Case 66 To 70 scorepoint.Value = 2Case 71 To 74

scorepoint.Value = 2.3Case 75 To 77

scorepoint.Value = 2.7Case 78 To 81

scorepoint.Value = 3Case 82 To 84

scorepoint.Value = 3.3Case 85 To 89

scorepoint.Value = 3.7Case 90 To 100

scorepoint.Value = 4End Select

End Sub

Page 48: 第 8 章 Access 编程基础

循环——for……next 语句

格式:For < 循环变量 >= 初值 To 末值 [Step 步长 ]

[< 语句序列 1>] [Exit For] [< 语句序列 2>]Next < 循环变量 >说明:执行过程如图 8.13所示。循环变量必须是数值型。步长默认为 1 。一般初值小于末值,如果初值大于末值,步长要为负数。

Page 49: 第 8 章 Access 编程基础

【例 8.11 】创建一个窗体“计算 1到 10 的累加和”,窗体设计视图和运行图分别见图 8.31 和 8.32 ,要求单击“开始计算”按钮,将计算结果显示在文本框中。

图 8.33求 1到 10累加和流程图

Sum=sum+i

i<=10

Y

N

Sum=0

i=1

i=i+1

显示 sum

Page 50: 第 8 章 Access 编程基础

Private Sub Command1_Click() Dim sum As Integer sum = 0 For i = 1 To 10 Step 1 sum = sum + i Next i total.Value = sumEnd Sub

表 8-8 “计算 1到 10的累加和”窗体控件属性

控件名称 标题 说明1+2+……10= 名称可随意

total 文本框,用来显示结果

Page 51: 第 8 章 Access 编程基础

注释:• Dim sum As Integer 声明一个整型变量 sum ,用

来存放和。• Sum=0 ,在计算之前先初始化为 0 。• For i = 1 To 10 Step 1 这里 step 1 可以省略。• Sum=sum+i 表示将 i 的值累加到 sum 中。• Total.value=sum 表示将计算的结果赋值给 total ,

即显示在文本框中。

Page 52: 第 8 章 Access 编程基础

循环—— do ……loop 语句

格式 1 :Do [while | until 条件表达式 ][< 语句序列 1>][Exit Do][< 语句序列 2>]Loop

格式 2 :Do[< 语句序列 1>][Exit Do][< 语句序列 2>]Loop [while | until 条件表达

式 ]

说明: 图 8.15 、图 8.16分别是格式 1 、

格式 2 的执行过程 格式 1先判断后执行,格式 2先

执行后判断,循环体内的语句至少执行一次。

While指明条件为真是执行循环体内的语句, until 则相反,条件为假时执行循环体语句。

如果没有 while 或 until ,循环体中一定要有 exit do ,否则循环无法结束。

Page 53: 第 8 章 Access 编程基础
Page 54: 第 8 章 Access 编程基础

【例 8.12 】采用 do while…Loop 语句完成【例 8.11 】要求,界面和控件属性完全同【例 8.11 】。• Private Sub Command1_Click()• Dim sum As Integer• sum = 0• i=1• Do While i<=10• sum = sum + i• i=i+1• Loop• total.Value = sum• End Sub