|
原文:http://support.microsoft.com/kb/281998/zh-cn
要將 Microsoft Access 窗體綁定到記錄集,您必須設置為有效的數(shù)據(jù)訪問對象 (DAO) 或 ADO記錄集對象的窗體的記錄集屬性。
Recordset 屬性在 Microsoft Access 2000 中, 引入的它使您可以將窗體綁定到 DAO 或 ADO 記錄集 對象。但是,在 Access 2000 中的窗體支持更新,僅當 ADO 連接通過使用 MSDataShape 和 SQL Server OLEDB 提供程序打開。 有關在 Access 2000 中此限制的其他信息,請單擊下面文章編號,以查看 Microsoft 知識庫中相應的文章:
227053
ACC2000: 窗體基于 ADO 記錄集是只讀的 在 Microsoft Access 2002 或更高版本中,您可以創(chuàng)建一個可更新的窗體綁定到 ADO 記錄集使用其他 OLEDB 提供程序。窗體必須滿足幾個常規(guī)要求時它綁定到 ADO 記錄集是可更新窗體。這些常規(guī)的要求如下所示: 1.基本的 ADO 記錄集必須可更新。
2.記錄集必須包含一個或多個唯一索引的如表的主鍵字段。
在 Microsoft Access 2002 或更高版本,您可以創(chuàng)建可更新的窗體綁定到 ADO 記錄集,使用其他 OLEDB 提供商。窗體必須滿足以下幾個常規(guī)要求它綁定到 ADO 記錄集時可以更新該窗體。這些常規(guī)的要求如下:
Microsoft SQL Server 的要求
更新的其他要求因不同的提供程序。本文介紹當您使用的 Microsoft SQL Server、 Jet、 ODBC 和 Oracle OLEDB 提供程序是什么其他要求。
•ADO 記錄集的連接必須使用 Microsoft Access 10.0 OLEDB 提供程序作為其服務提供商。
•ADO 記錄集的連接必須使用 Microsoft SQL Server OLEDB 提供程序作為其數(shù)據(jù)提供程序。
注:Microsoft Access 10.0 OLEDB 提供程序是專為在 Microsoft Access 中使用已編寫一個 OLEDB 服務提供程序。它不設計在 Microsoft Access 之外的應用程序中使用,并在其他應用程序中不受支持。
您在創(chuàng)建 Microsoft Access 中的 ADO 記錄集時您可以的選擇向其作為 ADO 連接將使用記錄集。ADO 代碼可以共享 Microsoft Access 在為當前打開 SQL Server 數(shù)據(jù)庫在 Access 項目 (ADP) 文件 ; 使用 ADO 連接或可以通過編程方式創(chuàng)建一個新的 ADO 連接到不同的 SQL Server 數(shù)據(jù)庫。
共享使用 Microsoft Access 的 ADO 連接
當您創(chuàng)建 ADO 記錄集,Microsoft Access 中的時,可以的選擇哪些 ADO 連接將使用該記錄集。ADO 代碼可以共享 Microsoft Access 使用 Access 項目 (ADP) 文件 ; 中當前打開的 SQL Server 數(shù)據(jù)庫的 ADO 連接或者,您可以以編程方式創(chuàng)建新的 ADO 連接到不同的 SQL Server 數(shù)據(jù)庫。
下面的示例演示如何將窗體綁定到 ADO 記錄集基于 SQL Server 數(shù)據(jù)與 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 數(shù)據(jù)。
打開一個單獨的 ADO 連接
請注意將窗體綁定到一個基于 SQL Server 的數(shù)據(jù)的可更新記錄集。
某些時候,您可能需要打開和管理您自己在 ADO 連接到 SQL Server。例如,您將不得不使用這種方法,如果您 Access 項目文件 (.adp) 連接到您的應用程序比另一個 SQL Server 數(shù)據(jù)庫的 Access 數(shù)據(jù)庫 (.mdb) 中編寫代碼。請注意當使用這種方法時,Microsoft 建議您關閉您打開時不再需要的 ADO 連接。例如,您可能想要關閉窗體的 UnLoad 事件中 ADO 連接。1.打開示例數(shù)據(jù)庫 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 數(shù)據(jù)庫以及如何將窗體綁定到它:
Microsoft Jet 的要求
請注意將窗體綁定到一個基于 SQL Server 的數(shù)據(jù)的可更新記錄集。
即使就可以將窗體綁定到 ADO 記錄集,使用 Jet 數(shù)據(jù)庫中的數(shù)據(jù),Microsoft 建議您改為使用 DAO。DAO 高度優(yōu)化的 Jet 和通常比 ADO 與 Jet 數(shù)據(jù)庫一起使用時更快地執(zhí)行。•也可以在 Microsoft Jet 4.0 OLEDB 數(shù)據(jù)提供程序 和 記錄集必須是服務器端游標記錄集的 ActiveConnection 屬性必須使用 Microsoft Access 10.0 OLEDB 的服務提供商。
-或者-
•僅 Microsoft Jet 4.0 OLEDB 數(shù)據(jù)提供程序 和 記錄集必須在客戶端游標,必須使用記錄集的 ActiveConnection 屬性。
當您將窗體綁定到 ADO 記錄集使用 Microsoft Jet 數(shù)據(jù)時,有兩種替代方法:
共享使用 Microsoft Access 的 ADO 連接
類似于本文內上文中的"Microsoft SQL Server"部分,您可以的選擇哪些使用 Jet 數(shù)據(jù)庫時將通過記錄集使用 ADO 連接。ADO 代碼可以共享 Microsoft Access 將使用 Jet 數(shù)據(jù)庫文件 (.mdb) 當前打開的 ADO 連接,或者您可以以編程方式創(chuàng)建新的 ADO 連接到單獨的 Jet 數(shù)據(jù)庫文件。1.打開示例數(shù)據(jù)庫 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 數(shù)據(jù)。
打開一個單獨的 ADO 連接
請注意將窗體綁定到一個正在使用 Jet 數(shù)據(jù)的可更新記錄集。
某些時候,您可能需要打開和管理您自己到 Jet 數(shù)據(jù)庫的 ADO 連接。例如,您將不得不使用這種方法,如果您正在編寫您的代碼中包含您需要訪問的數(shù)據(jù)的數(shù)據(jù)庫不同的數(shù)據(jù)庫。請注意當使用這種方法時,Microsoft 建議您關閉您打開時不再需要的 ADO 連接。例如,您可能想要關閉窗體的 UnLoad 事件中 ADO 連接。1.創(chuàng)建新的空白數(shù)據(jù)庫。
2.該示例從導入客戶窗體數(shù)據(jù)庫 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.添加、 編輯,或在窗體中刪除記錄。
|
|