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
このセクションには、次のトピックが含まれています。
既存のレコード を編集する