I have done a lot of access programming; and the method I like best is using .mdb files as front ends and writing my own adodb connection object and then a function that returns an adodb recordset. I use the recordset to fill list boxes, combo boxes and tables that are bound to forms. This is a totally DSNless way to program and you can hit as many different database as you like. My connection and ado logic is in a seperate module or class. Below are the stubs.
It can be time consuming scripting out the inserts to the form bound tables. However, you can see everything in the debugger and you can utilize record sets in nested loops for some powerfull data crunching when set based logic is not an answer.
Public Function Connection(ConType As Integer) As ADODB.Connection
conType is used in a select case so the Connection function works for more that one database
Public Function QueryReturn(strSelect As String, intCon As Integer) As ADODB.Recordset
Public Sub Command(Command As String, intCon As Integer)
Public Function CheckRecordSet(rs As ADODB.Recordset) As Boolean