[AccessD] Speed enhancement

Stuart McLachlan stuart at lexacorp.com.pg
Fri Aug 29 18:09:45 CDT 2003


At least two possibilities - either all DAO or all SQL:

1. The RunSQL opens and closed MailList and on every iteration. Open 
it once and step through it:

 Dim criteria as String
 ....
 Set rstMail = db.OpenRecordset("MailList")
 Set rstTemp = db.OpenRecordset("TempMailList")
 Do Until rstTemp.EOF
 lngRecordID = rstTemp!MailListID
 criteria =  "MailListID = " & lngRecordID
 rstMail.Findfirst criteria
 rstMail.Update
 rstMail!StaffID = lngNewStaff
 rstMail!DpetTypeID = lngNewDept
 rstMial.Update  
 rstTemp.MoveNext
 lngCount = lngCount + 1
 Loop
 
2. Faster still would be to use a bulk update query with an inner 
join to select all of the required records in one hit:

strSQL = 
"UPDATE MailList " _
&  "INNER JOIN TempMailList " _
&  "ON MailList.MailListID = TempMailList.MailListID " _ 
&  "SET MailList.StaffID = " & lngNewStaff & ", " _  
&  "MailList.DeptTypeID = " & lngNewDept _ 
&  " WHERE (((MailList.MailListID)=" _ 
&   lngRecordID & "));"

Docmd.RunSQL StrSQL



On 29 Aug 2003 at 17:41, John Bartow wrote:

> An easy question for you speed optimizing gurus out there:
> What should I replace this code (which was meant for a few record updates)
> with to make it run faster (it now needs to be used for 500+ records). Watch
> for line wrap.
> 
> Set rstTemp = db.OpenRecordset("TempMailList")
> Do Until rstTemp.EOF
> lngRecordID = rstTemp!MailListID
> DoCmd.RunSQL "UPDATE MailList SET MailList.StaffID = " & lngNewStaff & ",
> MailList.DeptTypeID = " & lngNewDept & " WHERE (((MailList.MailListID)=" &
> lngRecordID & "));"
> lngCount = lngCount + 1
> rstTemp.MoveNext
> Loop
> 
> 
> TIA
> John B.
> 
> 
> _______________________________________________
> AccessD mailing list
> AccessD at databaseadvisors.com
> http://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com

 
-- 
Lexacorp Ltd
http://www.lexacorp.com.pg
Information Technology Consultancy, Software Development,System Support.





More information about the AccessD mailing list