User ID:
Password:
Remember Me:
Forgot Password?
Not a member?
Click here for more information and to register.

    Listing Available DSN / Drivers Installed



    This code shows how to list the available DSN and Drivers installed on the computer.

    screen-shot

    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
    '
    

    Download Demo Project (2k)


    IT Offers


    Top Authors