次の方法で共有


データの編集

ADO を使用してデータ ソースに接続する方法、コマンドを実行する方法、Recordset オブジェクトで結果を取得する方法、Recordset内を移動する方法について説明しました。 このセクションでは、次の基本的な ADO 操作であるデータの編集について説明します。

このセクションでは、データの調査で紹介したサンプル Recordset を引き続き使用します。1 つの重要な変更があります。 次のコードを使用して、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  

コードへの重要な変更は、次の例に示されているように、GetNewConnection 関数内で Connection オブジェクトの CursorLocation プロパティを adUseClient に設定して、クライアントカーソルの使用を示すことです。 クライアント側カーソルとサーバー側カーソルの違いの詳細については、「カーソルとロックについて」を参照してください。

CursorLocation プロパティの adUseClient 設定は、カーソルの場所をデータ ソース (この場合は SQL Server) からクライアント コード (デスクトップ ワークステーション) の場所に移動します。 この設定により、カーソルを作成および管理するために、ADO がクライアント上で OLE DB 用のクライアント カーソル エンジンを呼び出すように強制されます。

また、Open メソッドの LockType パラメーターが adLockBatchOptimistic に変更されていることにも気付いたかもしれません。 これにより、カーソルがバッチ モードで開きます。 (プロバイダーは、UpdateBatch メソッドを呼び出した場合にのみ、複数の変更をキャッシュし、基になるデータ ソースに書き込みます)。UpdateBatch メソッドが呼び出されるまで、Recordset に加えられた変更はデータベースで更新されません。

最後に、このセクションのコードでは、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  

このセクションには、次のトピックが含まれています。