Freigeben über


Speichern von Datensätzen im XML-Format

Gilt für: Access 2013, Office 2013

Like ADTG format, Recordset persistence in XML format is implemented with the Microsoft OLE DB Persistence Provider. This provider generates a forward-only, read-only rowset from a saved XML file or stream that contains the schema information generated by ADO. Similarly, it can take an ADO Recordset, generate XML, and save it to a file or any object that implements the COM IStream interface. (In fact, a file is just another example of an object that supports IStream.) For versions 2.5 and later, ADO relies on the Microsoft XML Parser (MSXML) to load the XML into the Recordset; therefore msxml.dll is required. For version 2.5, MSXML shipped with Internet Explorer 5. For version 2.6, MSXML shipped with SQL Server 2000.

Hinweis

Beim Speichern von hierarchischen Recordsets (Datenformen) im XML-Format gelten einige Einschränkungen. Sie können nicht in XML speichern, wenn das hierarchische Recordset ausstehende Updates enthält, und Sie können kein parametrisiertes hierarchisches Recordset speichern. Weitere Informationen finden Sie unter Hierarchische Recordset-Objekte in XML.

The easiest way to persist data into XML and load it back again through ADO is with the Save and Open methods, respectively. The following ADO code example demonstrates saving the data in the Titles table to a file named 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 speichert stets das gesamte Recordset-Objekt. Wenn Sie nur bestimmte Zeilen des Recordset-Objekts speichern möchten, grenzen Sie mithilfe der Filter-Methode die Zeilen ein, oder ändern Sie die Auswahlklausel. Sie müssen jedoch ein Recordset-Objekt mit einem clientseitigen Cursor (CursorLocation = adUseClient) öffnen, um die Filter-Methode zum Speichern einer Teilmenge von Zeilen zu verwenden. Um z. B. Titel abzurufen, die mit dem Buchstaben "b" beginnen, können Sie einen Filter auf ein geöffnetes Recordset-Objekt anwenden:

 
rs.Filter "title_id like 'B*'" 
rs.Save "btitles.sav", adPersistXML 

ADO verwendet stets das Client Cursor Engine-Rowset, um neben den vom Anbieter für Persistenz generierten Vorwärtscursordaten ein Recordset -Objekt zu erstellen, für das der Fensterinhalt verschoben und Lesezeichen festgelegt werden können.

Dieser Abschnitt enthält die folgenden Themen: