Поделиться через


Изменение данных

Мы объяснили, как использовать 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  

Этот раздел содержит следующие подразделы.