Solved

how to move recordset into a vba array (similar to Excel code: varMyArray = myRange)

Posted on 2011-02-17
3
922 Views
Last Modified: 2012-06-22
In excel I often grab a range of cells and put them into a matrix for futher use.

In Access, I use a macro like the attached UDF.  
But, it occured to me that there might be an easier way and a better way to do it.

Does anybody have any comments?

Function RsToArray(rs As DAO.Recordset)
rs.MoveFirst
dim1ubound = rs.RecordCount
dim2ubound = rs.Fields.Count
Dim myArray()
ReDim myArray(0 To dim1ubound, 0 To dim2ubound - 1)
For i1 = 0 To dim1ubound
For i2 = 0 To dim2ubound - 1
myArray(i1, i2) = rs(i2)
Next
rs.MoveNext
Next
RsToArray = myArray
End Function

Open in new window

0
Comment
Question by:rberke
3 Comments
 
LVL 10

Assisted Solution

by:VTKegan
VTKegan earned 20 total points
Comment Utility
A recordset is an array essentially.  You access rows and columns using indexes directly on the recordset.  To me it doesn't make sense doing what you are doing.

I would just operate on the recordset instead of creating my own matrix of a recordset.
0
 
LVL 28

Accepted Solution

by:
omgang earned 230 total points
Comment Utility
I agree with VTKegan and prefer to work with the recordset directly.  But to your question the GetRows method may be worth looking into.  It will populate an array with records from a recordset.  It does the same thing as your function but will do so with a few less lines of code.
http://msdn.microsoft.com/en-us/library/bb221041(v=office.12).aspx

OM Gang
0
 
LVL 5

Author Comment

by:rberke
Comment Utility
Getrows looks like it will be exactly what I want (other than a superficial difference in that it is the transpose of what I wanted).  

And, I actually agree with comments about keeping the recordset intact 99% of the time.

But maybe 1% of the time using a matrix/array approach is useful.  

By analogy, an Excel Range is also essentially an array, yet about 5% of the time it is convenient for me to stick a range into a vba array.  In fact, I have found that quite a few Excel Gurus like to use the ary = Range approach for certain functions.

Thanks for your help.

rberke

0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Introduction When developing Access applications, often we need to know whether an object exists.  This article presents a quick and reliable routine to determine if an object exists without that object being opened. If you wanted to inspect/ite…
Experts-Exchange is a great place to come for help with solutions for your database issues, and many problems are resolved within minutes of being posted.  Others take a little more time and effort and often providing a sample database is very helpf…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now