How can I speed up running several queries to populate data on a form?
I have a form that I has (4) command buttons. The caption on the command buttons will display the record count of a query. The forms On Current Events runs (4) queries for record counts on each. It takes about 10 seconds to load the form. Is the code correct? Is there a way to speed it up?
Private Sub Form_Current()Dim rsUpdatesCount As IntegerDim rsActiveCasesCount As IntegerDim rsActivitiesCount As IntegerDim rsTasksCount As IntegerDim queryNameOrSQL As StringSet db = CurrentDbqueryNameOrSQL = "SELECT * FROM QueryAllUpdates"Set rs = CurrentDb.OpenRecordset(queryNameOrSQL, dbOpenDynaset, dbSeeChanges)rs.MoveLastrsUpdatesCount = rs.RecordCountMe.CmdUpdates.Caption = "Updates " & rs.RecordCount' Next QueryqueryNameOrSQL = "SELECT * FROM QuerySubActive"Set rs = CurrentDb.OpenRecordset(queryNameOrSQL, dbOpenDynaset, dbSeeChanges)rs.MoveLastrsActiveCasesCount = rs.RecordCountMe.CmdActiveCases.Caption = "Active Cases " & rs.RecordCount'Next QueryqueryNameOrSQL = "SELECT * FROM QuerySubTasks"Set rs = CurrentDb.OpenRecordset(queryNameOrSQL, dbOpenDynaset, dbSeeChanges)rs.MoveLastrsTasksCount = rs.RecordCountMe.CmdTask.Caption = "Tasks " & rs.RecordCount'Next QueryqueryNameOrSQL = "SELECT * FROM QuerySubActivity"Set rs = CurrentDb.OpenRecordset(queryNameOrSQL, dbOpenDynaset, dbSeeChanges)If Not (rs.BOF And rs.EOF) Thenrs.MoveLastrsActivitiesCount = rs.RecordCountMe.CmdActivity.Caption = "Activities " & rs.RecordCountElseEnd Ifrs.CloseSet rs = NothingEnd Sub
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
and you can clean up your code by refactoring that stuff into a function
private function ButtonCount(byval pstrTitle as String, byval pstrKey as String, byval pstrSQL as string) as String
ButtonCount = pstrTitle & " " & format(nz(Dcount(pstrKey, pstrSQL),0))
end function
private function ButtonCount(byval pstrTitle as String, byval pstrKey as String, byval pstrSQL as string) as String
ButtonCount = pstrTitle & " " & format(nz(Dcount(pstrKey, pstrSQL),0))
end function
then your code looks like
me.cmdUpdates.Caption = ButtonCount("Updates", "YourKeyField", "QueryAllUpdates")
me.cmdActiveCase.Caption = ButtonCount("Active Cases", "KeyField", "QuerySubActive")
etc.