[AccessD] Changing the ODBC Connection String to use UNC - Strange Results

Doug Steele dbdoug at gmail.com
Mon Oct 22 13:04:38 CDT 2012


This may be totally irrelevant, but I had an Access db that was having
problems when some users were using drive letters and others were using
UNC.  So I found the following function which converts a drive letter to a
unc path:

Doug

' This API declaration is used to return the
' UNC path from a drive letter.
Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA"
_
                 (ByVal lpszLocalName As String, ByVal lpszRemoteName As
String, cbRemoteName As Long) As Long

Function GetUNCPath(strDriveLetter As String) As String
   On Local Error GoTo GetUNCPath_Err
   Dim Msg As String, lngReturn As Long
   Dim lpszLocalName As String
   Dim lpszRemoteName As String
   Dim cbRemoteName As Long
   lpszLocalName = strDriveLetter
   lpszRemoteName = String$(255, Chr$(32))
   cbRemoteName = Len(lpszRemoteName)
   lngReturn = WNetGetConnection(lpszLocalName, lpszRemoteName,
cbRemoteName)
   Select Case lngReturn
      Case ERROR_BAD_DEVICE
         Msg = "Error: Bad Device"
      Case ERROR_CONNECTION_UNAVAIL
         Msg = "Error: Connection Un-Available"
      Case ERROR_EXTENDED_ERROR
         Msg = "Error: Extended Error"
      Case ERROR_MORE_DATA
         Msg = "Error: More Data"
      Case ERROR_NOT_SUPPORTED
         Msg = "Error: Feature not Supported"
      Case ERROR_NO_NET_OR_BAD_PATH
         Msg = "Error: No Network Available or Bad Path"
      Case ERROR_NO_NETWORK
         Msg = "Error: No Network Available"
      Case ERROR_NOT_CONNECTED
         Msg = "Error: Not Connected"
      Case NO_ERROR
         ' all is successful...
   End Select

   If lngReturn <> 0 Then
     GetUNCPath = ""
    Else
     GetUNCPath = Left$(lpszRemoteName, cbRemoteName)
     GetUNCPath = Left(GetUNCPath, InStr(GetUNCPath, Chr(0)) - 1)
   End If

   'End If
GetUNCPath_End:
   Exit Function
GetUNCPath_Err:
   MsgBox Err.Description, vbInformation
   Resume GetUNCPath_End
End Function


More information about the AccessD mailing list