如何将 Microsoft Access 窗体绑定到 ADO 记录集

文章翻译 文章翻译
文章编号: 281998 - 查看本文应用于的产品
高级: 要求专家级编程、 互操作性和多用户技能。

本文适用到 Microsoft Access 数据库 (.mdb) 和Microsoft Access 项目 (.adp)。

展开全部 | 关闭全部

本文内容

概要

本文介绍了什么是需要创建绑定到 ActiveX 数据对象 (ADO)记录集对象的可更新窗体。

更多信息

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

在 Microsoft Access 2000 中,引入该记录集属性,它允许您可以将窗体绑定到 ADO记录集或 DAO 对象。但是,在 Access 2000 中的窗体支持仅在于如果 ADO 连接通过使用 MSDataShape 和 SQL Server OLEDB 打开提供程序。 有关此附加信息限制在 Access 2000 中,单击下面的文章编号,以查看文章在 Microsoft 知识库:
227053 ACC2000: 窗体基于 ADO 记录集是只读的
在 Microsoft Access 2002 或更高版本,您可以创建可更新的窗体绑定到 ADO 记录集,使用其他 OLEDB提供程序。窗体必须满足几个常规窗体当它被绑定到 ADO 记录集时,可更新。这些一般要求包括:
  1. 基础 ADO 记录集必须可更新。
  2. 记录集必须包含一个或多个字段唯一索引,例如,表的主键。
更新的其他要求因不同提供程序。本文介绍当您使用其他的要求是Microsoft SQL Server、 Jet 和 ODBC 中,Oracle OLEDB 提供程序中。

Microsoft SQL Server 的要求

有两项主要要求支持更新时将窗体绑定到 ADO 记录集是使用 Microsoft SQL Server数据:
  • ADO 记录集的连接必须使用 Microsoft作为其服务提供商访问 10.0 OLEDB 提供程序。
  • ADO 记录集的连接必须使用 Microsoft SQL服务器 OLEDB 提供程序作为其数据提供程序。
注:Microsoft Access 10.0 OLEDB 提供程序是一种 OLEDB 服务编写专门为在 Microsoft Access 中使用的提供程序。它不是设计用于其他 Microsoft Access 应用程序,并且它不是支持其他应用程序中。

当您创建 ADO 记录集在 Microsoft Access 中,您可以的选择哪些将 ADO 连接由记录集。ADO 代码可以共享 ADO 连接的Microsoft Access 将使用 SQL Server 数据库中当前打开的Access 项目 (ADP) 文件 ;您也可以以编程方式创建新的 ADO连接到不同的 SQL Server 数据库。

共享 Microsoft Access 使用 ADO 连接

如果您正在使用连接到 Access 项目文件 (.adp)Microsoft SQL Server 数据库,这一点对于 ADO 代码共享使用 Microsoft Access 的 ADO 连接。公开此连接CurrentProject.AccessConnection属性中。

下面的示例演示如何将窗体绑定到 ADO 记录集,基于 SQL Server 数据共享Microsoft Access 使用 ADO 连接。
  1. 打开示例项目 NorthwindCS.adp。
  2. 在设计视图中打开客户窗体。
  3. 清除要取消绑定窗体的窗体的记录源属性。
  4. 为以下事件过程设置窗体的OnOpen属性:
    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. 添加、 编辑或删除窗体中的记录。
请注意将窗体绑定到一个可更新的记录集的基于 SQL Server 的数据。

打开一个单独的 ADO 连接

在某些时候,您可能需要打开和管理您自己的 ADO连接到 SQL Server。例如,您将不得不使用这种方法,如果您 Access 数据库 (.mdb) 或 Access 项目中编写代码文件 (.adp) 的已连接到不同的 SQL Server 数据库比您应用程序。请注意当您使用此方法时,Microsoft 建议关闭您打开时不再需要的 ADO 连接。对于示例中,您可能希望关闭 ADO 连接中的卸载事件表单。

下面的示例演示如何打开自己 ADOMicrosoft SQL Server 数据库,并将窗体绑定到它的连接:
  1. 打开示例数据库 Northwind.mdb。
  2. 在设计视图中打开客户窗体。
  3. 清除要取消绑定窗体的窗体的记录源属性。
  4. 为以下事件过程设置窗体的OnOpen属性:
    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. 将下面的代码添加到窗体的 UnLoad 事件中:
    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. 添加、 编辑或删除窗体中的记录。
请注意将窗体绑定到一个可更新的记录集的基于 SQL Server 的数据。

Microsoft Jet 的要求

尽管可以将窗体绑定到 ADO 记录集在使用 Jet 数据库中的数据,Microsoft 建议您使用 DAO相反。DAO 器经过高度优化的 Jet 和通常比 ADO 更快地执行当使用 Jet 数据库。

当您将窗体绑定到 ADO使用 Microsoft Jet 数据记录集有两种方案:
  • 记录集的ActiveConnection属性必须使用 Microsoft Access 10.0 OLEDB 服务提供程序,以及 Microsoft Jet 4.0 OLEDB 数据提供程序记录集必须是服务器端游标。

    -或者-
  • 仅 Microsoft Jet 4.0 OLEDB 数据提供程序记录集必须在客户端游标,则必须使用记录集的ActiveConnection属性。
类似于上文的"Microsoft SQL Server"部分文章中,可以的选择哪些 ADO 可以由连接当使用 Jet 数据库的记录集。ADO 代码可以共享 ADO 连接该 Microsoft Access 使用 Jet 数据库文件 (.mdb) 当前已打开也可以以编程方式创建新的 ADO 连接到单独的 Jet数据库文件。

共享 Microsoft Access 使用 ADO 连接

如果您正在编写相同的 Microsoft Access 数据库中的代码(.mdb),其中包含需要的数据记录集,则可能您共享 Microsoft Access 将使用 ADO 连接的 ADO 代码。这连接属性公开的CurrentProject.AccessConnection 。下面的示例演示如何将窗体绑定到 ADO 记录集共享 ADO 连接对 Jet 数据库中的当前正在使用 Microsoft Access:
  1. 打开示例数据库 Northwind.mdb。
  2. 在设计视图中打开客户窗体。
  3. 清除要取消绑定窗体的窗体的记录源属性。
  4. 为以下事件过程设置窗体的OnOpen属性:
    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 连接

在某些时候,您可能需要打开和管理您自己的 ADOJet 数据库的连接。例如,您将不得不使用这种方法如果您正在编写独立于该数据库的数据库中的代码包含您需要访问的数据。请注意,当您使用此关闭 ADO 连接的方法,Microsoft 建议您当不再需要打开。例如,您可能希望关闭 ADO在窗体的 UnLoad 事件中的连接。

下面的示例阐释如何打开自己的 ADO 连接到 Microsoft Jet 数据库并将窗体绑定到它:
  1. 创建新的空白数据库。
  2. 导入示例数据库中的客户窗体Northwind.mdb。
  3. 在设计视图中打开客户窗体。
  4. 清除要取消绑定窗体的窗体的记录源属性。
  5. 为以下事件过程设置窗体的OnOpen属性:
    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. 将下面的代码添加到窗体的 UnLoad 事件中:
    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. 添加、 编辑或删除窗体中的记录。
请注意将窗体绑定到一个可更新的记录集的使用 Jet 数据。

适用于 ODBC 的要求

当您将窗体绑定到 ADO 记录集正在使用中的数据ODBC 数据库,有两项主要要求:
  • 必须使用由该记录集的 ADO 连接ODBC Microsoft OLEDB 提供程序。
  • ADO 记录集必须在客户端游标。
下面的示例演示如何打开 ADO连接到 ODBC 数据库,并将窗体绑定到它。

注:这些步骤假定 ODBC 数据库包含一个名为表在结构上与客户表中的示例相同的客户数据库 Northwind.mdb。它还假定您已经创建了名为 ODBC DSN使用 ODBC 驱动程序,您需要连接到后端的 MyDSN数据库。
  1. 打开示例数据库 Northwind.mdb。
  2. 在设计视图中打开客户窗体。
  3. 清除要取消绑定窗体的窗体的记录源属性。
  4. 为以下事件过程设置窗体的OnOpen属性:
    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=sa;PWD=;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. 将下面的代码添加到窗体的 UnLoad 事件中:
    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 的要求

当您将窗体绑定到 ADO 记录集正在使用中的数据Oracle 数据库中,有两项主要要求:
  • 必须使用由该记录集的 ADO 连接Oracle Microsoft OLEDB 提供程序。
  • ADO 记录集必须在客户端游标。
下面的示例演示如何打开 ADO连接到 Oracle 数据库,并将窗体绑定到它。

注:这些步骤假定 Oracle 数据库包含一个表名为结构中的客户表中完全相同的客户示例数据库 Northwind.mdb。
  1. 打开示例数据库 Northwind.mdb。
  2. 在设计视图中打开客户窗体。
  3. 清除要取消绑定窗体的窗体的记录源属性。
  4. 为以下事件过程设置窗体的OnOpen属性:
    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("Password").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. 将下面的代码添加到窗体的 UnLoad 事件中:
    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 数据。

参考

有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
281784之间的区别连接和访问连接属性
将第三方产品本文中讨论的与无关的厂商Microsoft。Microsoft 不做任何暗示的担保或否则,关于性能或可靠性,这些产品。

属性

文章编号: 281998 - 最后修改: 2012年10月7日 - 修订: 6.0
这篇文章中的信息适用于:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 标准版
关键字:?
kbado kbdatabinding kbdatabase kbdesign kbprogramming kbhowto kbmt KB281998 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 281998
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com