Изменение данных
Мы объяснили, как использовать ADO для подключения к источнику данных, выполнения команды, получения результатов в объекте Recordset и перемещения по объекту Recordset. В этом разделе основное внимание уделяется следующей основной операции ADO: редактированию данных.
В этом разделе по-прежнему используется образец набора записей , представленный в разделе Проверка данных, с одним важным изменением. Для открытия набора записей используется следующий код:
'BeginEditIntro
Dim strSQL As String
Dim objRs1 As ADODB.Recordset
strSQL = "SELECT * FROM Shippers"
Set objRs1 = New ADODB.Recordset
objRs1.Open strSQL, GetNewConnection, adOpenStatic, _
adLockBatchOptimistic, adCmdText
' Disconnect the Recordset from the Connection object.
Set objRs1.ActiveConnection = Nothing
'EndEditIntro
Важное изменение кода включает задание свойства CursorLocation объекта Connectionравным adUseClient в функции GetNewConnection (как показано в следующем примере), которая указывает на использование клиентского курсора. Дополнительные сведения о различиях между клиентскими и серверными курсорами см. в разделе Общие сведения о курсорах и блокировках.
Параметр adUseClient свойства CursorLocation перемещает расположение курсора из источника данных (в данном случае SQL Server) в расположение клиентского кода (настольной рабочей станции). Этот параметр заставляет ADO вызывать клиентский обработчик курсоров для OLE DB на клиенте, чтобы создать курсор и управлять им.
Вы также могли заметить, что параметр LockType метода Open изменился на adLockBatchOptimistic. При этом курсор откроется в пакетном режиме. (Поставщик кэширует несколько изменений и записывает их в базовый источник данных только при вызове метода UpdateBatch .) Изменения, внесенные в набор записей , не будут обновляться в базе данных до вызова метода UpdateBatch .
Наконец, код в этом разделе использует измененную версию функции GetNewConnection. Эта версия функции теперь возвращает курсор на стороне клиента. Функция выглядит следующим образом:
'BeginNewConnection
Public Function GetNewConnection() As ADODB.Connection
On Error GoTo ErrHandler:
Dim objConn As New ADODB.Connection
Dim strConnStr As String
strConnStr = "Provider='SQLOLEDB';Initial Catalog='Northwind';" & _
"Data Source='MySqlServer';Integrated Security='SSPI';"
objConn.ConnectionString = strConnStr
objConn.CursorLocation = adUseClient
objConn.Open
Set GetNewConnection = objConn
Exit Function
ErrHandler:
Set objConn = Nothing
Set GetNewConnection = Nothing
If Err <> 0 Then
MsgBox Err.Source & "-->" & Err.Description, , "Error"
End If
End Function
'EndNewConnection
Этот раздел содержит следующие подразделы.