Public Function GetDatabaseTableLocation()
Dim wsp As Workspace
Dim dbsCurrent As Database
Dim dbsDatabases As Database
Dim rstStoreTableLocation As Recordset
Dim rstDatabaseLocations As Recordset
Dim tdf As TableDef
Dim fldDatabasePath As Field
Dim fldDatabaseName As Field
On Error Resume Next
Set dbsCurrent = CurrentDb
DoCmd.RunSQL ("DELETE Application_Table_Connection_Location.* FROM Application_Table_Connection_Location;")
Set rstDatabaseLocations = dbsCurrent.OpenRecordset("SELECT Application_Database_Locations.txtDatabase_Path, Application_Database_Locations.txtDatabase_Name " & _
"FROM Application_Database_Locations;")
Set fldDatabasePath = rstDatabaseLocations!txtDatabase_Path
Set fldDatabaseName = rstDatabaseLocations!txtDatabase_Name
Set wsp = DBEngine.Workspaces(0)
While Not rstDatabaseLocations.EOF
Set dbsDatabases = wsp.OpenDatabase(rstDatabaseLocations!txtDatabase_Path & rstDatabaseLocations!txtDatabase_Name, , True)
dbsDatabases.TableDefs.Refresh
Set rstStoreTableLocation = dbsCurrent.OpenRecordset("SELECT Application_Table_Connection_Location.* " & _
"FROM Application_Table_Connection_Location;")
For Each tdf In dbsDatabases.TableDefs
With tdf
If Len(.Connect) > 0 Then
rstStoreTableLocation.AddNew
rstStoreTableLocation!txtDatabase_Path = fldDatabasePath
rstStoreTableLocation!txtDatabase_Name = fldDatabaseName
rstStoreTableLocation!txtTable_Name = .Name
rstStoreTableLocation!txtTable_Connection = .Connect
rstStoreTableLocation.Update
Else
rstStoreTableLocation.AddNew
rstStoreTableLocation!txtDatabase_Path = rstDatabaseLocations!txtDatabase_Path
rstStoreTableLocation!txtDatabase_Name = rstDatabaseLocations!txtDatabase_Name
rstStoreTableLocation!txtTable_Name = .Name
rstStoreTableLocation!txtTable_Connection = "Local"
rstStoreTableLocation.Update
End If
End With
Next 'Each tdf In dbsDatabases.TableDefs
rstDatabaseLocations.MoveNext
Wend 'Not rstDatabaseLocations.EOF
Set tdf = Nothing
rstStoreTableLocation.Close
dbsDatabases.Close
dbsCurrent.Close
Set rstStoreTableLocation = Nothing
Set dbsDatabases = Nothing
Set dbsCurrent = Nothing
End Function
Public Function GetDatabaseLocations()
Dim varPath As Variant
Dim varDirName As Variant
Dim varFileName As Variant
Dim strDirectoryName(255) As String
Dim strFileName As String
Dim intDirectoryCounter As Integer
Dim intNumberOfDirsFound As Integer
On Error Resume Next
DoCmd.RunSQL ("DELETE Application_Database_Locations.* FROM Application_Database_Locations;")
'enter the root path where you wish to start the search from
varPath = "n:\access_development\"
varDirName = Dir(varPath, vbDirectory)
intDirectoryCounter = 1
Do While varDirName <> ""
If varDirName <> "." And varDirName <> ".." Then
If (GetAttr(varPath & varDirName) And vbDirectory) = vbDirectory Then
If Left(varDirName, 1) <> "1" Then
strDirectoryName(intDirectoryCounter) = varPath & varDirName
intDirectoryCounter = intDirectoryCounter + 1
End If
End If
End If
varDirName = Dir
Loop
intNumberOfDirsFound = intDirectoryCounter - 1
For intDirectoryCounter = 1 To intNumberOfDirsFound
varFileName = Dir(strDirectoryName(intDirectoryCounter) & "\*.mdb")
Do While varFileName <> ""
DoCmd.RunSQL ("INSERT INTO Application_Database_Locations ( txtDatabase_Path, txtDatabase_Name ) " & _
"SELECT '" & strDirectoryName(intDirectoryCounter) & "\', '" & varFileName & "';")
varFileName = Dir
Loop
Next
End Function