Listing Available DSN / Drivers Installed
Posted
by John Pirkey
on January 27th, 2004
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
'

Comments
Wonderful
Posted by Legacy on 12/23/2003 12:00amOriginally posted by: Rosa
it works at the first time! I would like also know how to get the odbc list when you select the dsn. I will invesigate.
Reply
Useful one
Posted by Legacy on 11/22/2003 12:00amOriginally posted by: Rakesh Sharma
This is the utility really needed to trace a computer (which is not yours), when you are supposed to work on it.
ReplyThis will tell you all the things in use and you just may use them.
Worked perfect
Posted by Legacy on 05/01/2003 12:00amOriginally posted by: Greg Dirst
Thanks
Reply