I'm currently on a 4-person team tasked with the development and maintenance of a legacy MS Access application.
The application is quite large, with hundreds of forms, reports, queries, and tables.
Currently we have the front end split into about 7 mde components, each of which is essentially an application in its own right, joined by a common front end which is essentially just a menu GUI.
We use linked tables to connect this front end to an MS Access back end, using OpenDatabase(C:\access.mdb) calls in the code itself. This application has been around for a while, and thus uses DAO to connect to an Access 97 backend.
This means that every user of the application has their own local copy of the database for making changes. We have a carefully change-controlled environment that ensures that only one person can be working on the data at one time, they have to validate all their changes before passing the master database to the next person.
This change control environment is stifling to put it mildly, and soon we will have a need for more data changes to be made in a timeframe that makes single user access unviable.
So, we need to move to multi-user access, but by multi-user I mean only about 4 people. This people are probably not physically located at the same office, so some form of remote db connection is needed.
The whole application is likely to be re-worked in a year or two's time, moving both the front and back end away from MS Access. However, we need multi-user access ASAP.
So, what is the quickest path to multiuser bliss?
Suggestions we are considering include:
- Setting up a VPN so that MS Access believes it is accessing a regular network drive. This looks like it will be slow and I'm unsure if a VPN is reliable enough, but it is just a temporary solution we're after anyway.
- Converting the mdb backend into something intended for multiuser remote usage, like SQL Server. We just don't know how to do this quickly and easily (we rely on field validation rules for example) We would also presumably have to convert back to MS Access format as other applications accept the same .mdb files as data input.
- Just about anything that can be carried out by 1 or 2 people in a couple of months.
EDIT: Responding to the below comments.
The data that is processed by the application is highly safety critical data. It changes rarely, and must be validated to show there are no logical errors before being exported. In reality, the data is under heavier restrictions than the application itself!
The data is interrelated in non-trivial ways. As such, a change to a record in one table may invalidate a record in another table due to complicated business logic. As such, at the moment, one copy of the mdb data file is designated the master database. Only one person has the master at any one time. If you want to make changes to it, you have to obtain that database from the person who currently has it. This is usually not a problem as data changes rarely enough that there's enough time for this to occur.
However, a large change is coming up which we haven't been given enough time to work this way. We have to have multiple people working on the data at once. Now I'm aware that you can share the mdb file on a network drive and have multiple people in the same office work on that file with little or no risk, but we need people from different companies to work on the data at the same time. as I understand it, setting up a VPN to share the data across is a bad plan.
I believe we have to change the backend away from MS Access and move to something like SQL server. But how easy is it to convert a schema in this fashion? How are MS Access table validation rules represented in SQL Server?