this indicates either a slow network (which will affect everything) or code/design that could be written better. To minimise network traffic you need to design like a web page. You also need to take into account the proper use of indexing.
Here is a couple a links I wrote a while ago
https://www.access-programmers.co.uk/forums/showthread.php?t=291269
https://www.access-programmers.co.uk/forums/showthread.php?t=291268
I read through the links and I want to ask about one point you raise.
I see the suggestion of not having forms bound to large tables, but rather only access the specific row needed.
I have never implemented this method because I have a few questions. I'm hoping someone can help explain the reasons behind it better and how to implement it.
1) At first glance, it makes sense that loading in one record rather than loading in 10,000 records is going to be a lot faster. However, based on my understanding of how Access loads data, I don't get this. My understanding is that when you request a specific row in SQL Server (or any database) then the server acts proactively to retrieve the requested row so only one row goes down the network (or internet), whereas JET/ACE are simply acting as a file share, so requesting one row requires the entire table to be transferred and it's only the client computer doing the filtering to display the row we need. If that's the case, why is basing a form on a single row an advantage? The entire table has to cross the network anyway.
2) In addition, even if the entire table has to be transferred if the form is bound to the unfiltered table, then loading the form should be much slower, but once the form is loaded and the data is transferred and cached/loaded into RAM or wherever the data resides, retrieving one row from a table that's already been transferred should be comparable or even faster than retrieving the row from the server each time the user navigates.
I am sure that these questions are because of a lack of knowledge but if someone can explain it, I would be most grateful.
As far as implementation, I can think of two ways to do it:
1) Using a completely unbound form and using DAO to load in the data, edit the data, add and delete. This sounds like a LOT of coding which really diminishes the benefits of Access
2) Binding the form to a query that only returns one row using a WHERE in the primary key. I get the concept but does anyone have a fully functional demo of this? I want to see how additions work (i.e. if your form is bound to a single record, then how do you ADD to that recordset...?), how does OnCurrent code work (I guess it gets moved to the code that loads the data?) how about subforms on the form? How and when does that data load? And so on
Once again, thanks a lot. I am sure that many others can benefit from this information!
SHADOW