I'm writing a web service in .NET to work with Delphi clients. Delphi
uses ADO so I want to convert the Dataset to a Recordset and vice-
versa. It appears a Web Service cannot publish a web method with a
Recordset return so I save the RecordSet to an XML string:
SqlDataAdapter sa = new SqlDataAdapter("Select * FROM " +
table , oConn);
DataSet ds = new DataSet();
sa.Fill(ds, table);
sa.FillSchema(ds.Tables[0], SchemaType.Source);
Recordset rs = new Recordset();
rs = ConvertToRecordset(ds.Tables[0]);
Stream streamObj = new Stream();
// Save the recordset's XML representation in a stream object
rs.Save(streamObj, PersistFormatEnum.adPersistXML);
// Get the string (XML) of the recordset
string outputXml = streamObj.ReadText(streamObj .Size);
The XML works fine in Delphi. Now I want to make changes and send back
the XML and load into a Recordset or reverse the process. The
Recordset doesn't have a Load method. I'm new to CSharp and am not
sure how to load the xml from ADO into a Recordset. I would like to
avoid using files and load the XML string. Is there a way of doing
this?
Thanks
John
Misbah Arefin - 04 Feb 2008 00:51 GMT
If recordset is what you want then you can load the xmlstring into a dataset
and then use ConvertToRecordset to get the recordset

Signature
Misbah Arefin
> I'm writing a web service in .NET to work with Delphi clients. Delphi
> uses ADO so I want to convert the Dataset to a Recordset and vice-
[quoted text clipped - 26 lines]
> Thanks
> John
Al Reid - 04 Feb 2008 12:59 GMT
> I'm writing a web service in .NET to work with Delphi clients. Delphi
> uses ADO so I want to convert the Dataset to a Recordset and vice-
[quoted text clipped - 26 lines]
> Thanks
> John
True that it doesn't have a "Load" method, However, the XML can be loaded using the Open method.
Open "Data.XML"

Signature
Al Reid
Nicholas Paldino [.NET/C# MVP] - 04 Feb 2008 18:41 GMT
In addition to the other posts, if you don't want to save to a temporary
file, if you are using a version of ADO that supports the Stream object, you
can create a new Stream instance, call the WriteText method on it (passing
the xml that was passed to you) and then pass that to the Open method on a
new Recordset (resetting the stream pointer before you do, of course).

Signature
- Nicholas Paldino [.NET/C# MVP]
- mvp@spam.guard.caspershouse.com
> I'm writing a web service in .NET to work with Delphi clients. Delphi
> uses ADO so I want to convert the Dataset to a Recordset and vice-
[quoted text clipped - 26 lines]
> Thanks
> John