データの編集
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
このセクションでは、次のトピックを扱います。