[AccessD] References

Max Wanadoo max.wanadoo at gmail.com
Fri Mar 19 03:46:51 CDT 2010


Hi William,

I know we spoke about References a short while back. Below is a Class which
may help you.
It has two functions, one to export a list of references and the other to
re-create references from that exporting list.
Basically, when you have everthing working ok in an mdb you should export
the References to the text  file.
The next time you create a new mdb and don't want to have to manually
re-create or select the References  you can just use the second  function to
create them for you.
The import will also import any references that are found in specific files
and thus you can modularise your references to suit different MDBs.

HTH

Max



Option Compare Database
Option Explicit
Sub TestReferences()
    Dim var As Variant
    Dim clsRef As New clsReferences
    var = clsRef.libExportReferencesToTextFile ' export them
    var = clsRef.libImportReferencesFromTextFile ' import them
End Sub

' clsReference - max.wanadoo at gmail.com 19 March 2010.
Option Compare Database
Option Explicit

Public Function libExportReferencesToTextFile(Optional
strReferenceFilesFileNameDefault As String = "References.txt")
  On Error GoTo EH
  Close  ' close any open files
  Dim strReferenceFiles As String, strSourceFileName As String, strMsg As
String
  Dim pIntFile As Integer, Ref As Reference, bFound As Boolean, strMissing
As String, strReferences
  strSourceFileName = CurrentProject.path & "\" &
strReferenceFilesFileNameDefault

  strReferenceFiles = "EXPORT REFERENCE FILES:" & vbCrLf
  strMissing = "MISSING: " & vbCrLf

  For Each Ref In References
    'Debug.Print Ref.Name, Ref.FullPath, Ref.IsBroken
    If Ref.IsBroken = True Then
      strMissing = strMissing & "  -  " & Ref.FullPath & " (" & Ref.Name &
")" & vbCrLf
    Else
      strReferenceFiles = strReferenceFiles & "  -  " & Ref.FullPath & " ("
& Ref.Name & ")" & vbCrLf
      strReferences = strReferences & Ref.FullPath & vbCrLf
    End If
  Next

  ' output the results.
  pIntFile = FreeFile
  Open strSourceFileName For Output As pIntFile
  Print #pIntFile, strReferences
  Close pIntFile

EX:
  If Not strMissing = "MISSING: " & vbCrLf Then
    strMissing = strMissing & "Missing Files are NOT Listed in the Export
Reference File just created."
  End If
  strMsg = strReferenceFiles & vbCrLf & strMissing
  MsgBox strMsg
  Set Ref = Nothing
  Close  ' close any open files
  Exit Function
EH:
  Select Case Err.Number
  Case Else
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
    Resume Next
  End Select
  Resume EX
End Function


Public Function libImportReferencesFromTextFile(Optional
strReferencesFileNameDefault As String = "References.txt")
' this function will try to LOAD as a Reference all items listed in ANY file
in the currentproject.path folder
' where the filename starts with "Reference" and ends in ".txt"
' this means that to load differing sets of Reference based on differing
circumstances, you have  only
' to place the text  file in this folder  with the name like
"Reference*.txt",
' replacing * with a number or letter  or whateve.
' eg. ReferenceBasic.txt, ReferenceStock.txt, ReferencesOCX.txt, etc
  On Error GoTo EH
  Close  ' close any open files
  Dim strReference As String, strSourceFolder As String, strSourceFileName
As String
  Dim strReferenceFiles As String, strReferences As String
  Dim strMissing As String, strErrs As String, strAlreadyloaded As String,
strNewlyLoaded As String
  Dim pIntFile As Integer, bFound As Boolean
  strSourceFolder = CurrentProject.path & "\"
  strSourceFileName = Dir(strSourceFolder, vbNormal)

  strReferenceFiles = "IMPORT REFERENCE FILES:" & vbCrLf
  strMissing = "MISSING: " & vbCrLf
  strAlreadyloaded = "ALREADY LOADED:" & vbCrLf
  strNewlyLoaded = "NEWLY LOADED: " & vbCrLf

  While (Len(strSourceFileName) > 0)
    If Left(strSourceFileName, 9) = "Reference" And Right(strSourceFileName,
4) = ".txt" Then
      strReferenceFiles = strReferenceFiles & "  -  " & strSourceFileName &
vbCrLf
      pIntFile = FreeFile
      Open strSourceFolder & strSourceFileName For Input As pIntFile
      Do While Not EOF(pIntFile)
        Line Input #pIntFile, strReference
        If Len(Trim(strReference)) > 0 Then
          Debug.Print strReference
          If InStr(strReference, "Missing") > 0 Then
            strMissing = strMissing & "  -  " & strReference & vbCrLf
          Else
            bFound = True
            References.AddFromFile strReference
            If bFound = True Then
              strNewlyLoaded = strNewlyLoaded & "  -  " & strReference &
vbCrLf
            End If
          End If
        End If
      Loop
      Close pIntFile
    End If
    strSourceFileName = Dir
  Wend
  If strReferenceFiles = "IMPORT REFERENCE FILES:" & vbCrLf Then
    strReferenceFiles = strReferenceFiles & vbCrLf & "  -  No Reference
Files found" & vbCrLf
  End If
EX:
  strReferenceFiles = strReferenceFiles & vbCrLf & strNewlyLoaded & vbCrLf &
strMissing & vbCrLf & strAlreadyloaded & vbCrLf & strErrs
  MsgBox strReferenceFiles
  Close  ' close any open files
  Exit Function
EH:
  Select Case Err.Number
  Case 53
    strErrs = strErrs & "Input File Missing - Aborting (" &
strSourceFileName & ")"
    Resume EX
  Case 32813
    ' This is expected for the basic references that Access loads itself and
any others already loaded.
    strAlreadyloaded = strAlreadyloaded & "  -  " & strReference & vbCrLf
    bFound = False
    Resume Next
  Case 29060
    strMissing = strMissing & "  -  " & strReference & vbCrLf
    bFound = False
    Resume Next
  Case Else
    MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
    Resume Next
  End Select
  Resume EX
End Function




More information about the AccessD mailing list