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