Сохранение записей в формате XML
Область применения: Access 2013, Office 2013
Как и в формате ADTG, сохраняемость набора записей в формате XML реализуется с поставщиком сохраняемости Microsoft OLE DB. Этот поставщик создает набор строк только для чтения, доступный только для чтения, из сохраненного XML-файла или потока, который содержит сведения о схеме, созданные ADO. Аналогичным образом он может принимать набор записей ADO, создавать XML и сохранять его в файл или любой объект, реализующий интерфейс COM IStream . (На самом деле файл — это просто еще один пример объекта, поддерживающего IStream.) В версиях 2.5 и более поздних ADO использует средство синтаксического анализа MICROSOFT XML (MSXML) для загрузки XML-кода в набор записей. поэтому требуется msxml.dll. Для версии 2.5 MSXML поставляется с Internet Обозреватель 5. Для версии 2.6 MSXML поставляется с SQL Server 2000.
Примечание.
При сохранении иерархических наборов записей (фигур данных) в формате XML применяются некоторые ограничения. Невозможно сохранить в XML-коде, если иерархический набор записей содержит ожидающие обновления, и невозможно сохранить параметризованный иерархический набор записей. Дополнительные сведения см. в разделе Иерархические наборы записей в XML.
Самый простой способ сохранить данные в XML и снова загрузить их с помощью ADO с помощью методов 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 , чтобы сузить строки или изменить предложение выбора. Однако необходимо открыть объект Recordset с клиентским курсором (CursorLocation = adUseClient), чтобы использовать метод Filter для сохранения подмножества строк. Например, чтобы получить заголовки, начинающиеся с буквы "b", можно применить фильтр к открытому объекту Recordset :
rs.Filter "title_id like 'B*'"
rs.Save "btitles.sav", adPersistXML
ADO всегда использует набор строк клиентского обработчика курсоров для создания прокручиваемого объекта Recordset с возможностью закладки поверх данных только для пересылки, созданных поставщиком сохраняемости.
В этой статье содержатся следующие разделы: