В настоящее время я работаю над библиотечной базой данных для всех моих приложений Access, в которых есть общий код и формы. Это идет довольно хорошо, но единственное, что я не могу обнаружить, это как установить переменную, ссылающуюся на ссылку. Имя библиотеки задается константой, и при запуске проверяется, существует ли файл в папке приложения и совпадает ли он с путем, сохраненным в ссылке.
Однако я хочу обратиться к библиотеке скороткая переменная "dbl", потому что я не хочу каждый раз использовать имя библиотеки. Это имя может измениться. Как мне установить переменную для этого? Я попытался Set dbl = Application.References(APP_LIB)
, и это считается действительным, но я не могу вызвать любую процедуру или форму с этой переменной.
Thx!
Art.
Public Function CkLib()
'Needs to stay in the App Module!
Dim ref As Reference
Dim strLib As String
On Error GoTo Err_Proc
For Each ref In Application.References
If ref.Name = APP_LIB Then
strLib = CurrentProject.Path & "\" & ref.Name & "." & APP_LIB_TYPE
If Dir(strLib, vbNormal) = "" Then 'File does not exist
MsgBox "The app library " & APP_LIB & " is missing. Please reinstall the app or ask for support!", vbCritical + vbOKOnly, APP_NAME & " App Error"
DoCmd.Quit acQuitSaveNone
Else
If ref.FullPath <> strLib Then 'Path needs to be updated
References.Remove ref
References.AddFromFile strLib
End If
Exit For
End If
End If
Next ref
If Nz(strLib, "") = "" Then
'Try to add ref
If Dir(CurrentProject.Path & "\" & APP_LIB & "." & APP_LIB_TYPE, vbNormal) <> "" Then
References.AddFromFile strLib
Else
MsgBox "Missing reference to app library " & APP_LIB & "! Please reinstall the app or ask for support!", vbCritical + vbOKOnly, APP_NAME & " App Error"
DoCmd.Quit acQuitSaveNone
End If
End If
Set dbl = Application.References(APP_LIB)
Exit_Proc:
Exit Function
Err_Proc:
Select Case Err.number
Case Else
MsgBox "Error: " & Trim(Str(Err.number)) & vbCrLf & _
"Desc: " & Err.description & vbCrLf & vbCrLf & _
"Module: Mod_Generic" & vbCrLf & _
"Function: CkLib", _
vbCritical, "Error!"
End Select
Resume Exit_Proc
End Function