1、全国计算机等级考试二级教程 Access数据库程序设计 第7章VBA编程基础目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导7.1.1标准模块标准模块存放的一般都是可以供其他Access 数据库对象或代码使用的公共过程,在Access 2010 中单击【创建】【宏与代码】组中的按钮,便可创建一个标准模块并进入代码编写环境。用户定义类模块就是用户自行创建和定义
2、的类模块。用户定义类模块的创建方法:在【创建】【宏与代码】组中单击“类模块”按钮,在打开的VBA 窗口中进行定义即可;或在VBA 窗口中选择“插入”菜单下的“类模块”命令进行创建。2用户定义类模块这类模块可以有自己的事件代码和处理模块,且从属于各自的窗体和报表。系统对象类模块的作用范围是其所属窗体或报表内部,其生命周期伴随窗体或报表的打开而开始,伴随窗体或报表的关闭而结束。1系统对象类模块7.1.2 类模块类模块是以类的形式封装的模块,是面向对象编程的基本单位。类模块包括系统对象类模块和用户定义类模块。7.1.3用VBA编写模块过程Sub 过程又称子过程,这类过程会执行一系列操作,没有返回值。
3、Sub 过程的定义格式如下。Sub 过程名 程序代码End Sub1Sub过程模块由声明区和过程构成,声明区用来声明模块所使用的变量等项目,一般位于模块的开始部分;过程是具体的模块内容,分为Sub 过程和Function 过程两种类型。7.1.3用VBA编写模块过程Function 过程又称函数过程,这类过程也会执行一系列操作,且可以有返回值。Function过程的定义格式如下。Function 过程名AS(返回值)数据类型 程序代码End Function2Function过程目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7
4、.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导u利用控件属性进入VBE 窗口。u利用“查看代码”功能进入VBE 窗口。在【创建】【宏与代码】组中单击“Visual Basic”按钮,或在【数据库工具】【宏】组中单击“Visual Basic”按钮。若想进入VBE 窗口的同时自动创建模块,可在【创建】【宏与代码】组中单击“模块”按钮,或单击该组中的“类模块”按钮。7.2.1进入VBE窗口的方法3通过窗体或报表对象进入VBE窗口1直接进入VBE窗口2创建模块进入VBE窗口7
5、.2.2VBE窗口概述VBE 窗口默认由菜单栏、工具栏、代码窗口、工程窗口、监视窗口和属性窗口等部分组成。目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导示例如下:.txtNo=123058:.txtSex=男:.txtAge=30u 当多条语句写在同一行时,各语句之间需要用“:”隔开示例如下:Str1=教学 _&管理 _&系统u 当语句较长,一行写不下时,
6、可以用“_”(空格+下划线)将语句连续写在下一行7.3.1程序语句书写规则u 为使程序结构层次分明,提高可读性和可维护性,应尽量采用缩进方式编写。示例如下:txtNo=123058 给变量txtNo 赋值“123058”txtSex=男:Rem 给变量txtSex 赋值“男”u 使用“注释语句”或“:Rem 注释语句”为某条语句添加注释语句7.3.1程序语句书写规则注释语句不参与程序运行,它可以提高代码的可读性,方便以后对程序进行查看、维护等工作。提示7.3.2数据类型和数据库对象1标准数据类型7.3.2数据类型和数据库对象用户可以根据实际情况创建包含一个或多个VBA 标准数据类型的数据类型,
7、这样的数据类型就是用户自定义的数据类型。使用TypeEnd Type 关键字可实现自定义数据类型,具体的定义格式如下。2用户自定义数据类型Type 数据类型名AsAsEnd Type7.3.2数据类型和数据库对象3数据库对象表、查询、窗体和报表等数据库对象在VBA 中也有对应的数据类型,具体如下:7.3.3变量与常量1变量的声明变量声明就是定义变量名称及数据类型,以使数据库系统为其分配存储空间,VBA 中声明变量的方式有两种,即显式声明和隐含声明。Dim Name As String 定义Name 为字符串变量Dim Age%,Wage!定义Age 为整型变量,Wage 为单精度类型变量,等价
8、于Dim Age As Integer,Wage As Single显式声明隐含声明Dim Sum 声明变量Sum,由于没有指定数据类型,所以变量Sum 的数据类型为Varianta=1:b=2 分别将1 和2 赋值给变量a 和b,这两个变量的数据类型也是VariantSum=a+b 对变量a 和b 求和,并将结果赋值给Sum,Sum 的值为37.3.3变量与常量2强制声明VBA 允许使用未声明的变量,也允许强制要求所有变量必须定义才能使用,此时可以在代码窗口最上方写入如下语句。Option Explicit强制声明后,如果程序中仍有未声明变量,则程序执行后,会出现错误提示“编译错误:变量未定
9、义”。提示7.3.3变量与常量3变量的作用域模块范围定义在模块所有过程之外的起始位置,作用范围为模块所包含的所有子过程和函数过程局部范围定义在模块的过程内部,作用范围为子过程或函数过程全局范围定义在标准模块的所有过程之外的起始位置,作用范围为所有类模块和标准模块所包含的所有子过程和函数过程7.3.3变量与常量l 变量命名:不能包含空格和标点符号(“_”除外),长度不超过255 个字符,不能使用VBA 的关键字,如Sub、Public 等。l 变量标识命名:由于编写VBA 代码会用到大量的变量名称和各种数据类型,因此可以采用标识命名的方法来为一些常用的变量添加标识。4变量命名与变量标识命名法则常
10、量的值在程序中不能被改变,如16.85 为数值类型的常量,欢迎访问Hello 等为字符串类型的常量,True 和False 为逻辑型常量,#2018-5-30#为日期型常量等,这些常量的值在程序运行过程中都不会发生改变。如果某常量经常被使用,则可以通过定义符号来代替该常量。这样不仅书写方便,还能提高程序的可读性和可维护性。定义符号常量可以使用关键字Const,定义格式如下。Const 符号常量名=常量值Access 系统内部含有若干个启动时就自动建立的系统常量,例如,True、False、Yes、No、On、Off 和Null 等都属于系统常量。7.3.3变量与常量5常量6符号常量7系统常量7
11、.3.4常用的标准函数1算术函数7.3.4常用的标准函数2字符串函数7.3.4常用的标准函数3日期/时间函数7.3.4常用的标准函数4类型转换函数7.3.5运算符和表达式1运算符(1)算术运算符算术运算符用于算术运算,有乘幂()、乘法(*)、除法(/)、整数除法()、求模运算(Mod)、加法(+)、减法(-)共7 个运算符。7.3.5运算符和表达式1运算符(2)关系运算符关系运算符用于表示两个或多个值(或表达式)之间的大小关系,有相等(=)、不等于()、小于()、小于等于(=)共6 个运算符。7.3.5运算符和表达式1运算符(3)逻辑运算符逻辑运算符用于逻辑运算,有与(And)、或(Or)和非
12、(Not)3 个运算符。7.3.5运算符和表达式1运算符(4)连接运算符连接运算符用于连接字符串,有“&”和“+”两个运算符。其中,“&”运算符用来强制两个表达式做字符串连接,如5+2&=&(5+2)的运算结果为“5+2=7”;“+”运算符只有当两个表达式均为字符串数据时,才将两个字符串连接成一个新字符串。若将上述表达式修改为5+2&=+(5+2),由于“+”运算符后面的表达式不是字符串,因此系统会提示“类型不匹配”。u 优先级相同时,表达式按从左到右的顺序计算,可以利用“()”改变优先顺序,使“()”内的表达式先进行计算。u 不同类别的运算符的优先级顺序:算术运算符 连接运算符 关系运算符
13、逻辑运算符。u 算术运算符优先级顺序:幂 乘/除 整除 取余 加/减。u 逻辑运算符优先级顺序:Not And Or。u 逻辑量在表达式中进行算术运算时,True 值会被判断为-1,False 值会被判断为0。u 连接运算符中的两个运算符和关系运算符中的6 个运算符,在各自类别下不存在优先级问题,同时出现时按从左到右的顺序计算。7.3.5运算符和表达式2运算符的优先级目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创
14、建和引用7.10VBA程序错误处理与调试7.11 上机指导7.4.1赋值语句赋值语句可以为变量指定一个值或表达式,通常用“=”连接,其基本语法格式如下。let 变量名=值或表达式【例】创建子过程Test,实现计算3 个数之和并在立即窗口中显示结果。按要求编写的代码如下。Sub Test()Dim a,b,c,x As Integer 声明4 个整型变量a,b,c,xa=2:b=5:c=a*b 给变量a,b,c 分别赋值x=a+b+c 将变量a,b,c 之和赋值给xDebug.Print x=&x 在立即窗口中显示a,b,c 之和(17)End Sub7.4.2条件语句单分支结构的语句执行过程:
15、首先判断If 后面的条件表达式,如果为真(True),则执行其下的语句块;如果为假(False),则执行End If 之后的语句。其基本语法格式如下。If ThenEnd If【例】比较两个数的大小,如果a 大于b,则输出“ab”。1IfThen语句(单分支结构)7.4.2条件语句双分支结构的语句执行过程:如果条件表达式为真(True),则执行语句块1,否则执行语句块2。其基本语法格式如下。If ThenElseEnd If【例】创建子过程Test,比较两个数的大小,如果a 大于b,则输出“ab”,否则输出“请重新输入a 的值”。2IfThenElse语句(双分支结构)7.4.2条件语句多分支
16、结构的语句执行过程:首先判断If 语句后的条件表达式1,如果为真,则执行语句块1;否则继续判断条件表达式2,如果为真,则执行语句块2;以此类推,最后判断条件表达式n,如果为真,则执行语句块n,否则执行Else 语句下的语句块。其基本语法格式如下。If ThenElseIf ThenElseIf ThenElseEnd If3IfThenElseIf语句(多分支结构)7.4.2条件语句Select CaseEnd Select 语句的执行过程:首先计算表达式的值,其结果可以是字符串、数值变量或表达式,然后依次测试每个Case 后面的表达式的值。如果Select Case 后的表达式的值和某一个C
17、ase 后的表达式的值相同,则执行相应Case 结构内的执行语句;如果都不匹配,则执行Case Else 之后的语句。其基本语法格式如下。Select Case 表达式Case 表达式1语句序列1Case 表达式2语句序列2Case 表达式n语句序列nCase Else语句序列n+1End Select4Select CaseEnd Select语句7.4.2条件语句相对于条件语句,条件函数所能完成的逻辑判断的复杂性更弱一些。条件函数被广泛应用于查询、窗体、报表控件和宏设计中。5条件函数(1)IIF函数IIF 函数的语法格式为“IIf(条件表达式,表达式1,表达式2)”,它可以根据条件表达式的
18、值来决定函数的返回值。当条件表达式的值为真(True)时,函数返回表达式1 的值;当条件表达式的值为假(False)时,函数返回表达式2 的值。7.4.2条件语句5条件函数(2)Switch 函数1 使用IIF 函数设置控件来源7.4.2条件语句5条件函数(2)Switch 函数2 使用Switch 函数设置控件来源7.4.2条件语句5条件函数(3)Choose 函数Choose 函数的语法格式为“Choose(索引表达式,选项1,选项2,选项n)”,该函数根据索引表达式的值来返回列表中对应选项的值。比如,当索引表达式的值为1 时,返回选项1 的值;当索引表达式的值为2 时,返回选项2 的值,
19、以此类推。例如,a=Choose(x,a1,a2,a3),如果x=1,则a=a1;如果x=2,则a=a2;如果x=3,则a=a3。7.4.3循环语句ForNext 语句能够重复执行程序代码区域特定次数,其基本语法格式如下。For 循环变量=初值 To 终值 Step 步长循环体 条件语句序列Exit For结束条件语句序列Next 循环变量ForNext 语句的执行过程:循环变量取初值,然后与终值比较,符合条件则执行循环体,执行完成后,循环变量值增加步长,重新与终值比较,符合条件则继续执行循环体,循环变量值继续增加步长,如此反复,直到循环变量与终值比较后不符合条件,则跳出循环。1ForNext
20、 语句7.4.3循环语句1ForNext 语句步长 0若循环变量值 终值,则循环结束,跳出循环。步长=0若循环变量值 终值,则循环体一次也不执行。步长=终值,则循环继续,执行循环体;若循环变量值 终值,则循环结束,跳出循环。7.4.3循环语句Do WhileLoop 语句的执行过程:首先判断条件表达式,当条件表达式为真(True)时,反复执行循环体,直到条件表达式为假(False)或执行到选择性的Exit Do 语句时跳出循环。其基本语法格式如下。Do While 循环体 条件语句Exit Do2Do WhileLoop 语句7.4.3循环语句DoLoop While 语句的执行过程:首先执行
21、一次循环体,然后判断循环条件是否成立,当条件表达式为真(True)时,反复执行循环体,直到条件表达式为假(False)或执行到选择性的Exit Do 语句时跳出循环。其基本语法格式如下。Do循环体 条件语句Exit Do结束条件Loop While 3DoLoop While 语句7.4.3循环语句Do UntilLoop 语句与Do WhileLoop 语句结构相似,不同的是Do UntilLoop 语句是当条件表达式的值为假(False)时,重复执行循环体,直到条件表达式为真(True)时跳出循环。其基本语法格式如下。Do Until 循环体 条件语句Exit Do结束条件Loop4Do
22、UntilLoop 语句7.4.3循环语句DoLoop Until 语句与DoLoop While 语句结构相似。DoLoop Until 语句的执行过程:首先执行一次循环体,再判断循环条件是否成立,当条件表达式为假(False)时,反复执行循环体,直到条件表达式为真(True)时,跳出循环。其基本语法格式如下。Do循环体 条件语句Exit Do结束条件Loop Until 5DoLoop Until 语句7.4.3循环语句WhileWend 语句与Do WhileLoop 结构相似,只是在WhileWend 语句中不能使用Exit Do 语句。其基本语法格式如下。While 循环体Wend6
23、WhileWend 语句WhileWend 语句主要是为了兼容QBasic 和QuickBASIC 而提供的,由于VBA 中已经存在Do WhileLoop 语句,因此WhileWend 语句基本上不需要使用。提示7.4.3循环语句7循环的嵌套020103内循环的循环变量与外循环的循环变量不能同名外循环必须完整地包含内循环,内、外循环语句不能交叉不能从循环体外转入循环体内,也不能从外循环转入内循环7.4.4标号和GoTo语句GoTo语句可以实现无条件跳转到标号指定的语句,并从该处继续执行。其基本语法格式如下。GoTo 标号比如,GoTo Label 语句可以使程序跳转到“Label:”的位置(
24、代码如下),并从该处继续执行。其中,“Label:”中的冒号是用来特指标号的符号。Goto Label 跳转到标号为“Label”的位置执行Label:定义“Label”标号位置过量使用GoTo 语句会导致程序运行跳转频繁,致使程序控制和调试的难度加大,因此,在VBA 编程中应尽量避免使用GoTo 语句。提示目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导7
25、.5.1一维数组一维数组中的数据元素按从头到尾的顺序线性排列,声明一维数组的基本语法格式如下。Public/Private/Static/Dim 数组名(下标下限To 下标上限)As 数据类型VBA 允许在程序中通过声明Option Base 选项来改变数组下标下限的默认值,如Option Base 1 表示数组下标下限的默认值为1。技巧7.5.2二维数组二维数组包含的元素按行、列构成一个矩阵或表的分布。声明二维数组的基本语法格式如下。Dim 数组名(下标下限 To 下标上限,下标下限 To 下标上限)As 数据类型目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA
26、程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导7.6.1对象和集合用来表示客观世界中的任何实体,既可以是具体的实物,如书籍、钢笔,也可以是抽象的概念或人为的概念对象集合所有具有共同属性和共同方法的对象就是一个集合,也可以称为类。7.6.2属性和方法属性用来描述和反映对象特征的参数Title.Caption=教师基本信息方法用来描述对象的行为text.setFocus7.6.3事件和事件过程常见事件鼠标事件对象事件窗体事件键盘事件操作
27、事件154327.6.3事件和事件过程编写VBA 代码过程目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导7.7.1 过程调用子过程名 参数列表或Call 子过程名(参数列表)【例】定义子过程Swap,对两个整型变量x、y 的值进行交换。1子过程的定义和调用7.7.1 过程调用变量名=函数过程名(参数列表)这种方式可以有返回值或函数过程名 参数列表 这种方式
28、没有返回值【例】定义sumnum()函数过程,作用是返回两个整数x、y 之和。2函数过程的定义和调用7.7.2参数传递定义过程时,在过程名或函数名后可以设置一个或多个参数,这些参数称为形参(即形式参数),多个形参之间用“,”分隔。每个形参的完整定义格式如下。OptionalByVal|ByRefParamArray varname()As type=defaultvalue目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模
29、块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导7.8.1打开与关闭操作使用DoCmd 对象打开窗体的基本语法格式如下。DoCmd.OpenForm formname,view,filtername,wherecondition,datamode,windowmode1打开窗体操作formname:窗体的有效名称。view:窗体打开模式,为可选项。filtername:字符串表达式,代表过滤的数据库查询的有效名称。为可选项。wherecondition:字符串表达式,不含WHERE 关键字的有效SQL WHERE 子句。为可选项。datamode:窗体的数据输入模式,为可选项。
30、windowmode:打开窗体时所采用的模式,为可选项。7.8.1打开与关闭操作使用DoCmd 对象打开报表的基本语法格式如下。DoCmd.OpenReport reportname,view,filtername,wherecondition2打开报表操作报表参数view 的取值情况7.8.1打开与关闭操作使用DoCmd 对象实现关闭操作的基本语法格式如下。DoCmd.Close objecttype,objectname,save3关闭操作objecttype:关闭对象的类型,为可选项。objectname:字符串表达式,代表有效的对象名称。为可选项。save:对象关闭时的保存性质,为可选
31、项。7.8.2输入与输出操作从外观上看,输入框就像一个对话框,在其中可以输入信息和单击按钮,并返回包含文本框内容的字符串数据信息。在VBA 中使用输入框的基本语法格式如下。InputBox(prompt,title,default,xpos,ypos,helpfile,context)1输入框7.8.2输入与输出操作消息框的作用是显示消息,等待用户单击按钮,并返回一个整型值告诉系统用户单击的按钮。在VBA 中使用消息框的基本语法格式如下。MsgBox(prompt,buttons,title,helpfile,context)2消息框7.8.3设置VBA验证函数1 输入框7.8.3设置VBA验
32、证函数2 设置单击事件的事件过程3 输入VBA 代码7.8.3设置VBA验证函数4 设置后的效果7.8.4鼠标操作鼠标按下鼠标移动 鼠标抬起7.8.5键盘操作键释放控件对象名_KeyUp(KeyCode As Integer,Shift As Integer)键按下控件对象名_KeyDown(KeyCode As Integer,Shift As Integer)击键控件对象名_KeyPress(KeyAscii As Integer)7.8.6计时事件1 设置窗体属性2 输入VBA 代码在VBA 中可以使用Open 函数打开一个文件,基本语法格式如下。Open Pathname For mo
33、deaccesslockAs#fi1enumber1en=recordlengthInput#语句:从打开的文件中提取数据并向变量赋值。Line Input#语句:从打开的文件中提取数据,但是一次只能提取一行。7.8.7数据文件读写操作1打开文件2读取文件3写入文件Write#语句:将值写入打开的指定文件。Print#语句:将值写入新建的打印文件。7.8.8用代码设置Access选项1 取消确认操作目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA
34、常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导(1)Property Let 语句(2)Property Set 语句(3)Property Get 语句用户定义类模块的方法描述的是类模块的动态特性,即对象的动作。它是对象本身所具有的,反映该对象功能的内部过程或函数。也就是说,Access 类模块的方法定义,就是向类模块中添加Sub 过程或Function 函数两种类型的过程。7.9.1用户定义类模块概述1属性和属性过程2方法3事件用户定义类模块的事件描述的是类模块的消息驱动机制,即对象的响应。它指能被对象识别的用户操作动作或对象状态的变化发出的信息
35、。7.9.2创建和引用用户定义类模块在定义完一个类模块的属性、属性过程、方法和事件后,就可以利用New 运算符来创建该类模块的对象实例,以便引用其内部元素。比如,定义好类模块对象“ClsTest”,则实例的创建形式如下。Private x As ClsTestSet x=New ClsTest 或Set x=New ClsTest(参数)目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误
36、处理与调试7.11 上机指导7.10.1断点的设置选择语句或将光标定位在该行,在VBE 窗口的“调试”菜单项中选择“切换断点”命令选择语句或将光标定位在该行,直接按【F9】键选择语句或将光标定位在该行,在该语句左侧对应的断点栏的位置单击鼠标左键7.10.2调试工具的使用在VBE 窗口的菜单栏或工具栏上单击鼠标右键,在弹出的快捷菜单中选择“调试”命令,可打开“调试”工具栏,利用其中的功能按钮可以实现调试VBA 代码的目的。目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3VBA程序设计基础7.4VBA流程控制语句7.5VBA数组7.6面向对象程序设计的基本概念7.7过程调用
37、和参数传递7.8VBA常用操作7.9用户定义类模块的创建和引用7.10VBA程序错误处理与调试7.11 上机指导在考生文件夹中存在一个数据库文件“samp3.accdb”,该数据库中存在已经设计好的窗体对象“fSys”。请在此基础上按照以下要求对窗体“fSys”进行设计。案例目标7.11 上机指导设计好的窗体效果本案例的操作思路如图 所示。首先需要对窗体的格式进行设置,然后利用VBA 代码实现文本框内用户名称和用户密码的显示以及按钮的功能。操作思路7.11 上机指导操作步骤8.3 上机指导1 设置窗体格式2 设置标签控件格式操作步骤8.3 上机指导3 输入VBA代码全国计算机等级考试二级教程 Access数据库程序设计学习进步海量图书方便查询免费申请样书下载配套资源优惠购书成为作者更多样书申请和资源下载需求,请登录人邮教育社区()囊括各大品类,您想要的应有尽有教师免费申请样书,我们将安排快递迅速送达教学视频、PPT课件、教学案例、习题答案、模拟试卷等丰富资源免费下载教师可以申请最低折扣学生直接优惠购买图书欢迎写文章投稿,我们强大的编辑团队将为您提供专业和高效的编辑出版服务