第 4 章: データの編集

適用先: Access 2013、Office 2013

前の 2 つの章では、ADO を使用して、データ ソースへの接続、コマンドの実行、 Recordset オブジェクトへの結果の取得、および Recordset 内での移動を行う方法を説明しました。 この章では、ADO のもう 1 つの基本的操作であるデータの編集について説明します。

この章でも、3 章で使用したサンプルの 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 と等しく設定することです。 クライアント側カーソルとサーバー側カーソルの違いの詳細については、「 第 8 章: カーソルとロックについて」を参照してください。

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

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

最後に、この章のコードでは、2 章で使用した GetNewConnection 関数を変更したものを使用します。 変更後の関数は、クライアント側カーソルを返すようになっています。 その関数は次のようになります。

 
'BeginNewConnection 
Public Function GetNewConnection() As ADODB.Connection 
 Dim objConn1 As ADODB.Connection 
 Set objConn1 = New ADODB.Connection 
 
 strConnStr = "Provider=SQLOLEDB;Initial Catalog=Northwind;" & _ 
 "Data Source=MySrvr;Integrated Security=SSPI;" 
 
 objConn1.ConnectionString = strConnStr 
 objConn1.CursorLocation = adUseClient 
 objConn1.Open 
 
 Set GetNewConnection = objConn1 
End Function 
'EndNewConnection 

この章では、次のトピックについて説明します。