设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 8701|回复: 8
打印 上一主题 下一主题

[窗体] 【分享】如何将 Microsoft Access 窗体绑定到 ADO 记录集

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-30 10:45:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原文:http://support.microsoft.com/kb/281998/zh-cn

要将 Microsoft Access 窗体绑定到记录集,您必须设置为有效的数据访问对象 (DAO) 或 ADO记录集对象的窗体的记录集属性。

Recordset 属性在 Microsoft Access 2000 中, 引入的它使您可以将窗体绑定到 DAO 或 ADO 记录集 对象。但是,在 Access 2000 中的窗体支持更新,仅当 ADO 连接通过使用 MSDataShape 和 SQL Server OLEDB 提供程序打开。 有关在 Access 2000 中此限制的其他信息,请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
227053

ACC2000: 窗体基于 ADO 记录集是只读的 在 Microsoft Access 2002 或更高版本中,您可以创建一个可更新的窗体绑定到 ADO 记录集使用其他 OLEDB 提供程序。窗体必须满足几个常规要求时它绑定到 ADO 记录集是可更新窗体。这些常规的要求如下所示: 1.基本的 ADO 记录集必须可更新。
2.记录集必须包含一个或多个唯一索引的如表的主键字段。
在 Microsoft Access 2002 或更高版本,您可以创建可更新的窗体绑定到 ADO 记录集,使用其他 OLEDB 提供商。窗体必须满足以下几个常规要求它绑定到 ADO 记录集时可以更新该窗体。这些常规的要求如下:
Microsoft SQL Server 的要求
更新的其他要求因不同的提供程序。本文介绍当您使用的 Microsoft SQL Server、 Jet、 ODBC 和 Oracle OLEDB 提供程序是什么其他要求。
•ADO 记录集的连接必须使用 Microsoft Access 10.0 OLEDB 提供程序作为其服务提供商。
•ADO 记录集的连接必须使用 Microsoft SQL Server OLEDB 提供程序作为其数据提供程序。
注:Microsoft Access 10.0 OLEDB 提供程序是专为在 Microsoft Access 中使用已编写一个 OLEDB 服务提供程序。它不设计在 Microsoft Access 之外的应用程序中使用,并在其他应用程序中不受支持。

您在创建 Microsoft Access 中的 ADO 记录集时您可以的选择向其作为 ADO 连接将使用记录集。ADO 代码可以共享 Microsoft Access 在为当前打开 SQL Server 数据库在 Access 项目 (ADP) 文件 ; 使用 ADO 连接或可以通过编程方式创建一个新的 ADO 连接到不同的 SQL Server 数据库。
共享使用 Microsoft Access 的 ADO 连接
当您创建 ADO 记录集,Microsoft Access 中的时,可以的选择哪些 ADO 连接将使用该记录集。ADO 代码可以共享 Microsoft Access 使用 Access 项目 (ADP) 文件 ; 中当前打开的 SQL Server 数据库的 ADO 连接或者,您可以以编程方式创建新的 ADO 连接到不同的 SQL Server 数据库。

下面的示例演示如何将窗体绑定到 ADO 记录集基于 SQL Server 数据与 Microsoft Access 共享 ADO 连接。 1.打开示例项目 NorthwindCS.adp。
2.在设计视图中打开客户窗体。
3.清除窗体,以取消绑定窗体的 记录源 属性。
4.将窗体的 打开 属性设置为下列事件过程:

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
         
   'Use the ADO connection that Access uses
   Set cn = CurrentProject.AccessConnection

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .Open
   End With
   
   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs

   Set rs = Nothing
   Set cn = Nothing
End Sub
                                       
5.保存并关闭该窗体。
6.在窗体视图中打开客户窗体。
7.添加、 编辑,或在窗体中删除记录。
下面的示例演示如何将窗体绑定到 ADO 记录集基于与 Microsoft Access 共享一个 ADO 连接的 SQL Server 数据。
打开一个单独的 ADO 连接
请注意将窗体绑定到一个基于 SQL Server 的数据的可更新记录集。

某些时候,您可能需要打开和管理您自己在 ADO 连接到 SQL Server。例如,您将不得不使用这种方法,如果您 Access 项目文件 (.adp) 连接到您的应用程序比另一个 SQL Server 数据库的 Access 数据库 (.mdb) 中编写代码。请注意当使用这种方法时,Microsoft 建议您关闭您打开时不再需要的 ADO 连接。例如,您可能想要关闭窗体的 UnLoad 事件中 ADO 连接。1.打开示例数据库 Northwind.mdb。
2.在设计视图中打开客户窗体。
3.清除窗体,以取消绑定窗体的 记录源 属性。
4.Set the OnOpen property of the form to the following event procedure:

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
         
   'Create a new ADO Connection object
   Set cn = New ADODB.Connection

   'Use the Access 10 and SQL Server OLEDB providers to
   'open the Connection
   'You will need to replace MySQLServer with the name
   'of a valid SQL Server
   With cn
      .Provider = "Microsoft.Access.OLEDB.10.0"
      .Properties("Data Provider").Value = "SQLOLEDB"
      .Properties("Data Source").Value = "MySQLServer"
      .Properties("User ID").Value = "sa"
      .Properties("Password").Value = ""
      .Properties("Initial Catalog").Value = "NorthwindCS"
      .Open
   End With

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .Open
   End With
   
   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs
   Set rs = Nothing
   Set cn = Nothing
End Sub
                                       
5.将下面的代码添加到窗体的卸载事件:

Private Sub Form_Unload(Cancel As Integer)
   'Close the ADO connection we opened
   Dim cn As ADODB.Connection
   Set cn = Me.Recordset.ActiveConnection
   cn.Close
   Set cn = Nothing
End Sub
                                       
6.将该的表单保存,然后将其关闭。
7.在窗体视图中打开客户窗体。
8.添加、 编辑,或在窗体中删除记录。
下面的示例演示如何打开自己 ADO 连接到 Microsoft SQL Server 数据库以及如何将窗体绑定到它:
Microsoft Jet 的要求
请注意将窗体绑定到一个基于 SQL Server 的数据的可更新记录集。

即使就可以将窗体绑定到 ADO 记录集,使用 Jet 数据库中的数据,Microsoft 建议您改为使用 DAO。DAO 高度优化的 Jet 和通常比 ADO 与 Jet 数据库一起使用时更快地执行。•也可以在 Microsoft Jet 4.0 OLEDB 数据提供程序 和 记录集必须是服务器端游标记录集的 ActiveConnection 属性必须使用 Microsoft Access 10.0 OLEDB 的服务提供商。

-或者-
•仅 Microsoft Jet 4.0 OLEDB 数据提供程序 和 记录集必须在客户端游标,必须使用记录集的 ActiveConnection 属性。
当您将窗体绑定到 ADO 记录集使用 Microsoft Jet 数据时,有两种替代方法:
共享使用 Microsoft Access 的 ADO 连接
类似于本文内上文中的"Microsoft SQL Server"部分,您可以的选择哪些使用 Jet 数据库时将通过记录集使用 ADO 连接。ADO 代码可以共享 Microsoft Access 将使用 Jet 数据库文件 (.mdb) 当前打开的 ADO 连接,或者您可以以编程方式创建新的 ADO 连接到单独的 Jet 数据库文件。1.打开示例数据库 Northwind.mdb。
2.在设计视图中打开客户窗体。
3.清除窗体,以取消绑定窗体的 记录源 属性。
4.将窗体的 打开 属性设置为下列事件过程:

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
               
   Set cn = CurrentProject.AccessConnection

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .CursorLocation = adUseServer
      .Open
   End With
   
   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs
   Set rs = Nothing
   Set cn = Nothing
End Sub
                                       
5.将该的表单保存,然后将其关闭。
6.在窗体视图中打开客户窗体。
7.添加、 编辑,或在窗体中删除记录。
请注意该窗体绑定到一个可更新的记录集,使用 Jet 数据。
打开一个单独的 ADO 连接
请注意将窗体绑定到一个正在使用 Jet 数据的可更新记录集。

某些时候,您可能需要打开和管理您自己到 Jet 数据库的 ADO 连接。例如,您将不得不使用这种方法,如果您正在编写您的代码中包含您需要访问的数据的数据库不同的数据库。请注意当使用这种方法时,Microsoft 建议您关闭您打开时不再需要的 ADO 连接。例如,您可能想要关闭窗体的 UnLoad 事件中 ADO 连接。1.创建新的空白数据库。
2.该示例从导入客户窗体数据库 Northwind.mdb。
3.在设计视图中打开客户窗体。
4.清除窗体,以取消绑定窗体的 记录源 属性。
5.将窗体的 打开 属性设置为下列事件过程:

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
         
   'Create a new ADO Connection object
   Set cn = New ADODB.Connection

   With cn
      .Provider = "Microsoft.Access.OLEDB.10.0"
      .Properties("Data Provider").Value = "Microsoft.Jet.OLEDB.4.0"
      .Properties("Data Source").Value = _
          "C:\Program Files\Microsoft Office\Office10" & _
          "\Samples\Northwind.mdb"
      .Open
   End With

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .Open
   End With
   
   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs
   Set rs = Nothing
   Set cn = Nothing
End Sub
                                       
6.将下面的代码添加到窗体的卸载事件:

Private Sub Form_Unload(Cancel As Integer)
   'Close the ADO connection we opened
   Dim cn As ADODB.Connection
   Set cn = Me.Recordset.ActiveConnection
   cn.Close
   Set cn = Nothing
End Sub
                                       
7.将该的表单保存,然后将其关闭。
8.在窗体视图中打开客户窗体。
9.添加、 编辑,或在窗体中删除记录。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2012-8-30 10:45:39 | 只看该作者
下面的示例演示如何打开自己 ADO 连接到 Microsoft Jet 数据库以及如何将窗体绑定到它:
ODBC 的要求
请注意将窗体绑定到一个正在使用 Jet 数据的可更新记录集。•使用记录集的 ADO 连接必须使用 ODBC Microsoft OLEDB 提供程序。
•ADO 记录集必须在客户端游标。
当您将窗体绑定到 ADO 记录集是使用 ODBC 数据库中的数据时,有两项主要要求:

注:这些步骤假定该 ODBC 数据库中包含名为客户客户表,在示例数据库 Northwind.mdb 结构相同的表。它还假定您已经创建了名为 MyDSN 使用需要连接到后端数据库的 ODBC 驱动程序的一个 ODBC DSN。 1.打开示例数据库 Northwind.mdb。
2.在设计视图中打开客户窗体。
3.清除窗体,以取消绑定窗体的 记录源 属性。
4.将窗体的 打开 属性设置为下列事件过程:

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
   Dim strConnection As String

   strConnection = "ODBC;DSN=MyDSN;UID=saWD=;DATABASE=Northwind"
   'Create a new ADO Connection object
   Set cn = New ADODB.Connection

   With cn
      .Provider = "MSDASQL"
      .Properties("Data Source").Value = strConnection
      .Open
   End With

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .CursorLocation = adUseClient
      .Open
   End With
   
   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs
   Set rs = Nothing
   Set cn = Nothing
End Sub
                                       
5.将下面的代码添加到窗体的卸载事件:

Private Sub Form_Unload(Cancel As Integer)
   'Close the ADO connection we opened
   Dim cn As ADODB.Connection
   Set cn = Me.Recordset.ActiveConnection
   cn.Close
   Set cn = Nothing
End Sub
                                       
6.将该的表单保存,然后将其关闭。
7.在窗体视图中打开客户窗体。
8.添加、 编辑,或在窗体中删除记录。
请注意该窗体绑定到一个可更新的记录集基于 ODBC 数据的。
针对 Oracle 的要求
请注意将窗体绑定到一个基于 ODBC 数据的可更新记录集。•使用记录集的 ADO 连接必须使用 Oracle Microsoft OLEDB 提供程序。
•ADO 记录集必须在客户端游标。
当您将窗体绑定到 ADO 记录集是使用 Oracle 数据库中的数据时,有两项主要要求:

注:这些步骤假定 Oracle 数据库中包含名为客户客户表,在示例数据库 Northwind.mdb 结构相同的表。 1.打开示例数据库 Northwind.mdb。
2.在设计视图中打开客户窗体。
3.清除窗体,以取消绑定窗体的 记录源 属性。
4.将窗体的 打开 属性设置为下列事件过程:

Private Sub Form_Open(Cancel As Integer)
   Dim cn As ADODB.Connection
   Dim rs As ADODB.Recordset
         
   'Create a new ADO Connection object
   Set cn = New ADODB.Connection

   With cn
      .Provider = "MSDAORA"
      .Properties("Data Source").Value = "MyOracleServer"
      .Properties("User ID").Value = "username"
      .Properties("assword").Value = "password"         
      .Open
   End With

   'Create an instance of the ADO Recordset class, and
   'set its properties
   Set rs = New ADODB.Recordset
   With rs
      Set .ActiveConnection = cn
      .Source = "SELECT * FROM Customers"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .CursorLocation = adUseClient

      .Open
   End With
  
   'Set the form's Recordset property to the ADO recordset
   Set Me.Recordset = rs
   Set rs = Nothing
   Set cn = Nothing
End Sub
                                       
5.将下面的代码添加到窗体的卸载事件:

Private Sub Form_Unload(Cancel As Integer)
   'Close the ADO connection we opened
   Dim cn As ADODB.Connection
   Set cn = Me.Recordset.ActiveConnection
   cn.Close
   Set cn = Nothing
End Sub
                                       
6.将该的表单保存,然后将其关闭。
7.在窗体视图中打开客户窗体。
8.添加、 编辑,或在窗体中删除记录。
请注意该窗体绑定到一个可更新的记录集所基于的 Oracle 数据。

3#
发表于 2012-8-30 11:19:05 | 只看该作者
{:soso_e142:}
4#
发表于 2012-8-30 18:35:34 | 只看该作者
Andy应该做个实例传上来的,{:soso_e113:}新手怕是看不懂,又或者没有那么大的耐性去看代码……
5#
发表于 2012-9-1 09:26:22 | 只看该作者
roych 发表于 2012-8-30 18:35
Andy应该做个实例传上来的,新手怕是看不懂,又或者没有那么大的耐性去看代码……

万分支持!
6#
发表于 2012-12-11 20:26:41 | 只看该作者
有点头晕
7#
发表于 2013-12-12 16:50:31 | 只看该作者
感谢,感谢,这是一个好帖
8#
发表于 2015-8-4 21:37:27 | 只看该作者
是的,新手看到那一大堆代码,绝决是一个是 超晕的{:soso_e120:}
9#
发表于 2016-1-12 00:35:41 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-25 13:40 , Processed in 0.109293 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表