This code shows how to list the available DSN and Drivers installed on the computer.
The program works by utilizing the SQLDataSources API of the ODBC32.DLL.
private Declare Function SQLDataSources Lib "ODBC32.DLL" _ (byval henv&, byval fDirection%, byval szDSN$, byval cbDSNMax%, _ pcbDSN%, byval szDescription$, byval cbDescriptionMax%, _ pcbDescription%) as Integer ' private Declare Function SQLAllocEnv% Lib "ODBC32.DLL" (env&) ' Const SQL_SUCCESS as Long = 0 Const SQL_FETCH_NEXT as Long = 1 ' Sub GetDSNsAndDrivers() Dim i as Integer Dim sDSNItem as string * 1024 Dim sDRVItem as string * 1024 Dim sDSN as string Dim sDRV as string Dim iDSNLen as Integer Dim iDRVLen as Integer Dim lHenv as Long 'handle to the environment on error resume next cboDSNList.AddItem "(None)" 'get the DSNs If SQLAllocEnv(lHenv) <> -1 then Do Until i <> SQL_SUCCESS sDSNItem = Space$(1024) sDRVItem = Space$(1024) i = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, _ iDSNLen, sDRVItem, 1024, iDRVLen) sDSN = Left$(sDSNItem, iDSNLen) sDRV = Left$(sDRVItem, iDRVLen) If sDSN <> Space(iDSNLen) then cboDSNList.AddItem sDSN cboDrivers.AddItem sDRV '---optional - driver '--- value returned End If Loop End If 'remove the dups If cboDSNList.ListCount > 0 then With cboDrivers If .ListCount > 1 then i = 0 While i < .ListCount If .List(i) = .List(i + 1) then .RemoveItem (i) else i = i + 1 End If Wend End If End With End If cboDSNList.ListIndex = 0 End Sub '