XML 形式でのレコードの永続化
適用先: Access 2013、Office 2013
ADTG 形式と同様に、XML 形式での Recordset の保存は、Microsoft OLE DB Persistence Provider で実装されます。 このプロバイダーは、保存された XML ファイル、または ADO により生成されたスキーマ情報を含むストリームから前方スクロール型の読み取り専用行セットを生成します。 同様に、ADO Recordset を使用して XML を生成し、COM IStream インターフェイスを実装するファイルまたは任意のオブジェクトに保存できます。 (実際、ファイルは IStream をサポートするオブジェクトのもう 1 つの例にすぎません)。バージョン 2.5 以降の場合、ADO は Microsoft XML パーサー (MSXML) に依存して XML を Recordset に読み込みます。そのため、msxml.dll が必要です。 バージョン 2.5 の場合、MSXML は Internet Explorer 5 に組み込まれて提供されています。 バージョン 2.6 の場合、MSXML は SQL Server 2000 に組み込まれて提供されています。
注:
[!メモ] 階層 Recordset (データ シェイプ) を XML 形式で保存する場合、いくつかの制限が適用されます。 階層 Recordset に保留中の更新が含まれている場合、XML では保存できず、パラメーター化された階層 Recordset も保存することはできません。 詳細については、「 XML の階層 Recordsets」を参照してください。
データを ADO を介して XML で保存し、再び読み込む最も簡単な方法は、それぞれに Save メソッドと Open メソッドを使用することです。 次の ADO コードの例では、Titles テーブルのデータを titles.sav というファイルに保存します。
Dim rs as new Recordset
Dim rs2 as new Recordset
Dim c as new Connection
Dim s as new Stream
' Query the Titles table.
c.Open "provider='sqloledb';data source='mydb';initial catalog='pubs';Integrated Security='SSPI'"
rs.cursorlocation = adUseClient
rs.Open "select * from titles", c, adOpenStatic
' Save to the file in the XML format. Note that if you don't specify
' adPersistXML, a binary format (ADTG) will be used by default.
rs.Save "titles.sav", adPersistXML
' Save the Recordset into the ADO Stream object.
rs.save s, adPersistXML
rs.Close
c.Close
set rs = nothing
Reopen the file.
rs.Open "titles.sav",,,,adCmdFile
'Open the Stream back into a Recordset.
rs2.open s
ADO では、常に Recordset オブジェクト全体が保存されます。 Recordset オブジェクトの行のサブセットのみを保存する場合は、 Filter メソッドを使用して行を限定するか、または選択句を変更します。 ただし、行のサブセットを保存するために Filter メソッドを使用するには、クライアント側カーソル (CursorLocation = adUseClient) を使用して Recordset オブジェクトを開く必要があります。 たとえば、文字 "b" で始まるタイトルを取得するには、開いている Recordset オブジェクトに次のフィルターを適用します。
rs.Filter "title_id like 'B*'"
rs.Save "btitles.sav", adPersistXML
ADO では、常に Client Cursor Engine 行セットを使用して、Persistence Provider によって生成された前方スクロール型のデータに基づき、スクロール可能でブックマークを指定できる Recordset オブジェクトを作成します。
このセクションでは、以下のトピックについて説明します。