How do you go about that Dave?
I only reconnect tables if the backend has changed - but if it has, then I think the existing permanent connection will not be useful. What I actually do is this.
I have a table called "LinkedTables" which includes a list of the tables I expect to connect in each front end. At startup I check that all of these tables are connected correctly. If I have added new backend tables, or want to connect to a different backend, this test fails.
So then I first drop all the connected tables, and start over. I just found it easier to recreate all the tables, as a belt and braces approach. Sometimes I am changing from Jet tables to SQL server tables, and vice versa. I don't know if a refreshlink would work in that case, but the deletetable/createtable always works, because the code just builds new tabledefs.
So having deleted all the tables, I then iterate my table of linkedtables, and relink all the tables.
If I don't find them all, at the end I report the error and stop.
After the first table is connected, I have a little sub that creates a recordset to the first table (I mean it only needs to create the recordset once)
if tempRST is nothing then set tempRST = currentdb.openrecordset(tablename)
Then I re-create the links to all the other tables.
Now all the tables are connected, I can do whatever I really want to do to maintain the permanent connection (open a query, open a form, open a different recordset, etc), and then close the tempRST object I just opened.
does that make sense?