Query.SaveAsXml(Integer, OutStream) Method
Version: Available or changed with runtime version 1.0.
Saves the resulting data set of a query as an .xml file.
Syntax
[Ok := ] Query.SaveAsXml(Number: Integer, OutStream: OutStream)
Parameters
Number
Type: Integer
The ID of the query object that you want to save as an .xml file. If the query that you specify does not exist, then a run-time error occurs.
OutStream
Type: OutStream
The stream that you want to save the query as XML to.
Return Value
[Optional] Ok
Type: Boolean
true if the SaveAsXml succeeded, otherwise false. If you omit this optional return value and the operation does not execute successfully, a runtime error will occur.
Remarks
When the SaveAsXML method is called, the dataset is generated as XML and streamed to the OutStream object designated by the OutStream parameter.
Open, Read, or Close semantics with the SaveAsXML method
The SaveAsXML method can be called at any place in the code and does not require that the Open, Read, or Close methods are called before it. When the SaveAsXML method is called, a new instance of the query is created. The query is implicitly opened, read, and closed. If there is currently a dataset in the opened state when the SaveAsXML method is called, then that instance is closed. This means that the following code is in-correct because the query is not open on the second Read call.
// Not correct way to use Query.SaveAsXML
Query.Open;
Query.Read;
Query.SaveAsXML(myOutStream);
// Query is now closed, so next read call will fail
Query.Read;
The correct code for this example is as follows.
// Correct way to use Query.SaveAsXML
Query.SaveAsXML(myOutStream);
Query.Open;
Query.Read;
Example
The following example shows how to get data from a query with the name My Customer Query into an outstream for further processing.
var
MyCustomerQuery: Query "My Customer Query";
myOutStream: OutStream;
OK: Boolean;
Text000: Label 'Query was not saved.';
begin
OK := MyCustomerQuery.SaveAsXML(Query::MyCustomerQuery, myOutStream);
if not OK then
Error(Text000);
end;