By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,656 Members | 968 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,656 IT Pros & Developers. It's quick & easy.

Filling a DataSet with an ADO Recordset or Record

P: n/a
I am writing a web service for a classic ASP application. I need to consume
an ADO recordset and then send it to another web service for processing. I
found an MSDN ariticle telling how to do this
(http://msdn.microsoft.com/library/de...recordset.asp),
one big problem - it says to import ADOComponent.dll and msado15.dll. I found
msado15.dll but I can't find ADOComponenet.dll, neither on my machine or to
download from the web. Does anyone have it???

Thank you!
Dec 30 '05 #1
Share this Question
Share on Google+
6 Replies


P: n/a
KJ
I read the article. "ADOComonent.dll" is an example name for a complied
output file:

"For example, an existing COM component with a ProgId of
ADOComponent.DataClass is compiled into ADOComponent.dll. It has
methods that return objects of type ADODB.Recordset. To consume this
object from .NET, import both ADOComponent.dll, and msado15.dll, which
contains the ADODB.Recordset and ADODB.Record objects. To import the
COM type libraries to .NET, issue the following commands.

TlbImp "C:\Program Files\Common Files\System\Ado\msado15.dll"
/out:ADODB.dll
TlbImp ADOComponent.dll /out:ADOCOM.dll"

Dec 30 '05 #2

P: n/a
Recordset rs = new RecordsetClass();
rs.CursorLocation = CursorLocationEnum.adUseClient;
rs.Open(strSQL, strConn, CursorTypeEnum.adOpenStatic,
LockTypeEnum.adLockReadOnly, (int) CommandTypeEnum.adCmdText);
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;
intRowsRetrieved = da.Fill(ds, rs, "Customers");
intRowsRetrieved = da.Fill(ds.Tables["Customers"], rs);
--Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:
I am writing a web service for a classic ASP application. I need to consume
an ADO recordset and then send it to another web service for processing. I
found an MSDN ariticle telling how to do this
(http://msdn.microsoft.com/library/de...recordset.asp),
one big problem - it says to import ADOComponent.dll and msado15.dll. I found
msado15.dll but I can't find ADOComponenet.dll, neither on my machine or to
download from the web. Does anyone have it???

Thank you!

Dec 30 '05 #3

P: n/a
Peter,

Thank you for your response. In this project I am not creating a
recordset, a recordset is being sent to it from a classic asp application as
a paramater. This is running as a piece of the middleware between the the asp
UI and another web service that is communicating with a main frame cobol
application. I need to accept this recordset, put the data from fields into a
fixed length string to send on the the other web service which in turn runs a
cobol transaction on the main frame. The other web service and main frame
application are owned by another state government agency. When I build my
asmx file it says no errors but it returns the error - Cannot serialize
interface ADODB.Recordset.

Here is my code:

[WebMethod(CacheDuration = 30,
Description="Accepts an Authorization in an ADOc recordset format. It
returns an xml data stream with the return status and other specified data.
The return table name is rtnRS.")]
public string SendAuth(Recordset rsAuthForm)
{
string xmlString = "";
string authString = "";
string rtnString = "";

OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;

// read the recordset into the dataset
intRowsRetrieved = da.Fill(ds,rsAuthForm,"auth");
intRowsRetrieved = da.Fill(ds.Tables["auth"], rsAuthForm);

// create the fixed length string for the authorization header
authString = stringAuthHeader(ds);
.... and so on

This is the only routine I use a recordset, all the others use a string
input and a string output. It was working great before implementing this part.

Thank you for you help,

James
"Peter Bromberg [C# MVP]" wrote:
Recordset rs = new RecordsetClass();
rs.CursorLocation = CursorLocationEnum.adUseClient;
rs.Open(strSQL, strConn, CursorTypeEnum.adOpenStatic,
LockTypeEnum.adLockReadOnly, (int) CommandTypeEnum.adCmdText);
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;
intRowsRetrieved = da.Fill(ds, rs, "Customers");
intRowsRetrieved = da.Fill(ds.Tables["Customers"], rs);
--Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:
I am writing a web service for a classic ASP application. I need to consume
an ADO recordset and then send it to another web service for processing. I
found an MSDN ariticle telling how to do this
(http://msdn.microsoft.com/library/de...recordset.asp),
one big problem - it says to import ADOComponent.dll and msado15.dll. I found
msado15.dll but I can't find ADOComponenet.dll, neither on my machine or to
download from the web. Does anyone have it???

Thank you!

Dec 30 '05 #4

P: n/a
Yes, because an ADO Recordset is a COM object and the .NET WebServices
infrastructure doesn't know what to do with it. You have several options, the
best one would probably be one of the Xml options the Recordset provides,
which would flatten out the structure to xml or string that can be worked
with.
Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:
Peter,

Thank you for your response. In this project I am not creating a
recordset, a recordset is being sent to it from a classic asp application as
a paramater. This is running as a piece of the middleware between the the asp
UI and another web service that is communicating with a main frame cobol
application. I need to accept this recordset, put the data from fields into a
fixed length string to send on the the other web service which in turn runs a
cobol transaction on the main frame. The other web service and main frame
application are owned by another state government agency. When I build my
asmx file it says no errors but it returns the error - Cannot serialize
interface ADODB.Recordset.

Here is my code:

[WebMethod(CacheDuration = 30,
Description="Accepts an Authorization in an ADOc recordset format. It
returns an xml data stream with the return status and other specified data.
The return table name is rtnRS.")]
public string SendAuth(Recordset rsAuthForm)
{
string xmlString = "";
string authString = "";
string rtnString = "";

OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;

// read the recordset into the dataset
intRowsRetrieved = da.Fill(ds,rsAuthForm,"auth");
intRowsRetrieved = da.Fill(ds.Tables["auth"], rsAuthForm);

// create the fixed length string for the authorization header
authString = stringAuthHeader(ds);
... and so on

This is the only routine I use a recordset, all the others use a string
input and a string output. It was working great before implementing this part.

Thank you for you help,

James
"Peter Bromberg [C# MVP]" wrote:
Recordset rs = new RecordsetClass();
rs.CursorLocation = CursorLocationEnum.adUseClient;
rs.Open(strSQL, strConn, CursorTypeEnum.adOpenStatic,
LockTypeEnum.adLockReadOnly, (int) CommandTypeEnum.adCmdText);
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;
intRowsRetrieved = da.Fill(ds, rs, "Customers");
intRowsRetrieved = da.Fill(ds.Tables["Customers"], rs);
--Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:
I am writing a web service for a classic ASP application. I need to consume
an ADO recordset and then send it to another web service for processing. I
found an MSDN ariticle telling how to do this
(http://msdn.microsoft.com/library/de...recordset.asp),
one big problem - it says to import ADOComponent.dll and msado15.dll. I found
msado15.dll but I can't find ADOComponenet.dll, neither on my machine or to
download from the web. Does anyone have it???

Thank you!

Dec 30 '05 #5

P: n/a
Peter,

Thank you again for your response! I am new to C# and XML. I ended up
writing a routine to return an XML recordset through a string so I can send
it back to my ASP calling application. But I don't have any idea how to do
what you are saying to do. Can you give me some references to some samples? I
did a search for 'C# recordset xml' and haven't found anything to help yet. I
will keep searching.

We had this entire project written in VB6 as a com object which communicated
with the other agencies dcom object until the servers were upgraded to 2003
and a service pack which blew out their dcom object and my com object. So
they switched to web services and I am trying to do the same with as little
disruption to my ASP UI as possible. We are using SOAP in the ASP UI to
communicate to my new web service. In the old architecture we used recordsets
throughout as both input and output.

Thank you,
James

"Peter Bromberg [C# MVP]" wrote:
Yes, because an ADO Recordset is a COM object and the .NET WebServices
infrastructure doesn't know what to do with it. You have several options, the
best one would probably be one of the Xml options the Recordset provides,
which would flatten out the structure to xml or string that can be worked
with.
Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:
Peter,

Thank you for your response. In this project I am not creating a
recordset, a recordset is being sent to it from a classic asp application as
a paramater. This is running as a piece of the middleware between the the asp
UI and another web service that is communicating with a main frame cobol
application. I need to accept this recordset, put the data from fields into a
fixed length string to send on the the other web service which in turn runs a
cobol transaction on the main frame. The other web service and main frame
application are owned by another state government agency. When I build my
asmx file it says no errors but it returns the error - Cannot serialize
interface ADODB.Recordset.

Here is my code:

[WebMethod(CacheDuration = 30,
Description="Accepts an Authorization in an ADOc recordset format. It
returns an xml data stream with the return status and other specified data.
The return table name is rtnRS.")]
public string SendAuth(Recordset rsAuthForm)
{
string xmlString = "";
string authString = "";
string rtnString = "";

OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;

// read the recordset into the dataset
intRowsRetrieved = da.Fill(ds,rsAuthForm,"auth");
intRowsRetrieved = da.Fill(ds.Tables["auth"], rsAuthForm);

// create the fixed length string for the authorization header
authString = stringAuthHeader(ds);
... and so on

This is the only routine I use a recordset, all the others use a string
input and a string output. It was working great before implementing this part.

Thank you for you help,

James
"Peter Bromberg [C# MVP]" wrote:
Recordset rs = new RecordsetClass();
rs.CursorLocation = CursorLocationEnum.adUseClient;
rs.Open(strSQL, strConn, CursorTypeEnum.adOpenStatic,
LockTypeEnum.adLockReadOnly, (int) CommandTypeEnum.adCmdText);
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;
intRowsRetrieved = da.Fill(ds, rs, "Customers");
intRowsRetrieved = da.Fill(ds.Tables["Customers"], rs);
--Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:

> I am writing a web service for a classic ASP application. I need to consume
> an ADO recordset and then send it to another web service for processing. I
> found an MSDN ariticle telling how to do this
> (http://msdn.microsoft.com/library/de...recordset.asp),
> one big problem - it says to import ADOComponent.dll and msado15.dll. I found
> msado15.dll but I can't find ADOComponenet.dll, neither on my machine or to
> download from the web. Does anyone have it???
>
> Thank you!

Dec 30 '05 #6

P: n/a
Peter,

I found SoapReflectionImporter. I simply changed public method to:

public string SendAuth(SoapReflectionImporter rsAuthForm)

It now compiles and I don't get an error when viewing the .asmx file. My asp
programmer is out today so I can't test that part. Should this fix it?

James
"Peter Bromberg [C# MVP]" wrote:
Yes, because an ADO Recordset is a COM object and the .NET WebServices
infrastructure doesn't know what to do with it. You have several options, the
best one would probably be one of the Xml options the Recordset provides,
which would flatten out the structure to xml or string that can be worked
with.
Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:
Peter,

Thank you for your response. In this project I am not creating a
recordset, a recordset is being sent to it from a classic asp application as
a paramater. This is running as a piece of the middleware between the the asp
UI and another web service that is communicating with a main frame cobol
application. I need to accept this recordset, put the data from fields into a
fixed length string to send on the the other web service which in turn runs a
cobol transaction on the main frame. The other web service and main frame
application are owned by another state government agency. When I build my
asmx file it says no errors but it returns the error - Cannot serialize
interface ADODB.Recordset.

Here is my code:

[WebMethod(CacheDuration = 30,
Description="Accepts an Authorization in an ADOc recordset format. It
returns an xml data stream with the return status and other specified data.
The return table name is rtnRS.")]
public string SendAuth(Recordset rsAuthForm)
{
string xmlString = "";
string authString = "";
string rtnString = "";

OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;

// read the recordset into the dataset
intRowsRetrieved = da.Fill(ds,rsAuthForm,"auth");
intRowsRetrieved = da.Fill(ds.Tables["auth"], rsAuthForm);

// create the fixed length string for the authorization header
authString = stringAuthHeader(ds);
... and so on

This is the only routine I use a recordset, all the others use a string
input and a string output. It was working great before implementing this part.

Thank you for you help,

James
"Peter Bromberg [C# MVP]" wrote:
Recordset rs = new RecordsetClass();
rs.CursorLocation = CursorLocationEnum.adUseClient;
rs.Open(strSQL, strConn, CursorTypeEnum.adOpenStatic,
LockTypeEnum.adLockReadOnly, (int) CommandTypeEnum.adCmdText);
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
int intRowsRetrieved;
intRowsRetrieved = da.Fill(ds, rs, "Customers");
intRowsRetrieved = da.Fill(ds.Tables["Customers"], rs);
--Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"James" wrote:

> I am writing a web service for a classic ASP application. I need to consume
> an ADO recordset and then send it to another web service for processing. I
> found an MSDN ariticle telling how to do this
> (http://msdn.microsoft.com/library/de...recordset.asp),
> one big problem - it says to import ADOComponent.dll and msado15.dll. I found
> msado15.dll but I can't find ADOComponenet.dll, neither on my machine or to
> download from the web. Does anyone have it???
>
> Thank you!

Dec 30 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.