第 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
この章では、次のトピックについて説明します。