Vba ms access在加载时创建一个常量

Vba ms access在加载时创建一个常量,vba,ms-access,constants,Vba,Ms Access,Constants,我有一个ms access数据库,需要在不同的计算机上运行。我的问题是,每台计算机都将后端存储在不同的位置。到目前为止,我只有两台机器在运行,但我知道我需要更多的机器来运行它。我将每台计算机的位置存储在一个公共常量中,并使用一个简单的If语句将其链接到正确的位置 Public Const strFolderDatabasePc1 as string "c:\DatabasePc1" Public Const strFolderDatabasePc2 as string "c:\Databas

我有一个ms access数据库,需要在不同的计算机上运行。我的问题是,每台计算机都将后端存储在不同的位置。到目前为止,我只有两台机器在运行,但我知道我需要更多的机器来运行它。我将每台计算机的位置存储在一个公共常量中,并使用一个简单的If语句将其链接到正确的位置

 Public Const strFolderDatabasePc1 as string "c:\DatabasePc1"
 Public Const strFolderDatabasePc2 as string "c:\DatabasePc2" 
 ....
是否可以在数据库加载时使用if语句创建公共常量

 Public Const strFolderDatabase as string
 If Pc1 then
    strFolderDatabase = FolderPc1
 else if Pc2 then
    strFolderDatabase = FolderPc2
 else if Pc3 then
    strFolderDatabase = FolderPc3
 else 
    strError
 EndIf
多谢各位

更新:

到目前为止,我已经编写了以下代码。它包含4个用户

 'Database Folders
 Public Const MainFolder As String = "\\localhost\c$\User\Main"
 Public Const UserAFolder As String = "\\localhost\c$\User\UserA"
 Public Const UserBFolder As String = "\\localhost\c$\User\UserB"
 Public Function AdminFolder() As String
 AdminFolder = Application.CurrentProject.Path & "\Admin\"
 End Function

 'Database Keys
 Public Const MainUserKey As String = "\\localhost\c$\User\Main\Key.txt"
 Public Const UserAKey As String = "\\localhost\c$\User\UserA\key.txt"
 Public Const UserBKey As String = "\\localhost\c$\User\UserB\key.txt"
 Public Function AdminKey() As String
 AdminFolder = Application.CurrentProject.Path & "\Admin\key.txt"
 End Function

 Public Function FolderExists(ByVal path_ As String) As Boolean
 On Error Resume Next
 FolderExists = (GetAttr(path_) And vbDirectory) = vbDirectory
 On Error GoTo 0
 End Function

 Public Function FileExists(ByVal path_ As String) As Boolean
 On Error Resume Next
 FileExists = (Len(Dir(path_)) > 0)
 On Error GoTo 0
 End Function

 Public Function FolderDatabase()
 If FileExists(AdminKey) And FolderExists(AdminFolder) Then
      'Admin
      FolderDatabase = AdminFolder
 ElseIf FileExists(MainUserKey) And FolderExists(UserMainFolder) Then
      'MainUser
      FolderDatabase = UserMainFolder
 ElseIf FileExists(UserAKey) And FolderExists(UserAFolder) Then
      'UserA
      FolderDatabase = UserAFolder
 ElseIf FileExists(UserBKey) And FolderExists(UserBFolder) Then
      'UserB
      FolderDatabase = UserBFolder
 Else
      'Unknown User
      'Do something else...
 End If
 End Function
并在每个表单中使用以下代码

 Sub Check()
 If FolderExists(FolderDatabase) Then
      '===> User, Continue Loading.
      If Dir(FolderDatabase & "*.*") = "" Then
           '===> Empty Folder.
           'Do something...
      Else
           '===> Files On Folder.
           'Do something...
      End If
 Else
      '===> Not Known User.
      Application.Quit acQuitSaveNone
 End If
 End Sub
我可以写它还是用更简单的方法来做?多谢各位

附言:
我需要在一个地方有每个用户的位置,因为我可能会在未来更改位置或文件名。另外,我正在使用另外两个具有不同名称的文件夹,并且再次使用上述所有文件夹。

简单地说,否,但您可以使用一个函数,通过将pc号作为参数传递来返回正确的路径:

Public Const strFolderDatabasePc1 as string "c:\DatabasePc1"
Public Const strFolderDatabasePc2 as string "c:\DatabasePc2" 

Public Function FolderDatabase(ByVal pcNo As Long) As String
    Select Case pcNo
        Case 1:
            FolderDatabase = strFolderDatabasePc1
        Case 2:    
            FolderDatabase = strFolderDatabasePc2
    End Select
 End Function
然后只需传递所需的pc号码:

Dim path_ As String
    path_ = FolderDatabase(1)
要使其更具可读性,请为各种pc设置
Enum

Public Enum Computers
    Home
    Work
End Enum

Public Function FolderDatabase(ByVal pc As Computers) As String
    Select Case pc
        Case Computers.Home:
            FolderDatabase = strFolderDatabasePc1
        Case Computers.Work:    
            FolderDatabase = strFolderDatabasePc2
    End Select
End Function


Dim path_ As String
    path_ = FolderDatabase(Computers.Home)

这没有道理。每台计算机都有自己的
C:
驱动器,其他计算机看不到

因此,您可以简单地使用:

Public Const strFolderDatabasePc As string "c:\DatabasePc"

也就是说,您最好使用
C:\Users\Public
下的文件夹,因为您的数据库文件在Windows看来不是一个应用程序,而是一个文档。

或者干脆将
strFolderDatabase
作为一个变量。您完全改变了这种情况。首先,应用程序运行在多台计算机上,每台计算机上有一个用户,现在您有一台计算机上有多个用户。请编辑您的问题以反映真实情况。谢谢您的回复。这是4台不同的计算机或更多的未来。每个数据库都有一个不同的数据库位置。例如,我写“\\localhost\c$\User\..”的原因。