Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Access VBA & ADO speed issue

Posted on 2009-03-31
2
Medium Priority
?
213 Views
Last Modified: 2012-06-27
Hi

I am running the following ADO code but the procedure is taking over 10 minutes to finish.

Basically it opens a first recordset to get a user id.  The user id is then used as criteria for a sql string which opens a second recordset based on membership records.  Various tests are performed on the records in the second recordset before this recordset is closed and the next user id is got from the first recordset etc etc

The User table has approx 15000 records whilst the Membership table has approx 27000.

The code works but is slow.  I am fairly new to ADO so my question is simply is there any way I could speed this up by using different cursors or methods

Many thanks

Ken
objcon.Open CurrentProject.Connection
 
        objrst.Open "Users", objcon, adOpenKeyset, adLockOptimistic
 
        
        With objrst
 
        Do Until .EOF = True
 
            lonCurrID = !UserID             
 
          	strSQL2 = "SELECT UserID, StartDate, EndDate, GroupID, TypeID from Membership where UserID = lonCurrID"
 
               objrst2.Open strSQL2, objcon, adOpenKeyset, adLockOptimistic
                   
                        With objrst2
                        
                            	Do Until .EOF = True
                              
                        		select case
 
				<do various tests>
 
			end select                     	    	
                                    
                                	.MoveNext
                            Loop
                        
                        End With
            
                        objrst2.Close
 
            .MoveNext
            Loop
 
        End With
 
        objrst.Close
 
        objcon.Close

Open in new window

0
Comment
Question by:kenabbott
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 28

Accepted Solution

by:
TextReport earned 1000 total points
ID: 24033321
Ultimately using SQL would be quicker rather than the way you are doing but it depends on what the TESTS are that you are doing. For example a UPDATE statement with the criteria required would be quicker than walking through the records.
You should be able to do this by creating a single recordset and looping through that rather than 2 recordsets

Hope this makes sense and you can expand on the tests that you are carrying out.

Cheers, Andrew
0
 
LVL 120

Assisted Solution

by:Rey Obrero (Capricorn1)
Rey Obrero (Capricorn1) earned 1000 total points
ID: 24033360
try using the recordcount instead of testing the EOF

dim recCnt1 as integer, recCnt2 as integer,x,j

objrst.movelast
recCnt1=objrst.recordcount
objrst.movefirst

for x=1 to recCnt1




next x


i used this in DAO, and prove to run faster than using .EOF


0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
The Windows Phone Theme Colours is a tight, powerful, and well balanced palette. This tiny Access application makes it a snap to select and pick a value. And it doubles as an intro to implementing WithEvents, one of Access' hidden gems.
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…

715 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