I have been doing Access development for 20 years and this is the most frustrating problem yet. I have a new database I have created from scratch. I have the Access backend on the server and Access frontends are distributed to users desktops. When I test it, it's lightning fast. As soon as only one other person opens the database, even if they are just on the main switchboard and not opening any other forms, it immediately slows down to about half speed! We have tried this with various people on various machines and it's the same result. There is a noticeable delay moving from record to record, clicking on tabs, etc. I admit the main form is somewhat complex ... lots of tabs with subforms. This is where the slowness mostly occurs. However, I have done just about everything the experts have recommended as far as improving performance and it has helped a little, but not enough. Still a very noticeable delay. I have done the following:
• Only loading one record at a time instead of all records (only loading the record the user wants to look at).
• Create a permanent connection to backend by having main switchboard based on small table with one record.
• Only loading subforms or combobox sources if the user clicks on the tab with that subform or combobox.
• Changed primary keys from Descending to Ascending (only had this on one table and a few related child tables).
• Replacing all domain aggregate functions (DCount / DLookup) to recordset counts or "ELookup" function in VBA and queries.
• Do more functions up front only once when the form loads, rather than on Form_Current.
• Add primary keys to all tables (I only had 3 tables without primary keys, but all have unique indexes)
• Replace Nz functions with IIf in queries
• Analyze Group By queries and make sure they are efficient
• Adding Option Explicit to all modules
• Any forms based on tables ... use queries instead if I don’t need all fields.
• Uncheck “Use Windows-Themed Controls in Forms” on database options.
• Turning on unicode compression for all text and memo fields (table property).
I have always had the basic performance enhancements in place ... turning off subdatasheets, turning off autocorrect, etc.
The other odd thing is ... if I test it only on my machine, but open three separate occurrences (three separate front-end copies on my machine, pretending to be three different users), it is lightning fast on all three, even when all instances are in the same large form and doing various things on the tabs.
I am puzzled and frustrated and not sure what to do at this point. I thought about possibly moving the backend to SQL Server, but some say that may not improve the speed. Any options on that? Could there be a server or network issue? The IT people said the bandwidth is 100MB, although one guy said in this day and age, it should really be 1G. Don't know if that is an issue or not.
Any help or advice is appreciated! Thanks.
• Only loading one record at a time instead of all records (only loading the record the user wants to look at).
• Create a permanent connection to backend by having main switchboard based on small table with one record.
• Only loading subforms or combobox sources if the user clicks on the tab with that subform or combobox.
• Changed primary keys from Descending to Ascending (only had this on one table and a few related child tables).
• Replacing all domain aggregate functions (DCount / DLookup) to recordset counts or "ELookup" function in VBA and queries.
• Do more functions up front only once when the form loads, rather than on Form_Current.
• Add primary keys to all tables (I only had 3 tables without primary keys, but all have unique indexes)
• Replace Nz functions with IIf in queries
• Analyze Group By queries and make sure they are efficient
• Adding Option Explicit to all modules
• Any forms based on tables ... use queries instead if I don’t need all fields.
• Uncheck “Use Windows-Themed Controls in Forms” on database options.
• Turning on unicode compression for all text and memo fields (table property).
I have always had the basic performance enhancements in place ... turning off subdatasheets, turning off autocorrect, etc.
The other odd thing is ... if I test it only on my machine, but open three separate occurrences (three separate front-end copies on my machine, pretending to be three different users), it is lightning fast on all three, even when all instances are in the same large form and doing various things on the tabs.
I am puzzled and frustrated and not sure what to do at this point. I thought about possibly moving the backend to SQL Server, but some say that may not improve the speed. Any options on that? Could there be a server or network issue? The IT people said the bandwidth is 100MB, although one guy said in this day and age, it should really be 1G. Don't know if that is an issue or not.
Any help or advice is appreciated! Thanks.