Running Access 2013 application on a Clients Citrix network, all users using the same Accde

I have been developing and distributing Access applications to clients for over 15 years.  As part of the project development process I meet with the IT rep from each client and explain the installation requirements.

I always specify that each user must have their own copy of the front end application, linked to the backend DB.  Up until now this has never been an issue and the installations all were accomplished without issue.  I have some clients whose users connect thru Citrx.  I am not a hardware/network/communications person at all so I don't completely understand (or care) what this means.  However, as with other client's we had out pre-install meeting.  I explained how that each user needs their won copy of Access and the IT people implemented that.  I think said each user has there own work space and they copy the application accde to each work space.

On my current Access 2013 project with a SQL backend, I recently met with the IT person from the client.  They are also using Citrix and will have in the ballpark of 100 users.

When I explained the need for each user to have their own copy of the application, he had an issue.  He mentioned zenapp servers, load balancing and some other things I didn't know or care about.  He wants every user to use the exact same accde loaded in one place on their network.  I explained that wasn't possible because the application used local work tables and global variables.  He asked if the application could be modified to not use local work tables and global variables.  I explained that large portions of the application would have to be re-written and the project timeline would slide as a result and they were OK with that.

Since the first days of my MS Access development I have been operating under the premise that it is never OK for two users to be using the same front end at the same time.  If I do remove local tables and global variables would it be OK to operate in the way IT is proposing.  There could theoretically be 100 users using the same physical accde at the same time.

Having of you set up multi-user lient installations where multiple users hit the same accde?

Besides the obvious local tables and global variables are there other specific reasons having all of the users execute the same accde is unacceptable?

This is a very large project and if possible I would like to accomadate the user request.  I know it goes against everything I have entered understood about access installations but I really need to present them with objective reasons why their proposed scenario would not work.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

David Johnson, CD, MVPOwnerCommented:
It would appear that you did not use programming best practices

If I do remove local tables and global variables would it be OK to operate in the way IT is proposing.  There could theoretically be 100 users using the same physical accde at the same time.

Each user uses their own copy of the program (in memory that is) the program can be stored in a common area accessible to all.

Where do you store your temporary data? It would appear that you are using <program location>\subdir or <programdata>\program\subdir where you should be using %username%\appdata\roaming\<publisher>\program\ directory
Gustav BrockCIOCommented:
Problem is, that an Access application in relation to Windows is not an application but a document - MSAccess.exe is the application which already is installed.
Thus, based on real-life experience, I wrote an article to people like your IT person - exactly on this topic:

Deploy and update a Microsoft Access application in a Citrix environment


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Jim Dettman (Microsoft MVP/ EE MVE)President / OwnerCommented:
You really do want a separate front end for each user. Even outside of the temp storage issue there are a number of reasons why you want each user to have their own copy.

As Gustav‘s article points out this is easy to accomplish. There are also other ways you can do it easily. What I typically do is set up a mapped drive in active directory which points to an individual user directory and I store the front end there. So on the  Citrix server I will do something like:


 And then underneath that an individual folder for each user.   The front ends go there.  I usually map that as  Drive “X”  if it’s not already in use or use “U”.

 That still leaves you two problems:

1.  All users are still using the C Drive,  so if you put something in C:\temp for example you’ll still have issues.

2.. All the VBA references are shared  as they almost always point to the C Drive.   In the majority of cases this is not an issue, just something to be aware of.

But it’s important that you stick to your guns and insist that a each user have their own copy of the front end.

 There are no issues with load-balancing etc.  it will still be a single install of access or the run time. Each user when they start the application will invoke an instance of MS access.exe and then read and execute the database.  this is no different than if they were using a spreadsheet with Excel or a Word document with word.   Result is the same. The only difference here is that you are chewing up some additional disc space by having multiple copies of the same database.

The reason for this is as gustav said, an Access app is closer to a document that is read rather than a program which is executed .

 You have not broken any best programming practices. In fact it’s exactly the opposite you’re doing exactly what you’re supposed to do with an access app .

Acronis True Image 2019 just released!

Create a reliable backup. Make sure you always have dependable copies of your data so you can restore your entire system or individual files.

As Gus pointed out, your Access application is merely a document.  it is not an executable.  They need to understand that Access loads your application into memory on the individual computers and modifies it as the app runs.  So Access saves values to the shared file such as changes in property settings.  The Citrix people should be able to see the .laccdb be created and note the change in modified date time on the .accde.

What did you intend to do with the local tables and variables?  I hope you don't have local tables that are modified by the user.  My local tables are only for running the app.  So they mostly provide lists for combos and options for forms and reports.

This is the batch file I use to run the app in each user's personal directory.  Every time the user runs the batch file, he gets a new copy of the FE.

del %USERPROFILE%\DwgLog\DrawingLog.accdb
copy "\\BSCCTIMBERLINE1\Timberline Office\AccessApps\Data\CommonFE\DrawingLog.accdb" %USERPROFILE%\DwgLog
mlcktmguyAuthor Commented:
Thanks you all for your confirmation and advice.
You're welcome.  Hope you can get the Citrix people to see the error of their ways when it comes to properly implementing Access apps.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.