[AccessD] Set references via automation

Dan Waters df.waters at comcast.net
Sat Dec 31 09:32:13 CST 2011


Yes!  I think you'll find this helpful.  This is the very first procedure
that is run when the app opens.  I use an AutoExec macro, and it runs this
procedure first.

The stgDeveloperLibraryPath is taken from a table, but it could be
hardcoded, or in a local table.

HTH!
Dan


'--------------------------------

Public Function ResetLibraryReference()
1     On Error GoTo EH

          '-- Purpose:  This will reset the library reference to ensure that
the FE file is referencing the correct Library file. _
                        On a client PC, this isn't a problem, but that
reference does need to be reset on the server.  Otherwise, _
                        the TEST FE could reference the PROD library, etc.
                        
          Dim ref As Access.Reference
          Dim stgCurrentPath As String
          Dim stgPrompt As String
          Dim stgDeveloperLibraryPath As String
          Dim appFE As Access.Application
          Dim intCount As Integer
          
2         Set appFE = CurrentProject.Application
          
3         If Environ("ComputerName") = "DanWaters" Then  '-- Developer PC
          
4             stgDeveloperLibraryPath =
ReadPSIParameter("DeveloperLibraryPath")
          
              '-- Is the correct Library already referenced?
5             For Each ref In appFE.References
6                 If ref.FullPath = stgDeveloperLibraryPath Then
7                     Exit Function
8                 End If
9             Next ref
              
              '--  Find and delete the incorrect library reference
10            For Each ref In appFE.References
11                If InStr(ref.FullPath, "PSILibrary") <> 0 Then
12                    appFE.References.Remove ref
13                End If
14            Next ref
              
              '-- Add the correct library reference
15            Access.References.AddFromFile stgDeveloperLibraryPath
          
16        Else
          
17            stgCurrentPath = CurrentProject.Path
              
18            For intCount = appFE.References.Count To 1 Step -1
19                Set ref = appFE.References(intCount)
20                If InStr(ref.Name, "PSILibrary") <> 0 Then
21                    appFE.References.Remove ref
      '22                    MsgBox appFE.References.Count  '-- TEST
      '23                    MsgBox "Removed Library Reference", vbOKOnly +
vbInformation, "Removed Reference"  '-- TEST
22                End If
23            Next
          
              '-- Add the correct library reference
24            appFE.References.AddFromFile stgCurrentPath &
"\PSILibrary.mdb"
      '27            MsgBox "Added Library Reference", vbOKOnly +
vbInformation, "Added Reference"  '-- TEST
      '28            MsgBox appFE.References.Count  '-- TEST
              
25        End If
                  
          '-- Call a hidden SysCmd to automatically compile/save all
modules.
26        Call SysCmd(504, 16483)
          
27        Exit Function

EH:
28        stgPrompt = "This system has experienced a startup error in the
ResetLibraryReference code procedure." _
              & vbNewLine & vbNewLine _
              & "Line: " & Erl & vbNewLine _
              & "Number: " & Err.Number & vbNewLine _
              & "Description: " & Err.Description _
              & vbNewLine & vbNewLine _
              & "Contact the system developer.  This system will now Quit."
_
              & vbNewLine & vbNewLine _
              & "NOTE:  Be sure the library file project name =
'PSILibrary'."
29        MsgBox stgPrompt, vbCritical & vbOKOnly, "Startup Error"
30        Application.Quit

End Function

'--------------------------------
Public Function ReadPSIParameter(stgParameter As String) As String

    Dim stg As String
    Dim rst As DAO.Recordset
    
    stg = "SELECT " & stgParameter & " FROM tblPSIParameters IN '" &
CurrentProject.Path & "\PSIConfig.mdb" & "'"
    Set rst = CodeDb.OpenRecordset(stg, dbOpenForwardOnly)
    ReadPSIParameter = rst(stgParameter)
    rst.Close
    Set rst = Nothing
    
    Exit Function
    ErrEx.Bookmark = BOOKMARK_ONERROR

End Function
'--------------------------------

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Saturday, December 31, 2011 6:34 AM
To: Access Developers discussion and problem solving
Subject: [AccessD] Set references via automation

Is it possible to set references in an access container (Lib or FE) via
automation?  Open the access container and then set a reference in that
container, all from code running in the object that is performing the
automation?


--
John W. Colby
Colby Consulting

Reality is what refuses to go away
when you do not believe in it

--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list