All users, including myself, work remotely, so we use VPN.
So, a VPN - that going to be a good 10 or more times slower then your local office network. So, a 5 second delay will now become 50 seconds. And of course, if a person is at home, then you have no clue what kind of connection they have, or how poor their internet system is. So, keep in mind that VPN's are slow - often 10x or MORE slower then your local office network.
I got rid of those (replacing with Elookups)
Hum, Elookup? What on earth is that? never heard of that term in regards to ms-access. A dlookup() is no slower then writing VBA code to fill a record set to pull a value from a table. It not dlookup() that is slow, but then again, if you drop in a dlookup() to a query, then you executingn 100's and 100's of dlookups (one for each row). The dlookup() is thus not slow, it is using it 100's of times that is slow!!!
In the VAST majority of cases, a dlookup can be replaced with a simple left join in the query - and they work fast. But, "elookup" is a new term, and somthing i not heard of.
>ut as soon as another user opens the database even if they just sit idle on the main menu (which has the permanent connection table as the record source), it jumps to 15-20 seconds, or sometimes longer. Some users seem much slower than others.
Ok, some things to check:
Each user has a local copy of the front end on their computer - NO EXCEPTIONS to this rule. So, they are consuming and using linked tables to the back end shared folder on the company network - over that super slow VPN which as I noted is AT LEAST 10x slower.
A few things to check:
You ensured that the applcation part (front end) is on each work station. (no exceptions, right ???).
Next up:
Make sure the applcation does not have ANY specific printer set for reports - even ones you are NOT using.
Make sure the user has a NON NETWORK default printer set. when you launch a form or report, access will often interrogate and attempt to get printer information - it can be worse then slow . Check this issue.
Check for any stray linked table (that means a linked table that points to no where).
Now, you suggest, state, hint, and seem to be very sure you have a persistent connection. If you main form is bound to a back end table - and that main form REMAINS open at all times, then you look to be ok. However, based on your example, this THEN should not result in a slow down when the 2nd user enters. (assuming the persistent connection).
No wi-fi users allowed.
I should point out, that VPN's are not a reliable setup for a split database. You will see increased chances of corruption.
The most easy solution would be to migrate the back end to SQL server. The front end you have can 99% remain as is.
SQL server express is free, and is ideal for this. The great part about this, is that you get to keep + use the front end, and 99% of the code and everything should work as before. Very few code changes are required for this setup to work.
However, the HUGE bonus then?
You can then optimize some parts of the applcation. (you use a mash like hospital approach). You might find say 2 or 5 forms or reports that run slow. So, you take the access query, move it to sql server (a view). Link to the view (give it same name as your query). At that point, that query speed and performance will be blistering - and all without ANY code or even form or report design changes required.
If a VPN was not involved, then just 10 users is not a problem. However, even if you do gain and tweak better performance? the setup is NOT reliable with VPN. A VPN means a internet connection, and that means small breaks in the connection can occur, and that means corruption and damage.
I am not sure if you seen say star trek. They have a thing called a transporter. If you break the transport, then you get a mess on the other side.
So, Access (unlike excel or Word) does NOT load or pull the whole file data from disk into memory. But, for reasons of performance pulls ONLY parts from disk into memory that it needs.
You have this:
So, say you request record. Unlike excel, or word? You can have 1 million rows, yet the grab of the row is near instant. You get this:
Note how JUST little bits and parts get pulled from disk into memory.
BUT WHAT happens if you put a network between you and the disk drive?
Well, now we have this:
Remember, the server does nothing here - all work is simple a file read process.
But, now with that network connection above?
What happens if the network connection breaks?? (which VPN's do all the time).
You now have this:
The problem is unlike a local database, the ram is YOUR computer with the bits and parts, and the FILE is on the server!!!! If your connection breaks, those bits and parts now don't make it back over the network to the file on disk - and now there is holes and missing parts. The result is a damaged file.
While access can tolerate a network, as you can see, it has to be rock solid. But, a VPN is not rock solid, and not only are they VERY VERY slow compared the office LAN (local area network), they as noted are not near as reliable.
Now, I will say I VERY much find it strange that first user in is ok speed wise, and after that it is slow - a persistent connection should solve that issue.
However, at the end of the day? Due to the VPN, you in a high risk area - even if you do fix the speed issue. I would suggest moving back end data to free sql server, and then continue to use the existing access front end. That setup cannot and will not and does not suffer data file corruptions.
And using free sql server will also mean your performance issues can be fixed - if not out right eliminated.
Regards,
Albert D. Kallal (Access MVP 2003-2017)
Edmonton, Alberta Canada