Compartilhar via


Editar dados

Explicamos como usar o ADO para se conectar a uma fonte de dados, executar um comando, obter os resultados em um objeto Recordset e navegar dentro do Recordset. Esta seção se concentra na próxima operação fundamental do ADO: edição de dados.

Esta seção continua a usar o Recordset de exemplo apresentado em Examinando dados, com uma alteração importante. O código a seguir é usado para abrir o Recordset:

'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  

A alteração importante no código envolve a definição da propriedade CursorLocation do objeto Connection igual a adUseClient na função GetNewConnection (mostrada no próximo exemplo), que indica o uso de um cursor de cliente. Para saber mais sobre as diferenças entre cursores do lado do cliente e do lado do servidor, confira Noções básicas sobre cursores e bloqueios.

A configuração adUseClient da propriedade CursorLocation move o local do cursor da fonte de dados (o SQL Server, nesse caso) para o local do código do cliente (a estação de trabalho da área de trabalho). Essa configuração força o ADO a invocar o Mecanismo de Cursor de Cliente para OLE DB no cliente a fim de criar e gerenciar o cursor.

Você também deve ter notado que o parâmetro LockType do método Open foi alterado para adLockBatchOptimistic. Isso abre o cursor no modo de lote. (O provedor somente armazena em cache várias alterações e as grava na fonte de dados subjacente quando você chama o método UpdateBatch.) As alterações feitas no Recordset não serão atualizadas no banco de dados até que o método UpdateBatch seja chamado.

Por fim, o código nesta seção usa uma versão modificada da função GetNewConnection. Essa versão da função agora retorna um cursor do lado do cliente. A função tem esta aparência:

'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  

Esta seção contém os seguintes tópicos.