第 8 章 Access 编程基础
description
Transcript of 第 8 章 Access 编程基础
第 8 章 Access 编程基础
知识网络图
窗体结构
窗体类型
图 8.3 纵栏式窗体
窗体类型
窗体类型
图 8.5 主 / 子窗体
窗体类型
图 8.6 图表窗体
窗体类型
图 8.7 数据透视表窗体
8 . 2 创建窗体
8.2.1 使用向导创建窗体【例 8.1 】创建一个纵栏式窗体,窗体名为“学生基本信息”,窗体视图如图 8.3 所示,窗体上显示学号、姓名、性别、所在学院、照片五个字段。
8.2.1 使用向导创建窗体【例 8.1 】创建一个纵栏式窗体,窗体名为“学生基本信息” 1 、单击“使用向导创建窗体”,选择数据源和字段
8.2.1 使用向导创建窗体
2 、选择一种窗体布局“纵栏表”
8.2.1 使用向导创建窗体3 、选择一种样式“标准”
8.2.1 使用向导创建窗体4 、输入窗体标题“学生基本信息”, 。
8.2.1 使用向导创建窗体窗体的设计视图
8.2.2 使用设计视图创建窗体【例 8.2 】采用“使用设计视图创建窗体”方式完成【例 8.1 】。
1、单击“使用设计视图创建窗体”,
8.2.2 使用设计视图创建窗体
2 、选择数据源:鼠标右击窗体主体节以外的灰色区域,弹出如图 8.14 所示快捷菜单
鼠标点击这里
8.2.2 使用设计视图创建窗体
保存窗体
8. 3 设计窗体
8.3.1 常用控件
8. 3 设计窗体
【例 8.3 】在【例 8.1 】的基础上,向窗体添加 5个命令按钮“上一学生”、“下一学生”、“添加学生”、“删除学生”、“关闭窗体”,且按钮具有相应功能,增加一个标签“学生基本信息管理”。其运行界面如图 8.18 。
8. 3 设计窗体
先确认“控件向导”处在开启状态,选定工具栏上“命令按钮”,然后在窗体相应位置上单击,出现如图 8.19 窗口
8. 3 设计窗体
选择按钮风格
8. 3 设计窗体
为命令按钮命名,每一个按钮的名字在一个窗体中是唯一的
8. 3 设计窗体
8.3.3 控件的属性
图 8.22 “ 关闭窗体”按钮的属性窗口 图 8.23 “ 关闭窗体”按钮的事件属性
名称 属性 说明
窗体
标题 运行时显示在窗体标题栏上的文字。图片 可以将一幅图片作为窗体的背景。记录源 用来选择窗体要管理的数据来源的表或查询。
文本标签
名称 文本对象的名字,代码中使用名称来引用一个对象,如 t1
标题 显示出来的文本内容,代码中使用 caption 表示,在程序中可以通过修改 caption的属性来修改显示出来的文字。如一个文本标签的名字为 t1 ,则 t1.caption 表示文本标签的标题属性。 t1.caption=" 北京奥运 " 将该文本标签显示的文字改为了“北京奥运”。
字体大小 代码表示:名称 .fontsize 如设定字体大小为 12 代码表示 t1.fontsize=12
字体颜色 代码表示:名称 .forecolor 如设定字体为红色,代码表示 t1.forecolor=255
文本框
名称 含义同文本标签,如 score 。控件来源 将该文本框同记录源中的某个字段绑定,用来显示或修改该字段的内容
默认值 文本框里的初始值。代码表示:名称 .value 。如 score.value=80 表示将名称为 score 的文本框里的值赋值为 80 。
按钮
名称 使用向导生成的按钮或已经编写事件过程的命令按纽,名称不能随意改变,如果要改名称,必须在生成的代码里要做相应改变。
标题 显示在命令按钮上的文字。图片 命令按钮的外观可以使用图片代替。
8.3.4 控件的事件:所谓事件是一个控件可以辨认的动作,
图 8.23 “ 关闭窗体”按钮的事件属性
8 . 4 模块
类模块 标准模块
8 . 5 VBA 编程基础
8.5.1VBA 注释在 VBA 程序中,注释可以通过以下两种方式实现: 使用 Rem 语句 :Rem 注释语句 用“ '”号 ' 注释语句【例 8.4 】Dim MyStr1,MyStr2MyStr1 = "Hello" :Rem 注释在语句之后要用冒号
隔开。MyStr2 = "Goodbye" ' 这也是一条注释;无需使用冒号。
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(变体) 根据需要 可以表示上述任何一种类型
8.5.3 变量
使用 Dim 语句声明变量格式: Dim 变量名 A s 数据类型【例 8.6 】声明一个名为 MyName 的字符串变量。 Dim MyName As String给变量赋值: MyName=" 姚明 "改变变量的值: MyName=" 小巨人 "
8.5.4 表达式
1 .数学运算 +:加法运算,也适合于字符串的之间的连接运算。 -:加法运算。 * :乘法运算。 / :除法运算。用来进行两个数的除法运算并返回
一个 浮点数。 \ :整除运算。返回两数相除后的整数部分。 Mod :求余运算。例如: 21 Mod 2 表示 21 被 1整
除以后 的余数,结果为 1。^ :幂运算。例如: 3^2 表示以 3为底的 2次方,
结果为 9。
关系运算也称比较运算,它表示不等式的真或假,主要用于数值、日期等之间的比较。 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 .连接运算 连接运算符作用是将两个字符串连接起来,包含“ +”和
“ &”。“+”只能连接两个字符串,“ &”可以将两个不同类型的表
达式强制连接。
8.5.2 VBA 数据类型
图 8.26 立即窗口
在 VBE窗口,运行菜单【视图】【立即窗口】命令,弹出如图 8.26立即窗口,输入“ ?”号,在问号后输入表达式,回车后即可显示表达式结果
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
函数格式 说明 应用举例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,"及格 ","不及格 ") 结果:及格
8 . 6 VBA 程序流程控制语句
A
B
顺序结构
循环结构图
A
条件Y
N
选择结构
BA
条件NY
8.6.1 顺序结构【例 8.8 】创建一个窗体名为“计算圆面积和周长”,功能是能接受用户输入一个圆的半径,根据用户输入的半径进行计算圆的面积和周长,窗体设计视图如图 8.28(a),窗体运行图如图 8.28(b),在第一个文本框输入半径后,单击“计算”按钮,将计算出来的圆的面积和周长分别显示在相应的文本框中,单击“关闭”按钮,可以关闭窗体
属性
控件名称 标题 说明半径 该标签在程序运行时仅仅作为提示,名称可采用默认或随意
周长 同上
面积 同上
bj 文本框,用来输入半径,文本框无标题属性
zc 文本框,用来显示周长
mj 文本框,用来显示面积
Command1
计算 采用非向导方式生成,该名称可采取默认,但一旦编写相应事件过程后,名称不宜随便修改。
关闭 “ ” “ ”采用向导方式生成,选择 类别 为窗体操作, 操作 为关闭窗体,名称可采用默认或随意命名,一旦创建后,不要随意改变其名称。
创建事件过程,单击选定“计算”按钮,单击鼠标右键,执行快捷菜单中“属性”项,在属性窗口中选择“事件”页面,在“单击”项后选择“事件过程”,单击“…”,进入 VBA 界面,系统自动生成如下代码: Private Sub Command1_Click() End Sub( 4)编写代码,在两行代码中间输入如下命令序列 zc.Value = 3.14 * bj.Value * 2 mj.Value = 3.14 * bj.Value ^2
条件语句 —— 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
【例 8.9 】创建一个窗体名为“判断成绩”,功能是能接受用户输入一个成绩,根据用户输入的成绩进行判断成绩是否及格,窗体运行图如 8.29(a),输入成绩后,单击“判断成绩是否及格”按钮,弹出图 8.29(b) 对话框,若成绩大于等于 60,对话框里提示“成绩及格”,若成绩小于 60,对话框提示“成绩不及格”。
控件名称
标题 说明
标签 1 成绩 该标签在程序运行时仅仅作为提示,名称可随意
score 文本框,用来输入成绩,文本框无标题属性
Command1
判断成绩是否及格
采用非向导方式生成,该名称可采取默认,但一旦编写相应事件过程后,名称不宜随便修改。
属性设置
( 3 )单击选定“判断成绩是否及格”按钮,单击鼠标右键,执行快捷菜单中“属性”项,在属性窗口中选择“事件”页面,在“单击”项后选择“事件过程”,单击“…”,进入 VBA 界面,系统自动生成如下代码: Private Sub Command1_Click() End Sub( 4 )在两行代码中间输入如下命令序列 If score.Value >= 60 Then MsgBox " 成绩及格 " Else MsgBox " 成绩不及格 " End If
条件语句 —— 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 子句后面的语句块。
【例 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
控件名称 标题 说明成绩 该标签在程序运行时仅仅作为提示,名称可随意
绩点 同上
score 文本框,用来输入成绩,文本框无标题属性
scorepoint 文本框,用来显示绩点。
Command1 计算 采用非向导方式生成,该名称可采取默认,但一旦编写相应事件过程后,名称不宜随便修改。
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
循环——for……next 语句
格式:For < 循环变量 >= 初值 To 末值 [Step 步长 ]
[< 语句序列 1>] [Exit For] [< 语句序列 2>]Next < 循环变量 >说明:执行过程如图 8.13所示。循环变量必须是数值型。步长默认为 1 。一般初值小于末值,如果初值大于末值,步长要为负数。
【例 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
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 文本框,用来显示结果
注释:• 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 ,
即显示在文本框中。
循环—— 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 ,否则循环无法结束。
【例 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