次の方法で共有


データの編集

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 関数 (次の例をご覧ください) の adUseClient に等しい Connection オブジェクトの CursorLocation プロパティを設定することが含まれています。このプロパティは、クライアント カーソルの使用を指示するものです。 クライアント側カーソルとサーバー側カーソルの違いの詳細については、「カーソルとロックについて」を参照してください。

CursorLocation プロパティの adUseClient 設定によってカーソルの位置がデータ ソース (この場合は SQL Server) からクライアント コード (デスクトップ ワークステーション) の場所に移動します。 この設定により、カーソルを作成し、管理する目的で、クライアント上で Client Cursor Engine for OLE DB を呼び出すように ADO に強制します。

Open メソッドの LockType パラメーターが adLockBatchOptimistic に変更されたことにも気付かれたかもしれません。 これにより、カーソルがバッチ モードで開きます。 (プロバイダーは、UpdateBatch メソッドを呼び出したときにのみ、複数の変更をキャッシュし、基になるデータ ソースに書き込みます)。Recordset に対して行われた変更は、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  

このセクションでは、次のトピックを扱います。