|
原文: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.添加、 编辑,或在窗体中删除记录。
|
|