使用VB开发Access应用程序(2)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\bookdb.mdb“(OLE DB)
通过Connection对象的 对象的Open方法建立数据连接; 方法建立数据连接; 通过 对象的 方法建立数据连接 cn.Open "provider=MSDASQL;dsn=jet_bookdb"(ODBC)
使用VB开发 使用 开发Access应用程序 开发 应用程序
Close方法 方法
6
使用Connection和Recordset的Close方法 和 使用 的 方法
通过使用Connection和Recordset的Close方法,可以释放记录集,关闭和 和 方法, 通过使用 的 方法 可以释放记录集, 数据源的连接。 数据源的连接。 Set Connection=nothing Connection.Close 和 Set Recordset=nothing Recordset.Close
查找客户:
FirstName:Daryl Lastname:Halpin Finder.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
BOF Record #1 Record #2 Record #3 EOF
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 10 对象的定位方法
(2) 使用 使用BOF和EOF遍历记录集 和 遍历记录集
通常用于遍历记录集的代码便是把定位方法和BOF、EOF结合起来, 、 结合起来, 通常用于遍历记录集的代码便是把定位方法和 结合起来 通常代码是一个循环,如下: 通常代码是一个循环,如下:
搜索和查询不同。查询返回的是一个记录集。搜索在记录集的全部记录 中查找满足你说明的条件的单个记录。
针对ADO的记录集,搜索数据使用Recordset的Find方法。
例如,假定你有一个由顾客组成的记录集,并且你对查找姓Smith的第 一个顾客感兴趣,则可以使用以下的代码: rs.Find "[LastName]=’Smith’" 特别要记住的是,与SQL SELECT查询不同,搜索不会产生一个记录集。 当Find方法搜索 Recordset 中满足指定条件的记录,如果条件符合,则 记录集位置设置在找到的记录上,否则位置将设置在记录集的末尾。
Do Until EOF ’从字段 从字段Field中读取数据 从字段 中读取数据 rs.MoveNext Loop
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 11 对象的定位方法
(3) 使用 使用BOF和EOF来确定一个记录集是否为空 和 来确定一个记录集是否为空
使用VB开发 使用 开发Access应用程序 开发 应用程序
1
1. 三步曲开端 2. 用Field对象操作字段 对象操作字段 3. 结合 结合Recordset对象使用定位方法 对象使用定位方法 4. 搜索记录集和表中的数据 5. 使用 使用Bookmark属性记录在 属性记录在Recordset中 属性记录在 中 的位置
即使记录集中没有—个记录,BOF和EOF属性也是可用的。事实上,判 断记录是否为空的最好方法就是检验BOF和EOF的值,如果EOF和 BOF都为True,记录集中便没有记录。
BOF
(No records returned)
EOF
02.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
1) 2) 3)
执行记录集的AddNew方法,这将在记录集的末尾添加一个新的空 白记录。 使用通常向数据库字段赋值的语句为新记录赋值。 用记录集的Update方法把记录写到数据库中。
DataEntr.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
搜索记录集中的数据 15
搜索记录集和表中的数据
rs = nothing Cn.Close
使用VB开发 使用 开发Access应用程序 开发 应用程序
Field对象 对象
7
可以靠检查Field对象的 对象的Value属性来获得字段的值 可以靠检查 对象的 属性来获得字段的值
(因为Field对象的缺省属性是 因为 对象的缺省属性是Value属性,你只要引用Field对象即可,不需要明 属性,你只要引用 对象即可, 对象的缺省属性是 属性 对象即可 显的引用Value属性) 属性) 显的引用 属性
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 对象的定位方法
9
(2) 使用 使用BOF和EOF遍历记录集 和 遍历记录集
Recordset对象还提供了两个属性用于告知你此时是否到了记录集的开 始处或末尾处; EOF(End of File)属性为True时,表示你已移到了记录集的最 后一个元素后面。 BOF(Beginning of File)属性为True时,表示你已移到了记录 集的第一个元素之前。
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 对象的定位方法
8
(1)
Recordset对象的定位方法: 对象的定位方法: 对象的定位方法
MoveFirst方法用于转到记录集的第一行。 MoveNext方法用于转到记录集的下一行。 MovePrevious方法用于转到记录集的上一行。 MoveLast方法用于转到记录集的最后一行。 Move方法用于按说明的个数移动记录。 。
cn.Open " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\bookdb.mdb " (OLE DB)
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象 对象
5
3.使用 使用Recoedset对象返回需要操作的记录集 临时表 对象返回需要操作的记录集(临时表 使用 对象返回需要操作的记录集 临时表)
04.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 13 对象的定位方法
(6) 改变记录的值
为了使用ADO Recordset对象更新已有的记录,可以遵循如下步骤: 1) 2) 3) 打开一个记录集。 给该Recordset对象中的字段分配值 通过执行该Recodset对象的Update方法以保存该记录。 rs.Fields ("LastName") = "Smith" 或者,因为Fields是Recordset对象的缺省集合,在向字段赋值时 可以省去对Fields集合的显式引用。 rs!LastName = "Smith" 4) 用记录集的update方法把记录保存到数据库。
通过Recordset对象的 对象的Open方法返回记录集(建立临时表); 方法返回记录集( 通过 对象的 方法返回记录集 建立临时表); rs.Open mysql, cn 或 rs.Open mysql, cn, adOpenStatic, adLockOptimistic, adCmdTable (分别设定: CursorType、 LockType和Options参数) 分别设定:
使用VB开发 使用 开发Access应用程序 开发 应用程序
引用ADO类库 类库 引用
3
1.中可引用 中可引用ADO类库 中可引用 类库
Microsoft ActiveX Data Objects 2.0 Library Microsoft ActiveX Data Objects 2.1 Library Microsoft ActiveX Data Objects 2.5 Library Microsoft ActiveX Data Objects 2.6 Library
定义1个 对象; 定义 个Recordset对象 对象 Dim rs As New ADODB.Recordset 定义检索语句 可以是: 可以是: 或 SQL查询语句:mysql = "select top 1 * from book" 查询语句: 查询语句 直接是表名: mysql = “book" 直接是表名:
菜单: 工程]→[引用…] 菜单:[工程]→[引用…] ]→[引用
使用VB开发 使用 开发Access应用程序 开发 应用程序
Connection对象 对象
4
2.使用 使用Connection对象连接可用的数据源 使用 对象连接可用的数据源
定义1个 对象; 定义 个Connection对象 对象 Dim cn As New ADODB.Connection 设置Connection对象的 对象的CursorLocation属性为“位于客户端的游标”(adUseClient); 属性为“ 设置 对象的 属性为 位于客户端的游标” ; cn.CursorLocation = adUseClient 定义连接字符串 " provider=MSDASQL;dsn=jet_bookdb“(ODBC)
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 14 对象的定位方法
(7) 用AddNew 和Update方法创建新记录 方法创建新记录
使用记录集的AddNew 和Update方法,可以在任何可更新的Rocordset 对象中创建新的记录,在记录集中创建新记录的过程分为三步:
Recordset对象的定位方法 12 对象的定位方法
(4) 使用 使用RecordCount属性来确定记录集中记录的条数 属性来确定记录集中记录的条数
可以用RecordCount属性来找出在一个 属性来找出在一个Recordset对象中一共有多少 可以用 属性来找出在一个 对象中一共有多少 条记录。 条记录。
各种语法形式 : rs.Fields("LastName") rs!LastName rs![LastName]
集合中, 字段: 在Fields集合中,也可以用索引来标识 集合中 也可以用索引来标识Field字段: 字段 rstEmployees.Fields(0)
可以使用索引循环遍历整个集合,在每一轮的循环中将索引的值加一。 可以使用索引循环遍历整个集合 , 在每一轮的循环中将索引的值加一 。 集合中 的对象编号是从0开始的 因此第一个Field的编号为 , 第二个为 , 依此类推 。 开始的, 的编号为0,第二个为1,依此类推。 的对象编号是从 开始的 , 因此第一个 的编号为 字段的顺序是由基本表决定的。 字段的顺序是由基本表决定的 。 通常按照打开记录集时取得的顺序对字段进行 编号。 编号。 01.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
2
开发一个集于ADO技术的 数据库应用程序的 技术的VB数据库应用程序的 开发一个集于 技术的
三步曲开端
1. 引用ADO类库 类库 引用 2. 利用 利用ADO的Connection对象连接可用的数据源 的 对象连接可用的数据源 3. 利用ADO的Recordset对象返回需要操作的记录 利用 的 对象返回需要操作的记录 集
03.vbx
(5) 当前记录在记录集中的位置
有的时候需要确定当前记录在记录集中的位置,并将当前记录位置指 有的时候需要确定当前记录在记录集中的位置, 示给用户。例如, 示给用户。例如,可以用拨号盘或仪表盘等类型的控件显示当前的记 录位置。以下属性可以指示当前的记录位置: 属性。 录位置。以下属性可以指示当前的记录位置:AbsolutePosition属性。 属性 AbsolutePosition属性的值为当前记录相对于 的位置。然而,不要误 属性的值为当前记录相对于0的位置 然而, 属性的值为当前记录相对于 的位置。 以为它就是记录号:在当前记录处于不定状态时,AbsolutePosition 以为它就是记录号:在当前记录处于不定状态时, 的值为一1。另外,在访问记录集时, 的值为一 。另外,在访问记录集时,不能保证记录每次都以同样的顺 序出现。 序出现。
通过Connection对象的 对象的Open方法建立数据连接; 方法建立数据连接; 通过 对象的 方法建立数据连接 cn.Open "provider=MSDASQL;dsn=jet_bookdb"(ODBC)
使用VB开发 使用 开发Access应用程序 开发 应用程序
Close方法 方法
6
使用Connection和Recordset的Close方法 和 使用 的 方法
通过使用Connection和Recordset的Close方法,可以释放记录集,关闭和 和 方法, 通过使用 的 方法 可以释放记录集, 数据源的连接。 数据源的连接。 Set Connection=nothing Connection.Close 和 Set Recordset=nothing Recordset.Close
查找客户:
FirstName:Daryl Lastname:Halpin Finder.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
BOF Record #1 Record #2 Record #3 EOF
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 10 对象的定位方法
(2) 使用 使用BOF和EOF遍历记录集 和 遍历记录集
通常用于遍历记录集的代码便是把定位方法和BOF、EOF结合起来, 、 结合起来, 通常用于遍历记录集的代码便是把定位方法和 结合起来 通常代码是一个循环,如下: 通常代码是一个循环,如下:
搜索和查询不同。查询返回的是一个记录集。搜索在记录集的全部记录 中查找满足你说明的条件的单个记录。
针对ADO的记录集,搜索数据使用Recordset的Find方法。
例如,假定你有一个由顾客组成的记录集,并且你对查找姓Smith的第 一个顾客感兴趣,则可以使用以下的代码: rs.Find "[LastName]=’Smith’" 特别要记住的是,与SQL SELECT查询不同,搜索不会产生一个记录集。 当Find方法搜索 Recordset 中满足指定条件的记录,如果条件符合,则 记录集位置设置在找到的记录上,否则位置将设置在记录集的末尾。
Do Until EOF ’从字段 从字段Field中读取数据 从字段 中读取数据 rs.MoveNext Loop
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 11 对象的定位方法
(3) 使用 使用BOF和EOF来确定一个记录集是否为空 和 来确定一个记录集是否为空
使用VB开发 使用 开发Access应用程序 开发 应用程序
1
1. 三步曲开端 2. 用Field对象操作字段 对象操作字段 3. 结合 结合Recordset对象使用定位方法 对象使用定位方法 4. 搜索记录集和表中的数据 5. 使用 使用Bookmark属性记录在 属性记录在Recordset中 属性记录在 中 的位置
即使记录集中没有—个记录,BOF和EOF属性也是可用的。事实上,判 断记录是否为空的最好方法就是检验BOF和EOF的值,如果EOF和 BOF都为True,记录集中便没有记录。
BOF
(No records returned)
EOF
02.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
1) 2) 3)
执行记录集的AddNew方法,这将在记录集的末尾添加一个新的空 白记录。 使用通常向数据库字段赋值的语句为新记录赋值。 用记录集的Update方法把记录写到数据库中。
DataEntr.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
搜索记录集中的数据 15
搜索记录集和表中的数据
rs = nothing Cn.Close
使用VB开发 使用 开发Access应用程序 开发 应用程序
Field对象 对象
7
可以靠检查Field对象的 对象的Value属性来获得字段的值 可以靠检查 对象的 属性来获得字段的值
(因为Field对象的缺省属性是 因为 对象的缺省属性是Value属性,你只要引用Field对象即可,不需要明 属性,你只要引用 对象即可, 对象的缺省属性是 属性 对象即可 显的引用Value属性) 属性) 显的引用 属性
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 对象的定位方法
9
(2) 使用 使用BOF和EOF遍历记录集 和 遍历记录集
Recordset对象还提供了两个属性用于告知你此时是否到了记录集的开 始处或末尾处; EOF(End of File)属性为True时,表示你已移到了记录集的最 后一个元素后面。 BOF(Beginning of File)属性为True时,表示你已移到了记录 集的第一个元素之前。
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 对象的定位方法
8
(1)
Recordset对象的定位方法: 对象的定位方法: 对象的定位方法
MoveFirst方法用于转到记录集的第一行。 MoveNext方法用于转到记录集的下一行。 MovePrevious方法用于转到记录集的上一行。 MoveLast方法用于转到记录集的最后一行。 Move方法用于按说明的个数移动记录。 。
cn.Open " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\bookdb.mdb " (OLE DB)
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象 对象
5
3.使用 使用Recoedset对象返回需要操作的记录集 临时表 对象返回需要操作的记录集(临时表 使用 对象返回需要操作的记录集 临时表)
04.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 13 对象的定位方法
(6) 改变记录的值
为了使用ADO Recordset对象更新已有的记录,可以遵循如下步骤: 1) 2) 3) 打开一个记录集。 给该Recordset对象中的字段分配值 通过执行该Recodset对象的Update方法以保存该记录。 rs.Fields ("LastName") = "Smith" 或者,因为Fields是Recordset对象的缺省集合,在向字段赋值时 可以省去对Fields集合的显式引用。 rs!LastName = "Smith" 4) 用记录集的update方法把记录保存到数据库。
通过Recordset对象的 对象的Open方法返回记录集(建立临时表); 方法返回记录集( 通过 对象的 方法返回记录集 建立临时表); rs.Open mysql, cn 或 rs.Open mysql, cn, adOpenStatic, adLockOptimistic, adCmdTable (分别设定: CursorType、 LockType和Options参数) 分别设定:
使用VB开发 使用 开发Access应用程序 开发 应用程序
引用ADO类库 类库 引用
3
1.中可引用 中可引用ADO类库 中可引用 类库
Microsoft ActiveX Data Objects 2.0 Library Microsoft ActiveX Data Objects 2.1 Library Microsoft ActiveX Data Objects 2.5 Library Microsoft ActiveX Data Objects 2.6 Library
定义1个 对象; 定义 个Recordset对象 对象 Dim rs As New ADODB.Recordset 定义检索语句 可以是: 可以是: 或 SQL查询语句:mysql = "select top 1 * from book" 查询语句: 查询语句 直接是表名: mysql = “book" 直接是表名:
菜单: 工程]→[引用…] 菜单:[工程]→[引用…] ]→[引用
使用VB开发 使用 开发Access应用程序 开发 应用程序
Connection对象 对象
4
2.使用 使用Connection对象连接可用的数据源 使用 对象连接可用的数据源
定义1个 对象; 定义 个Connection对象 对象 Dim cn As New ADODB.Connection 设置Connection对象的 对象的CursorLocation属性为“位于客户端的游标”(adUseClient); 属性为“ 设置 对象的 属性为 位于客户端的游标” ; cn.CursorLocation = adUseClient 定义连接字符串 " provider=MSDASQL;dsn=jet_bookdb“(ODBC)
使用VB开发 使用 开发Access应用程序 开发 应用程序
Recordset对象的定位方法 14 对象的定位方法
(7) 用AddNew 和Update方法创建新记录 方法创建新记录
使用记录集的AddNew 和Update方法,可以在任何可更新的Rocordset 对象中创建新的记录,在记录集中创建新记录的过程分为三步:
Recordset对象的定位方法 12 对象的定位方法
(4) 使用 使用RecordCount属性来确定记录集中记录的条数 属性来确定记录集中记录的条数
可以用RecordCount属性来找出在一个 属性来找出在一个Recordset对象中一共有多少 可以用 属性来找出在一个 对象中一共有多少 条记录。 条记录。
各种语法形式 : rs.Fields("LastName") rs!LastName rs![LastName]
集合中, 字段: 在Fields集合中,也可以用索引来标识 集合中 也可以用索引来标识Field字段: 字段 rstEmployees.Fields(0)
可以使用索引循环遍历整个集合,在每一轮的循环中将索引的值加一。 可以使用索引循环遍历整个集合 , 在每一轮的循环中将索引的值加一 。 集合中 的对象编号是从0开始的 因此第一个Field的编号为 , 第二个为 , 依此类推 。 开始的, 的编号为0,第二个为1,依此类推。 的对象编号是从 开始的 , 因此第一个 的编号为 字段的顺序是由基本表决定的。 字段的顺序是由基本表决定的 。 通常按照打开记录集时取得的顺序对字段进行 编号。 编号。 01.vbx
使用VB开发 使用 开发Access应用程序 开发 应用程序
2
开发一个集于ADO技术的 数据库应用程序的 技术的VB数据库应用程序的 开发一个集于 技术的
三步曲开端
1. 引用ADO类库 类库 引用 2. 利用 利用ADO的Connection对象连接可用的数据源 的 对象连接可用的数据源 3. 利用ADO的Recordset对象返回需要操作的记录 利用 的 对象返回需要操作的记录 集
03.vbx
(5) 当前记录在记录集中的位置
有的时候需要确定当前记录在记录集中的位置,并将当前记录位置指 有的时候需要确定当前记录在记录集中的位置, 示给用户。例如, 示给用户。例如,可以用拨号盘或仪表盘等类型的控件显示当前的记 录位置。以下属性可以指示当前的记录位置: 属性。 录位置。以下属性可以指示当前的记录位置:AbsolutePosition属性。 属性 AbsolutePosition属性的值为当前记录相对于 的位置。然而,不要误 属性的值为当前记录相对于0的位置 然而, 属性的值为当前记录相对于 的位置。 以为它就是记录号:在当前记录处于不定状态时,AbsolutePosition 以为它就是记录号:在当前记录处于不定状态时, 的值为一1。另外,在访问记录集时, 的值为一 。另外,在访问记录集时,不能保证记录每次都以同样的顺 序出现。 序出现。