In the following procedure, conditions are such that everything above the numbered lines is not executed; however, I suspect that if conditions were such that the code entered into one of those If or ElseIf blocks, the same line(s) would produce the same error.<\/p>\n
Public Function Reconnect_Linked_Tables()\n'CHECK TABLE LINKS AND RESTORE LINKS IF NECESSARY IN PRIORITY OF NETWORK BACK-END, LOCAL BACK-END, BACK-END IN THE SAME FOLDER AS THE OPEN FRONT-END, & FINALLY THE CURRENTLY LINKED\n'BACK-END (IF NEITHER NETWORK NOR LOCAL NOR SAME FOLDER)\n'IF AN ERROR OCCURS, MOVE TO & PROCESS THE 'ErrorHandler:' PROCESS\nOn Error GoTo ErrorHandler\n 'PRINT PROCEDURE START MESSAGE TO IMMEDIATE WINDOW\n Debug.Print \"Reconnect_Linked_Tables (modUtilities) - START:\"\n Debug.Print \"\"\n 'DECLARE AND/OR SET VARIABLES NEEDED FOR THE PROCEDURE\n Set db = CurrentDb\n intTablesLinkedTo = 0\n intRelinkedTableCount = 0\n intTableLinkStatus = 0\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES EXIST, SET 'blnNetworkDriveBackEndExists' TO 'TRUE' & RESTORE NETWORK TABLE LINKS (PRIORITY ONE)\n If Check_Network_Drive_For_BackEnd = True Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Check_Network_Drive_For_BackEnd = True\"\n Debug.Print \"\"\n 'SET 'blnNetworkDriveBackEndExists' TO 'TRUE'\n blnNetworkDriveBackEndExists = True\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Network Back-end File Exists...Connecting\"\n Debug.Print \"\"\n 'COUNT THE NUMBER OF RELINKED TABLES IN THE DATABASE, SAVE THE RESULT TO 'intReLinkedTableCount', SAVE THE LINKED TABLE NAME TO 'strTableName', SET 'intTableLinkStatus' to 1,\n '& SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath'\n For i = 0 To db.TableDefs.Count - 1\n If db.TableDefs(i).Connect <> \"\" Then\n strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n 'IF THE CURRENT LINKED TABLE PATH DOES NOT MATCH THE NETWORK FILE PATH & SINCE THE NETWORK FILE PATH EXISTS, RELINK TABLES TO THE NETWORK FILE PATH\n If strCurrentTableLinkBackEndPath <> strNetworkDriveBackEndPath Then\n db.TableDefs(i).Connect = \";Database=\" + strNetworkDriveBackEndPath\n db.TableDefs(i).RefreshLink\n strTableName = db.TableDefs(i).SourceTableName\n intRelinkedTableCount = intRelinkedTableCount + 1\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 1\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"[\" & intRelinkedTableCount & \"] Table \" & strTableName & \" connected to back-end file '\" & strNetworkDriveBackEndPath & \"'\"\n 'IF THE CURRENT LINKED TABLE PATH MATCHES THE NETWORK FILE PATH, THERE IS NOTHING FURTHER TO DO HERE BUT INCREMENT 'intRelinkedTableCount' BY ZERO (0)\n '& SET 'intTableLinkStatus' TO ZERO (0)\n ElseIf strCurrentTableLinkBackEndPath = strNetworkDriveBackEndPath Then\n intRelinkedTableCount = intRelinkedTableCount + 0\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 0\n Exit For\n End If\n End If\n Next\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strNetworkDriveBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Network Table Links (Priority One)\"\n intTablesLinkedTo = 1\n 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE NETWORK BACK END\n GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST BUT THE LOCAL FILE PATH IN FIELD\n ''Local_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES EXIST, RESTORE LOCAL TABLE LINKS (PRIORITY TWO)\n ElseIf blnNetworkDriveBackEndExists = False And Check_Local_Drive_For_BackEnd = True Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"blnNetworkDriveBackEndExists = False And Check_Local_Drive_For_BackEnd = True\"\n Debug.Print \"\"\n 'SET 'blnLocalDriveBackEndExists' TO 'TRUE'\n blnLocalDriveBackEndExists = True\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Network Back-end File Does Not Exist\"\n Debug.Print \"Local Back-end File Exists...Connecting\"\n Debug.Print \"\"\n 'COUNT THE NUMBER OF RELINKED TABLES IN THE DATABASE, SAVE THE RESULT TO 'intReLinkedTableCount', SAVE THE LINKED TABLE NAME TO 'strTableName', SET 'intTableLinkStatus' to 2,\n '& SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath'\n For i = 0 To db.TableDefs.Count - 1\n If db.TableDefs(i).Connect <> \"\" Then\n strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n 'IF THE CURRENT LINKED TABLE PATH DOES NOT MATCH THE LOCAL FILE PATH & SINCE THE NETWORK FILE PATH DOES NOT EXIST & THE LOCAL FILE PATH EXISTS,\n 'RELINK TABLES TO THE LOCAL FILE PATH\n If strCurrentTableLinkBackEndPath <> strLocalDriveBackEndPath Then\n db.TableDefs(i).Connect = \";Database=\" + strLocalDriveBackEndPath\n db.TableDefs(i).RefreshLink\n strTableName = db.TableDefs(i).SourceTableName\n intRelinkedTableCount = intRelinkedTableCount + 1\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 2\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"[\" & intRelinkedTableCount & \"] Table \" & strTableName & \" connected to back-end file '\" & strLocalDriveBackEndPath & \"'\"\n Debug.Print \"\"\n 'IF THE CURRENT LINKED TABLE PATH MATCHES THE LOCAL FILE PATH, THERE IS NOTHING FURTHER TO DO HERE BUT INCREMENT 'intRelinkedTableCount' BY ZERO (0)\n '& SET 'intTableLinkStatus' TO ZERO (0)\n ElseIf strCurrentTableLinkBackEndPath = strLocalDriveBackEndPath Then\n intRelinkedTableCount = intRelinkedTableCount + 0\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 0\n Exit For\n End If\n End If\n Next\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strLocalDriveBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n 'intTablesLinkedTo POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Local Table Links (Priority Two)\"\n intTablesLinkedTo = 2\n 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE LOCAL BACK END\n GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST AND THE LOCAL FILE PATH IN FIELD 'Local_Drive_BackEnd_Path'\n 'IN TABLE 'tblAdminOptions' DOES NOT EXIST, CHECK FOR A BACK-END FILE IN THE SAME FOLDER AS THE OPEN FRONT-END (PRIORITY THREE)\n ElseIf blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And Check_Same_Folder_For_BackEnd = True Then\n100 'PRINT TO IMMEDIATE WINDOW\n105 Debug.Print \"blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And Check_Same_Folder_For_BackEnd = True\"\n110 Debug.Print \"\"\n115 'SET 'blnSameFolderBackEndExists' TO 'TRUE'\n120 blnSameFolderBackEndExists = True\n125 'PRINT TO IMMEDIATE WINDOW\n130 Debug.Print \"Neither Network Nor Local Back-end Files Exist\"\n135 Debug.Print \"Same Folder Back-end File Exists...Connecting\"\n140 Debug.Print \"\"\n145 'COUNT THE NUMBER OF RELINKED TABLES IN THE DATABASE, SAVE THE RESULT TO 'intReLinkedTableCount', SAVE THE LINKED TABLE NAME TO 'strTableName', SET 'intTableLinkStatus' to 3,\n150 '& SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath'\n155 For i = 0 To db.TableDefs.Count - 1\n160 If db.TableDefs(i).Connect <> \"\" Then\n165 strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n170 'IF THE CURRENT LINKED TABLE PATH DOES NOT MATCH THE SAME FOLDER FILE PATH & SINCE THE NETWORK & LOCAL FILE PATHS DO NOT EXIST & THE SAME FOLDER FILE PATH EXISTS,\n175 'RELINK TABLES TO THE SAME FOLDER FILE PATH\n180 If strCurrentTableLinkBackEndPath <> strSameFolderBackEndPath Then\n185 db.TableDefs(i).Connect = \";Database=\" + strSameFolderBackEndPath\n190 db.TableDefs(i).RefreshLink\n195 strTableName = db.TableDefs(i).SourceTableName\n200 intRelinkedTableCount = intRelinkedTableCount + 1\n205 ''intTableLinkStatus' POSSIBLE VALUES:\n210 '1 = NETWORK\n215 '2 = LOCAL\n220 '3 = SAME FOLDER\n225 '4 = CURRENT\n230 '5 = ERROR\n235 intTableLinkStatus = 3\n240 'PRINT TO IMMEDIATE WINDOW\n245 Debug.Print \"[\" & intRelinkedTableCount & \"] Table \" & strTableName & \" connected to back-end file '\" & strSameFolderBackEndPath & \"'\"\n250 Debug.Print \"\"\n255 'IF THE CURRENT LINKED TABLE PATH MATCHES THE SAME FOLDER FILE PATH, THERE IS NOTHING FURTHER TO DO HERE BUT INCREMENT 'intRelinkedTableCount' BY ZERO (0)\n260 '& SET 'intTableLinkStatus' TO ZERO (0)\n265 ElseIf strCurrentTableLinkBackEndPath = strSameFolderBackEndPath Then\n270 intRelinkedTableCount = intRelinkedTableCount + 0\n275 ''intTableLinkStatus' POSSIBLE VALUES:\n280 '1 = NETWORK\n285 '2 = LOCAL\n290 '3 = SAME FOLDER\n295 '4 = CURRENT\n300 '5 = ERROR\n305 intTableLinkStatus = 0\n310 Exit For\n315 End If\n320 End If\n325 Next\n330 'RUN THE 'Check_Network_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE NETWORK FILE PATH\n335 Call Check_Network_Drive_For_BackEnd\n340 'RUN THE 'Check_Local_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE LOCAL FILE PATH\n345 Call Check_Local_Drive_For_BackEnd\n350 'IF THE SAME FOLDER PATH MATCHES THE NETWORK FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n355 If strSameFolderBackEndPath = strNetworkDriveBackEndPath Then\n360 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n365 Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n370 Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n375 Debug.Print \"\"\n380 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n385 ''intTablesLinkedTo' POSSIBLE VALUES:\n390 '1 = NETWORK\n395 '2 = LOCAL\n400 '3 = SAME FOLDER\n405 '4 = CURRENT\n410 '5 = ERROR\n415 strTablesLinkedTo = \"Network Table Links (Priority One)\"\n420 intTablesLinkedTo = 1\n425 'IF THE SAME FOLDER PATH MATCHES THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n430 ElseIf strSameFolderBackEndPath = strLocalDriveBackEndPath Then\n435 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n440 Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n445 Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n450 Debug.Print \"\"\n455 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n460 ''intTablesLinkedTo' POSSIBLE VALUES:\n465 '1 = NETWORK\n470 '2 = LOCAL\n475 '3 = SAME FOLDER\n480 '4 = CURRENT\n485 '5 = ERROR\n490 strTablesLinkedTo = \"Local Table Links (Priority Two)\"\n495 intTablesLinkedTo = 2\n500 'IF THE SAME FOLDER PATH DOES NOT MATCH THE NETWORK FILE PATH OR THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n505 ElseIf (strSameFolderBackEndPath <> strNetworkDriveBackEndPath) And (strSameFolderBackEndPath <> strLocalDriveBackEndPath) Then\n510 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n515 Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n520 Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n525 Debug.Print \"\"\n530 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n535 ''intTablesLinkedTo' POSSIBLE VALUES:\n540 '1 = NETWORK\n545 '2 = LOCAL\n550 '3 = SAME FOLDER\n555 '4 = CURRENT\n560 '5 = ERROR\n565 strTablesLinkedTo = \"Same Folder Table Links (Priority Three)\"\n570 intTablesLinkedTo = 3\n575 End If\n580 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE SAME FOLDER BACK END\n585 GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST, THE LOCAL FILE PATH IN FIELD 'Local_Drive_BackEnd_Path'\n 'IN TABLE 'tblAdminOptions' DOES NOT EXIST, & A BACK-END FILE IN THE SAME FOLDER AS THE OPEN FRONT-END DOES NOT EXIST, CHECK THE CURRENT TABLE LINK PATH FOR\n 'VALIDITY & RETAIN TABLE LINKS (PRIORITY FOUR)\n ElseIf blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And Check_Current_Table_Link_Paths_For_BackEnd = True Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And Check_Current_Table_Link_Paths_For_BackEnd = True\"\n Debug.Print \"\"\n 'SET 'blnCurrentlyLinkedBackEndExists' TO 'TRUE'\n blnCurrentlyLinkedBackEndExists = True\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Neither Network Nor Local Nor Same Folder Back-end Files Exist\"\n Debug.Print \"Currently Linked Back-end File Exists...Retaining Links\"\n Debug.Print \"\"\n 'SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath' & SET 'intTableLinkStatus' to 4\n For i = 0 To db.TableDefs.Count - 1\n If db.TableDefs(i).Connect <> \"\" Then\n strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 4\n End If\n Next\n 'RUN THE 'Check_Network_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE NETWORK FILE PATH\n Call Check_Network_Drive_For_BackEnd\n 'RUN THE 'Check_Local_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE LOCAL FILE PATH\n Call Check_Local_Drive_For_BackEnd\n 'IF THE SAME FOLDER PATH MATCHES THE NETWORK FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n If strCurrentTableLinkBackEndPath = strNetworkDriveBackEndPath Then\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Network Table Links (Priority One)\"\n intTablesLinkedTo = 1\n 'IF THE SAME FOLDER PATH MATCHES THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ElseIf strCurrentTableLinkBackEndPath = strLocalDriveBackEndPath Then\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Local Table Links (Priority Two)\"\n intTablesLinkedTo = 2\n 'IF THE SAME FOLDER PATH DOES NOT MATCH THE NETWORK FILE PATH OR THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ElseIf (strCurrentTableLinkBackEndPath <> strNetworkDriveBackEndPath) And (strCurrentTableLinkBackEndPath <> strLocalDriveBackEndPath) Then\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Current Table Links (Priority Four)\"\n intTablesLinkedTo = 4\n End If\n 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE CURRENT BACK END\n GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST, THE LOCAL FILE PATH IN FIELD 'Local_Drive_BackEnd_Path'\n 'IN TABLE 'tblAdminOptions' DOES NOT EXIST, A BACK-END DOES NOT EXIST IN THE SAME FOLDER AS THE OPEN FRONT-END, & THE CURRENT TABLE LINK PATH DOES NOT EXIST,\n 'A DATABASE ERROR HAS OCCURED (PRIORITY FIVE)\n ElseIf blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And blnCurrentlyLinkedBackEndExists = False Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And blnCurrentlyLinkedBackEndExists = False\"\n Debug.Print \"\"\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Neither Network Nor Local Nor Same Folder Nor Currently Linked Back-end Files Exist\"\n Debug.Print \"\"\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"No Back-end Files Exist; a Database Error Has Occurred\"\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo', 'intTablesLinkedTo', & 'intTableLinkStatus'\n ''intTablesLinkedTo' & 'intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Error (Priority Five) - There are no accessible tables to which to establish links\"\n intTablesLinkedTo = 5\n intTableLinkStatus = 5\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Tables Linked to: '\" & intTablesLinkedTo & \"' | '\" & strTablesLinkedTo & \"'\"\n Debug.Print \"\"\n 'EXIT THE PROCEDURE; THERE WERE NO TABLES TO LINK TO, SO A DATABASE ERROR HAS OCCURED\n GoTo CleanExit\n End If\n 'EXIT THE PROCEDURE; THIS COMMAND SHOULD NEVER BE REACHED, SINCE EACH OF THE IF/THEN STATEMENTS END IN 'GoTo CleanExit'\n GoTo CleanExit\nErrorHandler:\n 'IF ANY ERRORS OCCUR, PRINT DETAILS TO IMMEDIATE WINDOW\n Debug.Print \"---------- ERROR ----------\"\n Debug.Print \"Line: \" & Erl\n Debug.Print \"Description: \" & Err.Description\n Debug.Print \"Number: \" & Err.Number\n Debug.Print \"Source: \" & Err.Source\n Debug.Print \"---------- ERROR ----------\"\n Debug.Print \"\"\n 'REF: https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/resume-statement\n 'CONTINUE PROCEDURE FROM THE LINE AFTER THE LINE THAT CAUSED THE LAST ERROR\n Resume\nCleanExit:\n 'CLEAN UP\n i = Empty\n intTablesLinkedTo = Empty\n intRelinkedTableCount = Empty\n intTableLinkStatus = Empty\n db.Close\n Set db = Nothing\n blnNetworkDriveBackEndExists = Empty\n strNetworkDriveBackEndPath = Empty\n strCurrentTableLinkBackEndPath = Empty\n strTableName = Empty\n strTablesLinkedTo = Empty\n blnLocalDriveBackEndExists = Empty\n strLocalDriveBackEndPath = Empty\n blnSameFolderBackEndExists = Empty\n strSameFolderBackEndPath = Empty\n blnCurrentlyLinkedBackEndExists = Empty\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Network: \" & blnNetworkDriveBackEndExists & \" | Local: \" & blnLocalDriveBackEndExists & \" | Same Folder: \" & blnSameFolderBackEndExists & \" | Current: \" & blnCurrentlyLinkedBackEndExists\n Debug.Print \"\"\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"LnkTo | LnkCt | LnkSt\"\n Debug.Print \" \" & Format(intTablesLinkedTo, \"000\") & \" | \" & Format(intRelinkedTableCount, \"000\") & \" | \" & Format(intTableLinkStatus, \"000\")\n Debug.Print \"\"\n 'PRINT PROCEDURE END MESSAGE TO IMMEDIATE WINDOW\n Debug.Print \"Reconnect_Linked_Tables (modUtilities) - END\"\n Debug.Print \"\"\nEnd Function\n<\/code><\/pre>\n
Advertisement
The offending line is 155, which produces error 91 “Object variable or With block variable not set”.<\/p>\n
Advertisement
Well, the ‘db’ variable is declared as Public at the top of the module and Set to “CurrentDb” in the above procedure, so I am at a loss as to what the compiler is looking for here. Option Explicit is also set at the top of the module.<\/p>\n
Where am I going wrong here?<\/p>","upvoteCount":2,"answerCount":7,"datePublished":"2024-02-10T01:18:16.000Z","author":{"@type":"Person","name":"donaldfisher3","url":"https://community.spiceworks.com/u/donaldfisher3"},"acceptedAnswer":{"@type":"Answer","text":"
I learned (painfully) long ago to never assume what VB is going to return …<\/p>\n
Insert 2 lines right before the line that pukes. debug.print db.tabledefs.count and debug.print currentdb.tabledefs.count. See what number each returns.<\/p>\n
Forgive the bad capitalization/syntax … not on a computer ATM<\/p>","upvoteCount":2,"datePublished":"2024-02-10T15:41:10.000Z","url":"https://community.spiceworks.com/t/object-variable-or-with-block-variable-not-set/966815/4","author":{"@type":"Person","name":"kevinhughes2","url":"https://community.spiceworks.com/u/kevinhughes2"}},"suggestedAnswer":[{"@type":"Answer","text":"
In the following procedure, conditions are such that everything above the numbered lines is not executed; however, I suspect that if conditions were such that the code entered into one of those If or ElseIf blocks, the same line(s) would produce the same error.<\/p>\n
Public Function Reconnect_Linked_Tables()\n'CHECK TABLE LINKS AND RESTORE LINKS IF NECESSARY IN PRIORITY OF NETWORK BACK-END, LOCAL BACK-END, BACK-END IN THE SAME FOLDER AS THE OPEN FRONT-END, & FINALLY THE CURRENTLY LINKED\n'BACK-END (IF NEITHER NETWORK NOR LOCAL NOR SAME FOLDER)\n'IF AN ERROR OCCURS, MOVE TO & PROCESS THE 'ErrorHandler:' PROCESS\nOn Error GoTo ErrorHandler\n 'PRINT PROCEDURE START MESSAGE TO IMMEDIATE WINDOW\n Debug.Print \"Reconnect_Linked_Tables (modUtilities) - START:\"\n Debug.Print \"\"\n 'DECLARE AND/OR SET VARIABLES NEEDED FOR THE PROCEDURE\n Set db = CurrentDb\n intTablesLinkedTo = 0\n intRelinkedTableCount = 0\n intTableLinkStatus = 0\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES EXIST, SET 'blnNetworkDriveBackEndExists' TO 'TRUE' & RESTORE NETWORK TABLE LINKS (PRIORITY ONE)\n If Check_Network_Drive_For_BackEnd = True Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Check_Network_Drive_For_BackEnd = True\"\n Debug.Print \"\"\n 'SET 'blnNetworkDriveBackEndExists' TO 'TRUE'\n blnNetworkDriveBackEndExists = True\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Network Back-end File Exists...Connecting\"\n Debug.Print \"\"\n 'COUNT THE NUMBER OF RELINKED TABLES IN THE DATABASE, SAVE THE RESULT TO 'intReLinkedTableCount', SAVE THE LINKED TABLE NAME TO 'strTableName', SET 'intTableLinkStatus' to 1,\n '& SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath'\n For i = 0 To db.TableDefs.Count - 1\n If db.TableDefs(i).Connect <> \"\" Then\n strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n 'IF THE CURRENT LINKED TABLE PATH DOES NOT MATCH THE NETWORK FILE PATH & SINCE THE NETWORK FILE PATH EXISTS, RELINK TABLES TO THE NETWORK FILE PATH\n If strCurrentTableLinkBackEndPath <> strNetworkDriveBackEndPath Then\n db.TableDefs(i).Connect = \";Database=\" + strNetworkDriveBackEndPath\n db.TableDefs(i).RefreshLink\n strTableName = db.TableDefs(i).SourceTableName\n intRelinkedTableCount = intRelinkedTableCount + 1\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 1\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"[\" & intRelinkedTableCount & \"] Table \" & strTableName & \" connected to back-end file '\" & strNetworkDriveBackEndPath & \"'\"\n 'IF THE CURRENT LINKED TABLE PATH MATCHES THE NETWORK FILE PATH, THERE IS NOTHING FURTHER TO DO HERE BUT INCREMENT 'intRelinkedTableCount' BY ZERO (0)\n '& SET 'intTableLinkStatus' TO ZERO (0)\n ElseIf strCurrentTableLinkBackEndPath = strNetworkDriveBackEndPath Then\n intRelinkedTableCount = intRelinkedTableCount + 0\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 0\n Exit For\n End If\n End If\n Next\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strNetworkDriveBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Network Table Links (Priority One)\"\n intTablesLinkedTo = 1\n 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE NETWORK BACK END\n GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST BUT THE LOCAL FILE PATH IN FIELD\n ''Local_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES EXIST, RESTORE LOCAL TABLE LINKS (PRIORITY TWO)\n ElseIf blnNetworkDriveBackEndExists = False And Check_Local_Drive_For_BackEnd = True Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"blnNetworkDriveBackEndExists = False And Check_Local_Drive_For_BackEnd = True\"\n Debug.Print \"\"\n 'SET 'blnLocalDriveBackEndExists' TO 'TRUE'\n blnLocalDriveBackEndExists = True\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Network Back-end File Does Not Exist\"\n Debug.Print \"Local Back-end File Exists...Connecting\"\n Debug.Print \"\"\n 'COUNT THE NUMBER OF RELINKED TABLES IN THE DATABASE, SAVE THE RESULT TO 'intReLinkedTableCount', SAVE THE LINKED TABLE NAME TO 'strTableName', SET 'intTableLinkStatus' to 2,\n '& SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath'\n For i = 0 To db.TableDefs.Count - 1\n If db.TableDefs(i).Connect <> \"\" Then\n strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n 'IF THE CURRENT LINKED TABLE PATH DOES NOT MATCH THE LOCAL FILE PATH & SINCE THE NETWORK FILE PATH DOES NOT EXIST & THE LOCAL FILE PATH EXISTS,\n 'RELINK TABLES TO THE LOCAL FILE PATH\n If strCurrentTableLinkBackEndPath <> strLocalDriveBackEndPath Then\n db.TableDefs(i).Connect = \";Database=\" + strLocalDriveBackEndPath\n db.TableDefs(i).RefreshLink\n strTableName = db.TableDefs(i).SourceTableName\n intRelinkedTableCount = intRelinkedTableCount + 1\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 2\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"[\" & intRelinkedTableCount & \"] Table \" & strTableName & \" connected to back-end file '\" & strLocalDriveBackEndPath & \"'\"\n Debug.Print \"\"\n 'IF THE CURRENT LINKED TABLE PATH MATCHES THE LOCAL FILE PATH, THERE IS NOTHING FURTHER TO DO HERE BUT INCREMENT 'intRelinkedTableCount' BY ZERO (0)\n '& SET 'intTableLinkStatus' TO ZERO (0)\n ElseIf strCurrentTableLinkBackEndPath = strLocalDriveBackEndPath Then\n intRelinkedTableCount = intRelinkedTableCount + 0\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 0\n Exit For\n End If\n End If\n Next\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strLocalDriveBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n 'intTablesLinkedTo POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Local Table Links (Priority Two)\"\n intTablesLinkedTo = 2\n 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE LOCAL BACK END\n GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST AND THE LOCAL FILE PATH IN FIELD 'Local_Drive_BackEnd_Path'\n 'IN TABLE 'tblAdminOptions' DOES NOT EXIST, CHECK FOR A BACK-END FILE IN THE SAME FOLDER AS THE OPEN FRONT-END (PRIORITY THREE)\n ElseIf blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And Check_Same_Folder_For_BackEnd = True Then\n100 'PRINT TO IMMEDIATE WINDOW\n105 Debug.Print \"blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And Check_Same_Folder_For_BackEnd = True\"\n110 Debug.Print \"\"\n115 'SET 'blnSameFolderBackEndExists' TO 'TRUE'\n120 blnSameFolderBackEndExists = True\n125 'PRINT TO IMMEDIATE WINDOW\n130 Debug.Print \"Neither Network Nor Local Back-end Files Exist\"\n135 Debug.Print \"Same Folder Back-end File Exists...Connecting\"\n140 Debug.Print \"\"\n145 'COUNT THE NUMBER OF RELINKED TABLES IN THE DATABASE, SAVE THE RESULT TO 'intReLinkedTableCount', SAVE THE LINKED TABLE NAME TO 'strTableName', SET 'intTableLinkStatus' to 3,\n150 '& SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath'\n155 For i = 0 To db.TableDefs.Count - 1\n160 If db.TableDefs(i).Connect <> \"\" Then\n165 strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n170 'IF THE CURRENT LINKED TABLE PATH DOES NOT MATCH THE SAME FOLDER FILE PATH & SINCE THE NETWORK & LOCAL FILE PATHS DO NOT EXIST & THE SAME FOLDER FILE PATH EXISTS,\n175 'RELINK TABLES TO THE SAME FOLDER FILE PATH\n180 If strCurrentTableLinkBackEndPath <> strSameFolderBackEndPath Then\n185 db.TableDefs(i).Connect = \";Database=\" + strSameFolderBackEndPath\n190 db.TableDefs(i).RefreshLink\n195 strTableName = db.TableDefs(i).SourceTableName\n200 intRelinkedTableCount = intRelinkedTableCount + 1\n205 ''intTableLinkStatus' POSSIBLE VALUES:\n210 '1 = NETWORK\n215 '2 = LOCAL\n220 '3 = SAME FOLDER\n225 '4 = CURRENT\n230 '5 = ERROR\n235 intTableLinkStatus = 3\n240 'PRINT TO IMMEDIATE WINDOW\n245 Debug.Print \"[\" & intRelinkedTableCount & \"] Table \" & strTableName & \" connected to back-end file '\" & strSameFolderBackEndPath & \"'\"\n250 Debug.Print \"\"\n255 'IF THE CURRENT LINKED TABLE PATH MATCHES THE SAME FOLDER FILE PATH, THERE IS NOTHING FURTHER TO DO HERE BUT INCREMENT 'intRelinkedTableCount' BY ZERO (0)\n260 '& SET 'intTableLinkStatus' TO ZERO (0)\n265 ElseIf strCurrentTableLinkBackEndPath = strSameFolderBackEndPath Then\n270 intRelinkedTableCount = intRelinkedTableCount + 0\n275 ''intTableLinkStatus' POSSIBLE VALUES:\n280 '1 = NETWORK\n285 '2 = LOCAL\n290 '3 = SAME FOLDER\n295 '4 = CURRENT\n300 '5 = ERROR\n305 intTableLinkStatus = 0\n310 Exit For\n315 End If\n320 End If\n325 Next\n330 'RUN THE 'Check_Network_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE NETWORK FILE PATH\n335 Call Check_Network_Drive_For_BackEnd\n340 'RUN THE 'Check_Local_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE LOCAL FILE PATH\n345 Call Check_Local_Drive_For_BackEnd\n350 'IF THE SAME FOLDER PATH MATCHES THE NETWORK FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n355 If strSameFolderBackEndPath = strNetworkDriveBackEndPath Then\n360 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n365 Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n370 Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n375 Debug.Print \"\"\n380 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n385 ''intTablesLinkedTo' POSSIBLE VALUES:\n390 '1 = NETWORK\n395 '2 = LOCAL\n400 '3 = SAME FOLDER\n405 '4 = CURRENT\n410 '5 = ERROR\n415 strTablesLinkedTo = \"Network Table Links (Priority One)\"\n420 intTablesLinkedTo = 1\n425 'IF THE SAME FOLDER PATH MATCHES THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n430 ElseIf strSameFolderBackEndPath = strLocalDriveBackEndPath Then\n435 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n440 Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n445 Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n450 Debug.Print \"\"\n455 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n460 ''intTablesLinkedTo' POSSIBLE VALUES:\n465 '1 = NETWORK\n470 '2 = LOCAL\n475 '3 = SAME FOLDER\n480 '4 = CURRENT\n485 '5 = ERROR\n490 strTablesLinkedTo = \"Local Table Links (Priority Two)\"\n495 intTablesLinkedTo = 2\n500 'IF THE SAME FOLDER PATH DOES NOT MATCH THE NETWORK FILE PATH OR THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n505 ElseIf (strSameFolderBackEndPath <> strNetworkDriveBackEndPath) And (strSameFolderBackEndPath <> strLocalDriveBackEndPath) Then\n510 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n515 Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n520 Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n525 Debug.Print \"\"\n530 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n535 ''intTablesLinkedTo' POSSIBLE VALUES:\n540 '1 = NETWORK\n545 '2 = LOCAL\n550 '3 = SAME FOLDER\n555 '4 = CURRENT\n560 '5 = ERROR\n565 strTablesLinkedTo = \"Same Folder Table Links (Priority Three)\"\n570 intTablesLinkedTo = 3\n575 End If\n580 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE SAME FOLDER BACK END\n585 GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST, THE LOCAL FILE PATH IN FIELD 'Local_Drive_BackEnd_Path'\n 'IN TABLE 'tblAdminOptions' DOES NOT EXIST, & A BACK-END FILE IN THE SAME FOLDER AS THE OPEN FRONT-END DOES NOT EXIST, CHECK THE CURRENT TABLE LINK PATH FOR\n 'VALIDITY & RETAIN TABLE LINKS (PRIORITY FOUR)\n ElseIf blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And Check_Current_Table_Link_Paths_For_BackEnd = True Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And Check_Current_Table_Link_Paths_For_BackEnd = True\"\n Debug.Print \"\"\n 'SET 'blnCurrentlyLinkedBackEndExists' TO 'TRUE'\n blnCurrentlyLinkedBackEndExists = True\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Neither Network Nor Local Nor Same Folder Back-end Files Exist\"\n Debug.Print \"Currently Linked Back-end File Exists...Retaining Links\"\n Debug.Print \"\"\n 'SAVE THE CURRENT LINKED TABLE PATH TO 'strCurrentTableLinkBackEndPath' & SET 'intTableLinkStatus' to 4\n For i = 0 To db.TableDefs.Count - 1\n If db.TableDefs(i).Connect <> \"\" Then\n strCurrentTableLinkBackEndPath = Mid(db.TableDefs(i).Connect, 11)\n ''intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n intTableLinkStatus = 4\n End If\n Next\n 'RUN THE 'Check_Network_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE NETWORK FILE PATH\n Call Check_Network_Drive_For_BackEnd\n 'RUN THE 'Check_Local_Drive_For_BackEnd' PROCEDURE AGAIN NOW THAT WE ARE RELINKED TO A BACK-END TO DETERMINE WHETHER THE SAME FOLDER PATH IS THE SAME AS THE LOCAL FILE PATH\n Call Check_Local_Drive_For_BackEnd\n 'IF THE SAME FOLDER PATH MATCHES THE NETWORK FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n If strCurrentTableLinkBackEndPath = strNetworkDriveBackEndPath Then\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Network Table Links (Priority One)\"\n intTablesLinkedTo = 1\n 'IF THE SAME FOLDER PATH MATCHES THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ElseIf strCurrentTableLinkBackEndPath = strLocalDriveBackEndPath Then\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Local Table Links (Priority Two)\"\n intTablesLinkedTo = 2\n 'IF THE SAME FOLDER PATH DOES NOT MATCH THE NETWORK FILE PATH OR THE LOCAL FILE PATH, SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ElseIf (strCurrentTableLinkBackEndPath <> strNetworkDriveBackEndPath) And (strCurrentTableLinkBackEndPath <> strLocalDriveBackEndPath) Then\n 'PRINT OLD & NEW LINKED TABLE PATHS TO IMMEDIATE WINDOW\n Debug.Print \"Old Linked Table Path: \" & strCurrentTableLinkBackEndPath\n Debug.Print \"New Linked Table Path: \" & strSameFolderBackEndPath\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo' & 'intTablesLinkedTo'\n ''intTablesLinkedTo' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Current Table Links (Priority Four)\"\n intTablesLinkedTo = 4\n End If\n 'EXIT THE PROCEDURE, SINCE WE ARE NOW CONNECTED TO THE CURRENT BACK END\n GoTo CleanExit\n 'IF THE NETWORK FILE PATH IN FIELD 'Network_Drive_BackEnd_Path' IN TABLE 'tblAdminOptions' DOES NOT EXIST, THE LOCAL FILE PATH IN FIELD 'Local_Drive_BackEnd_Path'\n 'IN TABLE 'tblAdminOptions' DOES NOT EXIST, A BACK-END DOES NOT EXIST IN THE SAME FOLDER AS THE OPEN FRONT-END, & THE CURRENT TABLE LINK PATH DOES NOT EXIST,\n 'A DATABASE ERROR HAS OCCURED (PRIORITY FIVE)\n ElseIf blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And blnCurrentlyLinkedBackEndExists = False Then\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"blnNetworkDriveBackEndExists = False And blnLocalDriveBackEndExists = False And blnSameFolderBackEndExists = False And blnCurrentlyLinkedBackEndExists = False\"\n Debug.Print \"\"\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Neither Network Nor Local Nor Same Folder Nor Currently Linked Back-end Files Exist\"\n Debug.Print \"\"\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"No Back-end Files Exist; a Database Error Has Occurred\"\n Debug.Print \"\"\n 'SET VALUES FOR 'strTablesLinkedTo', 'intTablesLinkedTo', & 'intTableLinkStatus'\n ''intTablesLinkedTo' & 'intTableLinkStatus' POSSIBLE VALUES:\n '1 = NETWORK\n '2 = LOCAL\n '3 = SAME FOLDER\n '4 = CURRENT\n '5 = ERROR\n strTablesLinkedTo = \"Error (Priority Five) - There are no accessible tables to which to establish links\"\n intTablesLinkedTo = 5\n intTableLinkStatus = 5\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Tables Linked to: '\" & intTablesLinkedTo & \"' | '\" & strTablesLinkedTo & \"'\"\n Debug.Print \"\"\n 'EXIT THE PROCEDURE; THERE WERE NO TABLES TO LINK TO, SO A DATABASE ERROR HAS OCCURED\n GoTo CleanExit\n End If\n 'EXIT THE PROCEDURE; THIS COMMAND SHOULD NEVER BE REACHED, SINCE EACH OF THE IF/THEN STATEMENTS END IN 'GoTo CleanExit'\n GoTo CleanExit\nErrorHandler:\n 'IF ANY ERRORS OCCUR, PRINT DETAILS TO IMMEDIATE WINDOW\n Debug.Print \"---------- ERROR ----------\"\n Debug.Print \"Line: \" & Erl\n Debug.Print \"Description: \" & Err.Description\n Debug.Print \"Number: \" & Err.Number\n Debug.Print \"Source: \" & Err.Source\n Debug.Print \"---------- ERROR ----------\"\n Debug.Print \"\"\n 'REF: https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/resume-statement\n 'CONTINUE PROCEDURE FROM THE LINE AFTER THE LINE THAT CAUSED THE LAST ERROR\n Resume\nCleanExit:\n 'CLEAN UP\n i = Empty\n intTablesLinkedTo = Empty\n intRelinkedTableCount = Empty\n intTableLinkStatus = Empty\n db.Close\n Set db = Nothing\n blnNetworkDriveBackEndExists = Empty\n strNetworkDriveBackEndPath = Empty\n strCurrentTableLinkBackEndPath = Empty\n strTableName = Empty\n strTablesLinkedTo = Empty\n blnLocalDriveBackEndExists = Empty\n strLocalDriveBackEndPath = Empty\n blnSameFolderBackEndExists = Empty\n strSameFolderBackEndPath = Empty\n blnCurrentlyLinkedBackEndExists = Empty\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"Network: \" & blnNetworkDriveBackEndExists & \" | Local: \" & blnLocalDriveBackEndExists & \" | Same Folder: \" & blnSameFolderBackEndExists & \" | Current: \" & blnCurrentlyLinkedBackEndExists\n Debug.Print \"\"\n 'PRINT TO IMMEDIATE WINDOW\n Debug.Print \"LnkTo | LnkCt | LnkSt\"\n Debug.Print \" \" & Format(intTablesLinkedTo, \"000\") & \" | \" & Format(intRelinkedTableCount, \"000\") & \" | \" & Format(intTableLinkStatus, \"000\")\n Debug.Print \"\"\n 'PRINT PROCEDURE END MESSAGE TO IMMEDIATE WINDOW\n Debug.Print \"Reconnect_Linked_Tables (modUtilities) - END\"\n Debug.Print \"\"\nEnd Function\n<\/code><\/pre>\nThe offending line is 155, which produces error 91 “Object variable or With block variable not set”.<\/p>\n
Well, the ‘db’ variable is declared as Public at the top of the module and Set to “CurrentDb” in the above procedure, so I am at a loss as to what the compiler is looking for here. Option Explicit is also set at the top of the module.<\/p>\n
Where am I going wrong here?<\/p>","upvoteCount":2,"datePublished":"2024-02-10T01:18:16.000Z","url":"https://community.spiceworks.com/t/object-variable-or-with-block-variable-not-set/966815/1","author":{"@type":"Person","name":"donaldfisher3","url":"https://community.spiceworks.com/u/donaldfisher3"}},{"@type":"Answer","text":"