Type recordset/recordset?

  • Thread starter Thread starter FlaviusFlav
  • Start date Start date
F

FlaviusFlav

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
 
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.
 
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)
 
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
 
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.

--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top