Paul wrote:
Hi all

I have a pending project with the company I work for, if funding comes through.

They have an internal Access db and wish to make this available to customers online for the purposes of ordering.

My initial thought was to use PHP/MySQL.
The problem is how to link or convert the data efficiently.

Any ideas or thoughts?
Have you done this perhaps?

The only DB migrations I've done have been from an old FileMaker Pro version to MySQL, and later through to the considerably superior (and also free) PostgreSQL.

This was a full migration, and involved re-building the user interface as a web application, so it's probably not what you're after.

In this case, though, you might be interested to know that PostgreSQL (and I think MySQL) can be used as data "engine" back-ends for Access. Rather than using Microsoft Access's internal database engine (JET?), you use an ODBC interface to store the data in a real relational database system (MySQL, PostgreSQL, MS-SQL, etc) and just use Access for the user interface. The actual database server need not even be on the same computer (you could, for example, run it on your main server).

With your data in a real RDBMS, it's stored in a superior database engine that's much more suitable for multi-user access, more easily backed up, and probably faster and more reliable. You can still use Access for the user interface, so as I understand it users who aren't actively modifying the database schema (creating, modifying, and altering tables and views) won't even know much has changed. On top of that, you can do things like have your web server talk to the database to expose that same data through a web application, use 3rd party and open source reporting tools to analyse your data, and more easily write quick SQL queries against the database (using tools like the `mysql' and `psql' command-line clients) if you just need to do some one-off analysis.

In your case, being able to share the same data between Access and your web server would no doubt be the most attractive aspect of the configuration I've described.

I haven't done this with Access myself yet (I have with other database tools), but probably should have a play with it since I have a copy of Access lying around.

Here are some articles (straight off Google) on the topic:

http://techdocs.postgresql.org/v2/Guides/Using%20Microsoft%20Access%20with%20PostgreSQL/view
http://www.ucl.ac.uk/is/mysql/access/
http://66.102.7.104/search?q=cache:rZdNUWo1Wc4J:www.washington.edu/computing/web/publishing/mysql-access.html+%22Microsoft+Access%22+MySQL&hl=en&client=firefox-a

Your other alternative might be to use the ODBC interface for Access's internal data store to poke into the Access database. I suspect that approach won't be too attractive though - potentially slow, unreliable, and almost certainly much less capable of dealing with larger numbers of users. I've seen similar schemes work very poorly indeed.

--
Craig Ringer