views:

2781

answers:

11

Background

I work for a large organization which has thousands of MS Access applications floating around. I didn't write any of these - in fact, most of the original authors have long since left the company - but from time to time another Access app lands on my desk for support. I would soooo love to replace access with a different solution.

Requirement

I know that there are several good alternatives for the database part of MS Access (the Jet database), such as SQLite, MySQL, VistaDB, etc.

What I would like to know is: Is there anything that will replace the front end part of MS Access?

I.e. Something which can be used to build forms, write simple scripts and queries, etc?

Why?

@BracC asked "why replace access?" - A fair question indeed.
I want to get rid of access because:

  • it hides logic, leading to hard-to-support applications. Logic can be in lots of different places, none of which provide or encourage any structure:
    • macros
    • modules
    • queries
    • forms
  • its very nature encourages users to create "little" applications which become "not so little applications". Then the user leaves and I have to support a bunch of spaghetti. I know that access isn't the only culprit, but it's the leader in my organisation, and I would love to get rid of it completely.

For extra credit

what I would really love to find is something which can read in an MDB file and output something like C# which replicates the functionality. (Or any language - not fussy).

I hope this is all clear. If not, please post a comment and I'll re-write/add detail.

Update

@GuinnessFan makes some points I find interesting. I have added my comments to discuss those points.

What we have done since I asked the question:

  • Got users to give us a definitive list of access applications they use and need. (The understanding is that any MDB files not on the list can be deleted - hooray!).
  • Analysed the MDBs on the list, coming to the following conclusions:
    • Most of the "applications" consist of a single hard-coded query or a single linked table.
    • Many are a small number of queries with, perhaps, a date parameter or similar.
    • very few (if any) have any truly complex logic.
  • We are now working through the list, converting most of the apps to SSRS (SQL Server Reporting Services) packages.
  • Anything which can't be replicated using SSRS will become a hand-crafted web application. However, there aren't many of these.

May I say many thanks, to _**everybody**_ who has given me helpful answers.

+2  A: 

You won't find an server-class engine that also has the desktop interface design tools attached. The big server engines all expect you to use something like C++, C#, Java, or PHP to build your interface.

I, too, would love to see an upgrade tool for access that would spit out some basic C# forms and talks to an equivalent SQL Server database. It seems that would be a big money-maker for Microsoft because they could use it as a way to up-sell customers to a full SQL Server.

IIRC, there might be a way to tell an Access front end to talk to a SQL Server, or change the tables used by an Access front end to really be linked tables into a SQL Server, or something like that, but I've never had to use the feature myself.

Joel Coehoorn
Thanks, Joel. I've though about this option, and it is attractive: at least I could get the data under some sort of enterprise control. :)
AJ
Yeah, using Linked Tables in Access is what you're thinking of. Use Access as a front end and a more robust database as the backend. Of course, you are left dealing with Access as the front end, which is a pain in itself.
toast
It may be a pain but it makes a good bandaid while trying to port the code over to something such as .Net with WinForms, WPF, or ASP.Net
Matthew Whited
+3  A: 

I switched the back-end on one application from MSacces to MSSQL a few years ago. Kept the front-end, because it worked well, and I didn't find anything as easy to use/modify.

I've never seen a MSAccess -> C# translator. However, you might be able to find a MSAccess to VB6 translator (their syntaxes are roughly similar), and from there there are VB6->VB.Net translators (and even VB.Net ->C# translators)

James Curran
Thanks, James. I have thought about migrating the data, which would be a step in the right direction, but I really want to get the logic under some kind of control to lessen the support overhead. ... It's probably just a dream!
AJ
That would be code to see. VBA -> VB6 -> VB.Net -> C#
toast
For a previous employer, where we too had some Access applications, I tried those MSAccess -> VB6 translators. My advice is: forget about them, they're worse than VB6->VB.NET translators (indeed!). You'd be better off porting the data to SQL Server and leaving Access as a front end.
Joe Pineda
@toast: I've seen some (nVelocity) which I'm pretty sure went YACC-> C -> Java -> C#. (there may have been a C++ phase, but I can't be sure). I have nightmares!
James Curran
A: 

Is there anything that will replace the front end part of MS Access?

Maybe Kexi?

matma
Thanks. Worth a look. :)
AJ
I have just tested Kexi Windows version. It requires computer restart after installation, which was a first warning for me. Then I tried to create a first table. UI was intuitive, I entered names for several columns, then tried to remove one and the application has terminated, without saving any data. Looks nice but doesn't work (at least for me).
agsamek
+2  A: 

You could check out Oracle's Application Express. It's free and it's geared toward Access developers.

It has a migration assistant as well that you run your Access database through, it proccesses the data and the forms, migrates everything to an Oracle Database (this works with the free database, Oracle XE, and comes install by default) and builds web forms for your Access database.

So in the end you'll have your Access databases on the web, your data in Oracle and somewhat nice web front end for extending them.

As far as Oracle goes, the tool isn't half bad. You can sign up for a free instance to play around with here.

Here's the document that explains how you migrate Access Databases.

mwilliams
Intriguing! Having an Oracle tool would certainly go over well with my corporate overlords. ;-S
AJ
I've been working with a test instance with the link I provided you. I would recommend signing up and playing with it and going over the "two day developer guide" that you can finish in an hour. It has plenty of potential. Good luck!
mwilliams
You can't do multiple master details. Deal breaker for me. You can hack something similar, but it isn't as flexible as access in this regard. On the other hand, you can easily connect to web services. Tradeoffs...
jle
+3  A: 

So, other than personnal distaste, why replace the Access front-end? May be easy to do for some (simple) databases, but most Access apps in the real world have a lot of complexity.

Lots of reasons for upgrading the back-end, of course (scalability, performance, db corruption, user-locking). Access even has a built-in "upgrade wizard" tool that allows you to split the forms and logic from the data, and upgrade the data to MS SQL server. If you want, use this wizard to upgrade the back-end to SQL Express, then manually migrate to another db platform.

Hope this is not too far off-topic, but sometimes all you need to do with Access is:

  1. Upgrade the back-end (as we've already discussed)

  2. Always make sure the front-ends are locked down (read-only)

  3. If necessary, create different front-ends for different user roles (as a form of security).

  4. If possible, have the front-ends copied locally on each workstation, for performance reasons. You may need to have a network script to check for new versions of the front-end.

I don't have any direct experience with it, but I did find an Access to ASP.Net converter tool called "Access Whiz" at http://www.microtools.us/

BradC
Fair question. I'll expand my original question.
AJ
+2  A: 

@BradC

I don't recomment MicroTools. I worked for a company a while back where we had the same problem. Unless MicroTools has made significant improvements to their product, it spits out garbage last I checked.

What we found was that pretty much any upgrade path will require significant amounts of coding changes. All these tools are good for is to maintain a similar GUI from the original application. Their code had no object structure, just a bunch of utility functions that were dumped on each page to simulate the way Access provides record navigation. If you have a large number of forms, pulling out their solution and implementing your own takes some work and a ton of find-and-replace operations.

We were so disappointed with MicroTools performance that we started writing our own converter. We were pumping out better ASP.NET forms than they were after a week of coding.

Jason Z
Interesting. Hope I don't have to write my own converter!
AJ
If you get to that point, let me know. I'll freelance the job and help you build one :)
Jason Z
+2  A: 

I have a different perspective for you to consider. Your main issue is that it hides logic and there is data and applications scattered through the organization.

Unfortunately I don't know of a RAD (rapid application development) tool that is as easy as Access to create functional forms.

However I would recommend that you focus more on the possibility of centeralizing your data and logic and still allow Access as a front end. I support a database product called Advantage Database Server which supports RI (refferential integrity) rules, stored procedures, triggers, etc. that can all be managed on a centeral server thus bringing all of the logic to you. These Access front-ends could then link to the data backend using ODBC or OLEDB. If you switched to a solution like this then later down the road you would have flexibility to write other applications such as .NET, PHP, JDBC, etc. that tie into the same data while phasing Access front-ends out.

A good start would be to stop new Access development unless they're using this sort of data backend.

Joshery
+3  A: 

We used an internal app based on MS Access as a frontend to a MySQL database. We ran into lots of problems, and eventually rewrote the whole app in CodeGear Delphi 2007 for Win32. This has been a great success, although the migration did cost quite a lot of effort (training/hiring a couple of Delphi programmers, buying some third-party tools). I can wholeheartedly recommend Delphi, though. And AFAIK, integration with a MS Access back-end is certainly possible --- I once wrote a Delphi app that does just that, and it only cost me a couple of days to get a feature-complete version!

I realize this is a full programming solution, so you'd definitely loose some of the ease-of-use of MS Access for building front-ends. Then again, you can put together a database application in Delphi in 10 minutes without writing too much code --- no kidding! And since the 2009 release, the language is slowly becoming more mainstream again...

onnodb
+1  A: 

Microtools offers Access Whiz, a set of Access conversion tools. It consists of Access to ASP .NET (VB/C#) converters, Access to VB6 converter, Access to WinForms (VB .NET/C#) converters and Access to Crystal Reports converter. More information and trial demos can be found at http://www.microtools.us.

+1  A: 

You can also take a look at Firebird

Here is the way to migrate (you need Delphi)

I also find this MDB2FDB

Hugues Van Landeghem
thanks for the link.
AJ
How does this address the crucial front-end part of the equation?
David-W-Fenton
+2  A: 

Out of the 1000's of Access files how many have you been asked to support? I'm guessing less than 100. Why rebuild an application that A) no one uses B) works fine just the way it is?

You need to begin a policy that it is an acceptable practice for a large organization to develop custom applications in a robust, scalable, reliable, yadda yadda yadda environment. Identify the Access applications you feel are critical or are being outgrown and just work on those.

Be prepared to handle the expectation of getting their quick and dirty little applications on a quick turnaround. You'll have to show them the benefits of your new apps.

I think you just need to be a resident expert and teach these users how to improve their application or get your input from the beginning to start them off right. The requirements to convert all of these files would otherwise be overwhelming.

Jeff O
You raise thoughtful and interesting points. I agree in part. I may have to update my question. thanks! +1
AJ
1) We will only have to support a small number of apps: YES, but: we don't know which ones will cause the problems. So we need to get them all into the fold where we can maintain them nicely. 2) Need a policy. YES. The policy needs to say "no access apps" and it needs to be enforced by large men with short haircuts and bad suits. 3) Quick and Dirty apps. NO. That just causes problems. What we do is to update existing apps/platforms/systems in an agile manner. 4) Teach users to develop apps. NO. We struggle to do this nicely and to commuincate as required. They haven't a chance.
AJ