Save、Open メソッドの例 (VB)

次の 3 つの例では、Save メソッドと Open メソッドを組み合わせて使用する方法を示します。

出張先に、データベースに含まれるテーブルを持っていく必要があるとします。出かける前に Recordset としてデータにアクセスし、持ち出し可能な形式で保存します。出張先では、接続されていないローカルな Recordset としてアクセスします。Recordset に変更を加え、それを再度保存します。最終的に会社に戻ったときに、再度データベースに接続し、出張中に行った変更に関する更新を、データベースに対して行います。

Public Sub Main()
    SaveX1
    SaveX2
    SaveX3
End Sub

最初に、Authors テーブルにアクセスし、保存します。

Public Sub SaveX1()
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset

rst.Open "SELECT au_id, au_lname, au_fname, phone, city FROM Authors", _
         "Provider=SQLOLEDB;Data Source=MySrvr;User Id=sa;" & _
         "Password=;Initial Catalog=pubs;" _
         adOpenDynamic, adLockOptimistic, adCmdText

'For sake of illustration, save the Recordset to a diskette in XML
'format.
rst.Save "a:\Pubs.xml", adPersistXML

rst.Close
End Sub

ここで、出張先に到着しました。接続されていないローカルな Recordset として Authors テーブルにアクセスします。保存したファイル a:\Pubs.xml にアクセスするためには、使用するコンピュータで MSPersist プロバイダが使用可能になっている必要があることに注意してください。

Public Sub SaveX2()
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset

'For sake of illustration, we specify all parameters.
rst.Open "a:\Pubs.xml", "Provider=MSPersist;", , adLockOptimistic, adCmdFile

'Now you have a local, disconnected Recordset. Edit it as you desire.
'(In this example, the change makes no difference).
rst.Find "au_lname = 'Carson'"
If rst.EOF Then
    Debug.Print "Name not found."
    Exit Sub
End If

rst!city = "Berkeley"
rst.Update

'Save changes in ADTG format this time, purely for sake of illustration.
'Note that the previous version is still on the diskette, as a:\Pubs.xml.
rst.Save "a:\Pubs.adtg", adPersistADTG
rst.Close
End Sub

最終的に会社に戻り、保存した変更に関する更新を、データベースに対して行います。

Public Sub SaveX3()
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset

'If there is no ActiveConnection, you can open with defaults.
rst.Open "a:\Pubs.adtg"

'Connect to the database, associate the Recordset with the connection, 
'then update the database table with the changed Recordset.
cnn.Open "Provider=SQLOLEDB;Data Source=MySrvr;User Id=sa;" & _
         "Password=;Initial Catalog=pubs;"
rst.ActiveConnection = cnn
rst.UpdateBatch

rst.Close
cnn.Close
End Sub