Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Im trying to pass a recordset to a procedure to better separate my cod
but getting a type mismatch. ... Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.open "someurl" ... (the above all works fine) dosomething(rs) <---Type mismatch here private sub dosometing(rs as ADODB.recordset) end sub I have a watch on rs, and at the point of the procedure call, it i listed as Type "recordset/recordset" What does this mean, and how would I pass this to a procedure -- Message posted from http://www.ExcelForum.com |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Flav
It works okay for me. Sub bbb(rs As ADODB.Recordset) Debug.Print TypeName(rs) Debug.Print rs.Fields(1).Value End Sub returns Recordset and the proper field value. To which version of ADO have you set a reference? You could type your argument As Object which might take care of it, but I'd be interested to know what's going on. I used XL2000, Win98, ADO 2.7 and also tested ADO 2.1. -- Dick Kusleika MVP - Excel Excel Blog - Daily Dose of Excel www.dicks-blog.com "FlaviusFlav " wrote in message ... Im trying to pass a recordset to a procedure to better separate my code but getting a type mismatch. .. Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.open "someurl" .. (the above all works fine) dosomething(rs) <---Type mismatch here private sub dosometing(rs as ADODB.recordset) end sub I have a watch on rs, and at the point of the procedure call, it is listed as Type "recordset/recordset" What does this mean, and how would I pass this to a procedure? --- Message posted from http://www.ExcelForum.com/ |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Flavius,
By using dosomething(rs) the rs is being evaluated before passed to the procedure. Use dosomething rs -- HTH Bob Phillips ... looking out across Poole Harbour to the Purbecks (remove nothere from the email address if mailing direct) "FlaviusFlav " wrote in message ... Im trying to pass a recordset to a procedure to better separate my code but getting a type mismatch. .. Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.open "someurl" .. (the above all works fine) dosomething(rs) <---Type mismatch here private sub dosometing(rs as ADODB.recordset) end sub I have a watch on rs, and at the point of the procedure call, it is listed as Type "recordset/recordset" What does this mean, and how would I pass this to a procedure? --- Message posted from http://www.ExcelForum.com/ |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks for the help Bob.
I'm so used to using parens around arguments that I didnt think t think that its just evaluating the containing expressio -- Message posted from http://www.ExcelForum.com |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
FlaviusFlav wrote ...
rs.open "someurl" dosomething(rs) <---Type mismatch here private sub dosometing(rs as ADODB.recordset) What puzzle's me is why you would want to pass an *open* recordset by reference to a procedure. It would be very complicated for the calling procedure if the dosometing code changed the rs pointer to reference another recordset object. I suspect you want Private Sub DoSometing(ByVal rs as ADODB.Recordset) It pays to always be explicit; don't rely on default behavior. Ask yourself whether you want ByVal or ByRef: the answer is usually ByVal but the default is ByRef. Being explicit will help the person who inherits your project when you move on to greater things. -- |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
return recordset | Excel Discussion (Misc queries) | |||
Recordset in Excel | Excel Programming | |||
Recordset | Excel Programming | |||
ADODB Recordset | Excel Programming | |||
Default recordset type? | Excel Programming |