Solved

Supply Password to Back End - Access 07 - VBA

Posted on 2013-01-05
33
507 Views
Last Modified: 2013-03-22
Hello,

I have an access 2007 database that has a password protected back end. I distribute the application using the MS Package Solution. I have a clean version of the back end that the application links to at first run, and I use an identical version of the back end for development, so the front end is not linked to the user's back end prior to install.

The problem I have is that on first run the application prompts the user for the back end password, despite having the following function in place that runs first in autoexec to relink all pertinent tables and supply the password. This function works perfectly to relink the tables, yet the user is still asked for the password.

How can I get past the initial password prompt without linking to the clean back end prior to install?

- Is it necessary to also place the password in the .connect?
- Is specifying the current database prior to relinking the tables prompting the password request?
- tblBEPathName is the only table that is referenced prior to supplying the password and linking the back end tables, and it resides in the front end. Does referencing a table that is not a linked table still produce the password prompt?

Thank you!

Public Function UpdateReLink()
    
    Dim dbs As Database
    Dim dbsLink As DAO.Database
    Dim tdf As TableDef
    Dim strPathName As String
    Dim strFilename As String
    
    If DCount("[txtPath]", "tblBEPathName", "[Active]=Yes") = 0 Then Exit Function
    If CurrentProject.AllForms("DetectIdleTime").IsLoaded = True Then DoCmd.Close acForm, "DetectIdleTime", acSaveNo

    strPathName = DLookup("[txtPath]", "tblBEPathName", "[Active]=Yes")
    strFilename = DLookup("[txtFileName]", "tblBEPathName", "[Active]=Yes")
    If StrComp(Right(strPathName, 1), "\", vbTextCompare) <> 0 Then strPathName = strPathName & "\"
    Set dbs = CurrentDb()
    Set dbsLink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwd=12345")

    On Error GoTo UpdateRelink_Error
    Err = 0
    For Each tdf In dbs.TableDefs
        If Len(tdf.Connect) > 0 Then
            SysCmd SYSCMD_SETSTATUS, "Linking " & tdf.Name
            tdf.Connect = ";DATABASE=" & strPathName & strFilename
            tdf.RefreshLink
        End If
    Next tdf
    SysCmd acSysCmdClearStatus
    DoCmd.RunMacro "Terminal ID: Get Current"
    DoCmd.OpenForm "DetectIdleTime", acNormal, , , , acHidden
    Exit Function
    
UpdateRelink_Error:
...
End Function

Open in new window

0
Comment
Question by:BillMoody
  • 16
  • 12
  • 3
33 Comments
 
LVL 26

Expert Comment

by:MacroShadow
ID: 38747504
You must certainly supply the password when connecting the backend. Replace your .connect line with this:
tdf.Connect = ";DATABASE=" & strPathName & strFilename & ";PWD=" & "12345"

Open in new window

0
 
LVL 84
ID: 38748400
Or just remove and recreate the links, and select to save the password when you do so.
0
 

Author Comment

by:BillMoody
ID: 38752283
Thanks for the input MacroShadow, but unfortunately that does not work, it still asks for the password.

LSM, as I mentioned in my original post, the client back end is not linked to their front end until install, so I cannot remove and recreate the links, the password must be supplied upon install.

This is a frustrating one!
0
 
LVL 26

Expert Comment

by:MacroShadow
ID: 38752317
What is the point in this line?
Set dbsLink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwd=12345")
0
 
LVL 84
ID: 38752461
I think your issue is because you've left the TableDefs in place when shipping, and access will try and reconnect (and will require you to supply the password).

In cases like this, it's often best to have a local table to store the pertinent information to rebuild the links - the LocalTableName, SourceTableName, etc etc - and then use that when creating your links. You'd have to create the TableDefs (i.e. the Links) and supply the full connection string.

This link should show you how:

http://www.accessmvp.com/djsteele/DSNLessLinks.html
0
 

Author Comment

by:BillMoody
ID: 38810245
Sorry for the delay in responding, I have many projects in development and was just able to get back to this one.

I removed all table links prior to installation (including the hidden TMP links) and upon first run during client installation the app automatically relinks the tables (sans the TMP links) and supplies and saves the appropriate password. Unfortunately, despite having no table links to the back end, I am still getting a password prompt.

What am I missing?
0
 
LVL 84
ID: 38810597
Is it possible you're using pass-through queries, which would maintain those links?

Can you show a screenshot of the error?
0
 

Author Comment

by:BillMoody
ID: 38811389
Thanks LSMConsulting.

No, I am not using pass-through queries.

I am not getting an error message, I am just getting a password input prompt which indicates that the password is required (this appears after all tables have been linked). If the user clicks past the password prompt without inputting anything everything works as normal, which seems to indicate that the password is being correctly supplied by the table linking routine.
0
 
LVL 26

Expert Comment

by:MacroShadow
ID: 38811460
Try removing the following line:
Set dbsLink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwd=12345") 

Open in new window

0
 
LVL 84
ID: 38811750
So are you now using the technique I suggested earlier (i.e. storing the table names in a local table, and looping through that table to create your links as needed)? If you are, then please show us the code you're using to manage that.

If you're not, then I don't see how you could have "removed all table links" - the code in your original post loops through all the linked tables in the FE and rebuilds the connect, therefore you could not have removed those links ...
0
 

Author Comment

by:BillMoody
ID: 38812428
Yes LSM, I have created a table containing the table names that I need to link and l loop through it at install to relink the tables. Unfortunately I do not have access to the computer that contains the code at the moment, but I will post it this evening or first thing this morning.

MacroShadow, that line of code is required when creating a new link to a table using the process I used to link the tables, as you cannot supply the password in the link syntax. As I mentioned above, I will post the code as soon as I can get to my computer so you guys can see it.

Thanks so much to both of you!
0
 
LVL 84

Accepted Solution

by:
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 250 total points
ID: 38812544
You can define the  database password in the link syntax:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;
Jet OLEDB:Database Password=MyDbPassword;

from here: http://www.connectionstrings.com/access

You might try that, and remove the line as macroshadow suggested.
0
 

Author Comment

by:BillMoody
ID: 38812678
OK, here is the code that I am currently using on first run to relink the tables on the users machine...

I am not sure if your last suggestion fits in with my current approach, but I will dig into that. Thank you!

Public Function FirstRunLinkTables()
 
    Dim MyDB As Database
    Dim MyRS As Recordset
    Dim dbslink As DAO.Database
    Dim strPathName As String
    Dim strFilename As String
    Dim ProgressTot As Integer
    Set MyDB = CurrentDb
    Set MyRS = MyDB.OpenRecordset("tblLinkedTables")
    
    strPathName = DLookup("[txtPath]", "tblBEPathName", "[Active]=Yes")
    strFilename = DLookup("[txtFileName]", "tblBEPathName", "[Active]=Yes")
    If StrComp(Right(strPathName, 1), "\", vbTextCompare) <> 0 Then strPathName = strPathName & "\"
    Set dbslink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwdXXXXX")
    
    ProgressTot = DCount("[TableName]", "tblLinkedTables", "[MyLinks]=True")
    DoCmd.OpenForm "First Run: Preparing DBase Message", acNormal
    Forms![First Run: Preparing DBase Message]!Message = "Updating Table Definitions"
    Forms![First Run: Preparing DBase Message]!ProgressBar = 0
    Forms![First Run: Preparing DBase Message]!ProgressBar.Max = ProgressTot
    Forms![First Run: Preparing DBase Message].Repaint
    DoCmd.Hourglass True
    
    On Error GoTo ErrorHandler
    
    MyRS.MoveFirst
    Do Until MyRS.EOF
        If MyRS![MyLinks] = True Then
            DoCmd.TransferDatabase acLink, "Microsoft Access", strPathName & strFilename, acTable, MyRS![TableName], MyRS![TableName], , True
            MyRS.Edit
            MyRS![Linked] = True
            MyRS.Update
            If Forms![First Run: Preparing DBase Message]!ProgressBar + 1 <= Forms![First Run: Preparing DBase Message]!ProgressBar.Max Then
                Forms![First Run: Preparing DBase Message]!ProgressBar = Forms![First Run: Preparing DBase Message]!ProgressBar + 1
                Forms![First Run: Preparing DBase Message].Repaint
                DoEvents
            End If
        End If
        MyRS.MoveNext
    Loop
    
    If CurrentProject.AllForms("First Run: Preparing DBase Message").IsLoaded = True Then _
        DoCmd.Close acForm, "First Run: Preparing DBase Message", acSaveNo
    Set MyRS = Nothing
    MyDB.Close
    dbslink.Close
    DoCmd.Hourglass False

    Exit Function

ErrorHandler:
    If CurrentProject.AllForms("First Run: Preparing DBase Message").IsLoaded = True Then _
            DoCmd.Close acForm, "First Run: Preparing DBase Message", acSaveNo
    MsgBox "Missing data File or network problem. " & Chr(13) & Chr(13) & "Unable to connect to data." & Chr(13) & Chr(13) & _
        MyRS![TableName] & vbCr & Chr(13) & "CONTACT YOUR NETWORK ADMINISTRATOR", vbCritical + vbOKOnly, "XXX"
    Set MyRS = Nothing
    MyDB.Close
    dbslink.Close
    DoCmd.Hourglass False
    DoCmd.Quit acQuitSaveNone
    
End Function

Open in new window


And here is the code I am using to create the table of linked table names and then unlink the tables prior to creating the install package.

Public Function CreateLinksTableNewInstall() 'Removes links for fresh install.
 
    Dim tdf As TableDef
    Dim MyDB As Database
    Dim MyRS As Recordset
    Dim ProgressTot As Integer
    Dim ProgressTot2 As Integer
    Set MyDB = CurrentDb
    Set MyRS = MyDB.OpenRecordset("tblLinkedTables")
    
    On Error GoTo ErrorHandler
    DoCmd.Hourglass True
    
    ProgressTot = DCount("[TableName]", "tblLinkedTables")
    ProgressTot2 = DCount("[TableName]", "tblLinkedTables", "[MyLinks]=True")

    'Clear Links Table
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Link Back End: Clear Linked Tables", acViewNormal
    DoCmd.Close acQuery, "Link Back End: Clear Linked Tables", acSaveNo
    DoCmd.SetWarnings True

    'Create Links Table
    DoCmd.OpenForm "First Run: Preparing DBase Message", acNormal
    Forms![First Run: Preparing DBase Message]!Message = "Creating Links Table"
    Forms![First Run: Preparing DBase Message]!ProgressBar = 0
    Forms![First Run: Preparing DBase Message]!ProgressBar.Max = ProgressTot
    Forms![First Run: Preparing DBase Message].Repaint
    For Each tdf In MyDB.TableDefs
        If Len(tdf.Connect) > 0 Then
            MyRS.AddNew
            MyRS![TableName] = tdf.Name
            MyRS![Linked] = True
            If InStr(1, tdf.Name, "TMP") = 0 Then MyRS![MyLinks] = True Else MyRS![MyLinks] = False
            MyRS.Update
            If Forms![First Run: Preparing DBase Message]!ProgressBar + 1 <= Forms![First Run: Preparing DBase Message]!ProgressBar.Max Then
                Forms![First Run: Preparing DBase Message]!ProgressBar = Forms![First Run: Preparing DBase Message]!ProgressBar + 1
                Forms![First Run: Preparing DBase Message].Repaint
                DoEvents
            End If
        End If
    Next tdf
    
    On Error Resume Next
    
    'Remove Table Links
    Forms![First Run: Preparing DBase Message]!Message = "Removing Table Definitions"
    Forms![First Run: Preparing DBase Message]!ProgressBar = 0
    Forms![First Run: Preparing DBase Message]!ProgressBar.Max = ProgressTot2
    Forms![First Run: Preparing DBase Message].Repaint
    MyRS.MoveFirst
    Do Until MyRS.EOF
        DoCmd.DeleteObject acTable, MyRS![TableName]
        MyRS.Edit
        MyRS![Linked] = False
        MyRS.Update
        MyRS.MoveNext
        If Forms![First Run: Preparing DBase Message]!ProgressBar + 1 <= Forms![First Run: Preparing DBase Message]!ProgressBar.Max Then
            Forms![First Run: Preparing DBase Message]!ProgressBar = Forms![First Run: Preparing DBase Message]!ProgressBar + 1
            Forms![First Run: Preparing DBase Message].Repaint
            DoEvents
        End If
    Loop
    
    On Error GoTo ErrorHandler

    If CurrentProject.AllForms("First Run: Preparing DBase Message").IsLoaded = True Then _
        DoCmd.Close acForm, "First Run: Preparing DBase Message", acSaveNo
    Set MyRS = Nothing
    MyDB.Close
    DoCmd.Hourglass False
    
    Exit Function

ErrorHandler:
    If CurrentProject.AllForms("First Run: Preparing DBase Message").IsLoaded = True Then _
        DoCmd.Close acForm, "First Run: Preparing DBase Message", acSaveNo
    Set MyRS = Nothing
    MyDB.Close
    DoCmd.Hourglass False
    MsgBox "Error: " & CStr(Err.Number) & vbNewLine & Err.Description

End Function

Open in new window

0
 

Author Comment

by:BillMoody
ID: 38928699
Hey Guys,

I changed the code as you suggested (below) and after the code executes, I still get the dreaded password request with the first query that runs.

The dbslink code that you both referenced is necessary to avoid a password request for each and every table linked. I removed it when I changed to the new .open syntax, but had to return it in order to avoid the password prompts.

I am stumped. I hope you have another idea for me.

Thank you!

Public Function FirstRunLinkTables()
 
    Dim strPathName As String
    Dim strFilename As String
    Dim ProgressTot As Integer
    Dim dbslink As DAO.Database
    Dim Cnnct1 As ADODB.Connection
    Set Cnnct1 = New ADODB.Connection
    Dim MyDB As Database
    Dim MyRS As Recordset
 
    strPathName = DLookup("[txtPath]", "tblBEPathName", "[Active]=Yes")
    strFilename = DLookup("[txtFileName]", "tblBEPathName", "[Active]=Yes")
    If StrComp(Right(strPathName, 1), "\", vbTextCompare) <> 0 Then strPathName = strPathName & "\"
    
    With Cnnct1
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Properties("Data Source") = strPathName & strFilename
    .Properties("Jet OLEDB:Database Password") = "MyPassword"
    .Open
    End With
    
    Set MyDB = CurrentDb
    Set MyRS = MyDB.OpenRecordset("tblLinkedTables")
    Set dbslink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwd=ThePassword")

    ProgressTot = DCount("[TableName]", "tblLinkedTables", "[MyLinks]=True")
    DoCmd.OpenForm "First Run: Preparing DBase Message", acNormal
    Forms![First Run: Preparing DBase Message]!Message = "Updating Table Definitions"
    Forms![First Run: Preparing DBase Message]!ProgressBar = 0
    Forms![First Run: Preparing DBase Message]!ProgressBar.Max = ProgressTot
    Forms![First Run: Preparing DBase Message].Repaint
    DoCmd.Hourglass True
    
    On Error GoTo ErrorHandler
    
    MyRS.MoveFirst
    Do Until MyRS.EOF
        If MyRS![MyLinks] = True Then
            DoCmd.TransferDatabase acLink, "Microsoft Access", strPathName & strFilename, acTable, MyRS![TableName], MyRS![TableName], , True
            MyRS.Edit
            MyRS![Linked] = True
            MyRS.Update
            If Forms![First Run: Preparing DBase Message]!ProgressBar + 1 <= Forms![First Run: Preparing DBase Message]!ProgressBar.Max Then
                Forms![First Run: Preparing DBase Message]!ProgressBar = Forms![First Run: Preparing DBase Message]!ProgressBar + 1
                Forms![First Run: Preparing DBase Message].Repaint
                DoEvents
            End If
        End If
        MyRS.MoveNext
    Loop
    
    If CurrentProject.AllForms("First Run: Preparing DBase Message").IsLoaded = True Then _
        DoCmd.Close acForm, "First Run: Preparing DBase Message", acSaveNo
    Set MyRS = Nothing
    Cnnct1.Close
    Set Cnnct1 = Nothing
    MyDB.Close
    Set MyDB = Nothing
    dbslink.Close
    Set dbslink = Nothing
    DoCmd.Hourglass False

    Exit Function

Open in new window


**Edited by Netminder 21 Mar 2013**
0
 
LVL 84
ID: 38929439
I'm assuming that "tblBEPathName" is a LOCAL table in the FE?

What's the purpose of this:
    With Cnnct1
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Properties("Data Source") = strPathName & strFilename
    .Properties("Jet OLEDB:Database Password") = "MyPassword"
    .Open
    End With

Open in new window

And this:

Set dbslink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwd=ThePassword")

Open in new window


Looks like you're creating this connection and doing nothing with it.

Finally: I'm not sure you can use TransferDatabase to create links to a password protected database. I've never tried it - I always use code like you'd find at the link I provided earlier - but a quick search seems to prove that out (several MVPs have indicated that you cannot do so).

**Edited by Netminder 21 Mar 2013**
0
IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:BillMoody
ID: 38930171
Hello LSM,

I very much appreciate your help.

Yes, tblBackEndPathname is a front end table that stores the location of the back end on the users machine, as this is a multi workstation application and the back end can reside anywhere on a peer to peer network.

This...

Set dbslink = DAO.DBEngine(0).OpenDatabase(strPathName & strFilename, False, False, ";pwd=MyPassword")

...provides the password for the TransferDatabase process, since that syntax does not allow for the inclusion of a password, this line provides it. It actually works perfectly, in that the tables get linked without issue, and without having to provide the password at each table link iteration. The problem I have is that after all of the tables are linked, the user gets a single prompt for a dbase password (when the first query runs). But, if the user simply selects cancel without providing a password, the dbase functions without issue going forward. Thus, I concluded that the linking function was working fine, but that I had to supply a password when I initially opened the back end, and therefore I had hoped that this...

    With Cnnct1
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Properties("Data Source") = strPathName & strFilename
    .Properties("Jet OLEDB:Database Password") = "MyPassword"
    .Open
    End With

... would provide that password.

You mentioned that I am creating a connection and doing nothing with it. Today I will try embedding my table link process (or some derivative thereof) within the above routine that creates the connection and see if I can get it to work. I will also take another look at the link you provided.

I still have a few hairs left.

If you have ideas please advise. And thanks again for your help.
0
 
LVL 84
ID: 38930222
Again: I would encourage you to NOT  use TransferDatabase, but instead to create the table links directly (see the link I supplied). This is the way I've done it for years, and it works with any type of db.
0
 

Author Comment

by:BillMoody
ID: 38930240
Gotcha. Thanks. I will try it today.
0
 

Author Comment

by:BillMoody
ID: 38955834
Ok, I have rewritten this code 100 times using both the TransferDatabase method initially (which I no longer use as suggested by LSM) and currently, using the tabledefs.append method. Both approaches seem to have worked equally well to create the linked tables and to store the back end password with the link. However, after the code executes and creates all of the table links (I have verified that the BE password is indeed contained in the MSysObjects table on the front end for each link created) and AutoExec subsequently runs a query, Access still promptly asks the user for the password.

Am I missing something? Or, does Access ask the user for a password on first run even if the backend was opened with the correct password and the links were created with and are stored with the correct password? I even tried adding the password to the back end via code at install, and again, after the linking code runs, it asks the user for the password.

I need to keep the back end password protected, but do not want the user to have to input the password when they initially run the app.

Also, given that inherent ease of cracking Access password security, do you have any other suggestions for securing the back end?

Thank you for your continued assistance.

Here is the pertinent linking code...

Set tdf = MyDB.CreateTableDef(MyRS![TableName])
tdf.Connect = ";DATABASE=" & strPathName & strFilename & ";PWD=Password"
tdf.SourceTableName = MyRS![TableName]
MyDB.TableDefs.Append tdf
MyDB.TableDefs(MyRS![TableName]).RefreshLink
MyDB.TableDefs.Refresh
0
 
LVL 84
ID: 38957270
Can you show a screenshot of the password prompt?
0
 

Author Comment

by:BillMoody
ID: 38960098
Here you go LSM. It appears twice, sometimes three times on a new install. Interestingly, if you hit cancel without inputting a password, the application runs fine.


Screen Shot
0
 

Author Comment

by:BillMoody
ID: 38967850
I have tried all angles for this install... 1) With intact table links that are refreshed on first run; 2) With intact table links that are simply verified on first run, and; 3) With no table links and adding them on first run. With each one I get a password prompt once autoexec runs a query against a linked table.

Surely this is not default behavior for Access, as providing the back end password to the end user would render protection of the dbase back end useless for developers.

I question whether the MS Developers Toolkit installer is the culprit...

I do application updates by sending a new front end to the client machine via FTP from my website, with table links intact, and the links are successfully verified and refreshed without a password prompt.

Yet, installation of the app with links intact results in the prompt, despite the fact that the process of verifying or refreshing the links is identical within my app, sans the install.

Does the installer reset an internal switch that requires the user to input the dbase password the first time a password protected back end is accessed? Sounds kind of crazy to me, but it also makes sense given the circumstances.

???

Thanks!
0
 
LVL 84
ID: 38980663
Have you performed maintenance on the database?

First, make a backup.

Do a Compact/repair.

Now do a Decompile - build a shortcut with this as the Target: "full path to msaccess.exe" "full path to your db" \decompile

After decompile, open the VBA Editor and click debug - Compile. Fix any errors, continue until the menuitem is disabled.

Compact again.

You might also consider doing the above, and then transferring everything to a new, blank database container. After doing this, compact again.

Also be sure that your Office and Windows installs are fully up to date.
0
 

Author Comment

by:BillMoody
ID: 38983881
All updates current, and compact and repair done frequently. Had not done a decompile so tried that, and also placed all into a new container as well. Unfortunately, I am still getting the password prompt. Ugh.

Also, you did not respond to my question about the installer.... same exact code gets a password prompt at install and but not during update... is it feasible that the installer is resetting some internal flag? It sounds odd, but the evidence seems to be pointing to that. Thoughts?

Thanks!
0
 
LVL 84
ID: 38989615
No, the installer has no impact on files it contains, and would not reset any flags. This is coming from the backend database apparently.

How do you ship the backend db? Do you ship a blank db, or do you create it using DAO?

If you ship the backend db, have you tried re-creating that backend?

If you build from code, can you show the full code block where you create the backend?
0
 

Author Comment

by:BillMoody
ID: 38989840
Ok. I didn't think so but it sure appears to be related... good to know.

I ship the blank back ends (a training back end and a master back end) bundled in the install package. I get the password prompt at first run after successfully linking to the training BE using whatever approach I try, but when the app refreshes the links to switch from the training BE to the master BE I get no prompt. Likewise, when I update the font end which is FTP'd from my web site without an installer and refresh links, I get no password prompt.

I have not tried recreating the back end. I had considered that, but as it is my understanding that the back end does not store any table related password information beyond the BE encryption password I have not tried it yet.

I will copy all of the back end tables into a new container today and see if that works.

Thanks LSM. I truly appreciate your continued patience with this question as it has frustrated me for a few months and has stalled my distribution plans.
0
 
LVL 84
ID: 38993776
I have not tried recreating the back end. I had considered that, but as it is my understanding that the back end does not store any table related password information beyond the BE encryption password I have not tried it yet.
If I'm understanding you correctly, the BE is password-protected - is that correct? If it is, then the BE database would certainly play a role in this. Recreate this and see how it works.
0
 

Author Comment

by:BillMoody
ID: 39001284
Yes, the back ends are password protected.

I moved all of the tables from my back end dbases into new containers, and the install is still asking for a password. I am at a loss a for what to try at this point.
0
 
LVL 84
ID: 39001599
I am at a loss a for what to try at this point.
Me too. You could upload the databases here and we can take a look, but other than that I'm not sure.
0
 

Author Comment

by:BillMoody
ID: 39010063
I've requested that this question be deleted for the following reason:

Inadvertently included back end password in a post.
0
 

Author Closing Comment

by:BillMoody
ID: 39011264
I found the problem. As it turns out, it was completely unrelated to the table linking process. It was in an old routine I had written long ago that copied some tables between databases. I had written it long before I password protected the back end, so it did not supply the password. I was so focused on the linking process that I didn't stop to look elsewhere sufficiently, but when I stepped through the processes one at a time I found it. Silly, but at least the problem is solved.

Thank you so much for your time and patience LSM. It is much appreciated.

NetMinder: Thanks for the edits, that resolved my concerns and I am fine with the post remaining.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

In the previous article, Using a Critera Form to Filter Records (http://www.experts-exchange.com/A_6069.html), the form was basically a data container storing user input, which queries and other database objects could read. The form had to remain op…
In Debugging – Part 1, you learned the basics of the debugging process. You learned how to avoid bugs, as well as how to utilize the Immediate window in the debugging process. This article takes things to the next level by showing you how you can us…
In Microsoft Access, learn different ways of passing a string value within a string argument. Also learn what a “Type Mis-match” error is about.
With Microsoft Access, learn how to specify relationships between tables and set various options on the relationship. Add the tables: Create the relationship: Decide if you’re going to set referential integrity: Decide if you want cascade upda…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now