Validating where DB is opened from

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I am trying to figure out a way to limit users to opening my database from a specific network location. The trouble is, users could have different drive letters associated with the network path that I'm using. My code looks like this
------------------------------------
If CurrentDb.Name <> "\\asdffda\zxcvvcxz\Develop\Current\Mike\DB.mdb" The
MsgBox "This database is designed to run from a specific network location that does not" & vbNewLine &
" match the current location of the database." & vbNewLine & vbNewLine &
"Please run the database from its original location or contact Mike for technical support."
, vbCritica
MsgBox "The database will now quit.", vbInformatio
DoCmd.Qui
End I
 
You could try

Function DbName()
DbName = Application.CurrentProject.Path
End Function

Then on the start form include the code

If Left(DbName) = "X" Then
MsgBox "This......... "
DoCmd.Quit
End If

Cheers,
Peter

Mike said:
I am trying to figure out a way to limit users to opening my database from
a specific network location. The trouble is, users could have different
drive letters associated with the network path that I'm using. My code
looks like this:location that does not" & vbNewLine & _
" match the current location of the database." & vbNewLine & vbNewLine & _
"Please run the database from its original location or contact Mike for technical support." _
, vbCritical
MsgBox "The database will now quit.", vbInformation
DoCmd.Quit
End If
X:\ . How would I check that their X:\ is the same as \\asdffda\zxcvvcxz\ ?
 
The following function is from API-Guide 3.7 at www.allapi.net. The utility
is a free download.

Public Function fGetUNCPath(strDriveLetter As String) As String
On Local Error GoTo fGetUNCPath_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 Len(Msg) Then
MsgBox Msg, vbInformation
Else
fGetUNCPath = Left$(lpszRemoteName, cbRemoteName)
End If
fGetUNCPath_End:
Exit Function
fGetUNCPath_Err:
MsgBox Err.Description, vbInformation
Resume fGetUNCPath_End
End Function

You will need this declaration and these constants for it to work.

'Example by Alexey ([email protected])
' returns errors for UNC Path
Private Const ERROR_BAD_DEVICE = 1200&
Private Const ERROR_CONNECTION_UNAVAIL = 1201&
Private Const ERROR_EXTENDED_ERROR = 1208&
Private Const ERROR_MORE_DATA = 234
Private Const ERROR_NOT_SUPPORTED = 50&
Private Const ERROR_NO_NET_OR_BAD_PATH = 1203&
Private Const ERROR_NO_NETWORK = 1222&
Private Const ERROR_NOT_CONNECTED = 2250&
Private Const NO_ERROR = 0

Private Declare Function WNetGetConnection Lib "mpr.dll" Alias _
"WNetGetConnectionA" (ByVal lpszLocalName As String, _
ByVal lpszRemoteName As String, cbRemoteName As Long) As Long

--
Wayne Morgan
Microsoft Access MVP


Mike said:
I am trying to figure out a way to limit users to opening my database from
a specific network location. The trouble is, users could have different
drive letters associated with the network path that I'm using. My code
looks like this:location that does not" & vbNewLine & _
" match the current location of the database." & vbNewLine & vbNewLine & _
"Please run the database from its original location or contact Mike for technical support." _
, vbCritical
MsgBox "The database will now quit.", vbInformation
DoCmd.Quit
End If
X:\ . How would I check that their X:\ is the same as \\asdffda\zxcvvcxz\ ?
 
Back
Top