Microsoft Access has the capability to create and update DSN's, using the DBEngine object. Here is some sample code that creates/updates two DSN's:


Sub RegisterDB
  Dim s As String
  On Error GoTo err_rdb
  '
  s = "Database=AcmeArizona" & vbCr & _
    "OemToAnsi=No" & vbCr & _
    "Server=ACAZ-W2K-SQL1" & vbCr & _
    "Trusted_Connection=Yes"
  DBEngine.RegisterDatabase "SalesAZ", _
    "SQL Server", True, s
  '
  s = "Database=AS400" & vbCr & _
    "OemToAnsi=No" & vbCr & _
    "Server=ACAZ-NTAPP1" & vbCr & _
    "Trusted_Connection=Yes"
  DBEngine.RegisterDatabase "Sales400", _
    "SQL Server", True, s
exit_rdb:
  Exit Sub
  '
err_rdb:
  MsgBox Err.Description, vbCritical, _
    "Error # " & Err.Number
  Resume exit_rdb
  '
End Sub

 


The arguments for RegisterDatabase are:
name of DSN,
name of ODBC provider,
whether to persist security info,
connection string