views:

296

answers:

4

I was recently asked to update an old Access Forms application. Coming from a .NET background, I found the change frightening, and became somewhat uncomfortable. I had assumed these were legacy technologies, fast becoming anachronisms...

Am I wrong? If so, what are the reasons to continue using this technology (besides avoiding the cost to port old apps to .NET)?

+5  A: 

There is still a ton of software written in COBOL, and that's much older than Access.

There are some areas where an Access application is probably sufficient and the least expensive option. If it gets the job done (your job is partially to let your employer know if it really gets the job done) and if it's what they want, go for it.

If you see good reasons that a .NET project would be better or that Access will fall short, discuss them openly and try to reach a decision that's in the best interest of the person cutting the check.

Eric J.
There are quite a number of areas where Access is just fine. There are credible reports of hundreds of users using Access against the same SQL Server.
Tony Toews
I use it myself from time-to-time, though certainly don't know enough about the later versions to take full advantage. I did read David's answer with interest.
Eric J.
+17  A: 

Instead of answering the subtext of the question (which is that Access apps are terrible no matter what), I'll give some information about the future of Access:

  1. Access is a flagship product for Microsoft. There is no substitute for it in Microsoft's product line so it's going to continue to be promoted and developed by Microsoft in some form for the foreseeable future (as long as there's an Office suite from MS, there will be Access).

  2. There is almost no competition outside MS for the functionality that Access provides. The only comparable product anywhere is FileMaker Pro. One could possibly say that the Base component in the OpenOffice suite is competition, but it covers only a subset of the features offered by FM and Access (which is not to say that it might not be sufficient for any number of scenarios).

  3. Access (and the entire Office suite) is still using VBA as its programming language and the rest of Microsoft has moved on from VB to the .NET-based languages. The other Office products can now use .NET components (though not in the same way that they use VBA), but this is not the case for Access. I would expect that sometime in the next couple of versions of Access (not in A2010), .NET support will be introduced in some way. But knowing MS's history, VBA will continue to be supported for several versions.

  4. Access applications have historically had a huge weakness in regard to web deployment, something that FileMaker offered years ago. A2010 rectifies that big time through Sharepoint integration that allows the creation of an Access app using the new web objects that can run identically in the Access client and in a web browser (any standards-compliant web browser -- no more web components and restriction to IE).

  5. The Jet database engine was basically declared dead by MS around the release of Jet 4 (which came in 1999), even though MS made Jet 4 a component of the Windows operating system (and it still is). Jet got new life with the release of Access 2007, and the inclusion of a new version of the Jet database engine called ACE, and owned by the Access development team (Jet 4 continues to be owned by the Windows development team and is frozen as is, with no additional development). Much of the new functionality introduced in the ACE has been driven by Microsoft's goal of integrating Access with Sharepoint, but with A2010, some of the new features (like table-level data macros, which enable the equivalent of triggers) are very useful even without using Sharepoint (others, like multi-value fields, are not). With the 64-bit version of Office, there's now a 64-bit version of ACE, so Jet/ACE can now be used in 64-bit applications without needing to compile as 32-bit only.

Now, the last question:

@ChrisDiRulli asked:

Is there any reason to continue using this technology (besides avoiding the cost to move it over)?

Of course there are very good reasons to continue using Access:

  1. the app is already developed.

  2. the app works, or works well enough to get the job done.

  3. the app needs only some new features, rather than a complete rewrite.

  4. the app is used by a group of users for whom there are no deployment issues (they all have full Access or are using the runtime).

There's a great future for Access, seems to me. I haven't been this enthused about Access since the release of Office 95/97, which introduced VBA to the Office suite and enabled the creation of "meta-applications" built on top of the Office suite.

Now in any particular situation, with a legacy Access app, the issue may be that nobody knows how to fix the existing app, or that the existing app is a holy mess of spaghetti code and macros (much worse if it uses macros, as it's nearly impossible to tell how they interrelate), or the schema is bad, or, or, or....

If the issue is that nobody has the chops (or the interest) to rescue the app, you should consider hiring a contractor who is an experienced Access developer. Finding those people is not so simple, but there are lots of them out there. You can tell who the competent ones are by their public postings in the Access Usenet groups and even some of them here on SO.

If you don't want to do that, you'll likely spend a lot more money either flailing around trying to figure out how to fix the Access app or alternatively, discovering how expensive it is to replicate the same functionality outside of Access. In the latter case, many organizations opt for replacing the app with one that offers only a fraction of the same functionality. That's a great way to alienate end users and nudge them in the direction of going off the reservation and not asking IT for help in the future, so it's probably not a good idea.

But first things first:

Lose the hostility to Access. It's irrational and 99.99% likely that it's based entirely on ignorance.

David-W-Fenton
+1 for the O_o :D Very well written and thoughtful.
GalacticCowboy
+1 - The whole "Access Doesn't Scale" naysayers, are going to have a tough time knocking the SharePoint integration, but they'll find an excuse for territorial-pissing.
Jeff O
+1 Totally agree--Access definitely has its place for small and flexible add-hoc applications.
James
+1. I've written major enterprise apps using Access as a front-end (and SQL Server backend).
Mitch Wheat
+1 for being unbiased and convincing me(an Access naysayer) that it's not so bad... I'm still not touching VBA with a 10 foot pole though
Earlz
You are right! Access and VBA are hot! Now, let me just go ahead and download that hotfix so that mouse wheel events work in the VB6 IDE http://support.microsoft.com/kb/837910 What a pile of crap. BTW, care to comment on version control? Didn't think so.
ChrisDiRulli
@ChrisDiRulli: I see you're not interested in making yourself look less the fool. As to version control, Google is your friend. That said, I think Access is most appropriate to projects that can be managed by a single developer at a time.
David-W-Fenton
David, excellect posting. James, Access is very good for line of business apps as well. Not just ad-hoc apps.
Tony Toews
I should have known that by posing such a question I would only get responses from Access "programmers." And I use that word with quite a bit of apprehension. VB is a dead language and Access is virtually a dead technology. Don't believe me, take a look: http://www.google.com/trends?q=%22Microsoft+Access%22
ChrisDiRulli
Lunatik
Chris. Love the way you put programmers in quotes. Nice tone of derision in your posting.
Tony Toews
Thanks Tony, that's what I was going for! OK, I've had enough arguing with 50 year old Access dinosaurs (I get enough of that at work).
ChrisDiRulli
I'm sorry I posted a serious answer. You don't deserve the assistance you got here.
David-W-Fenton
Pfff! This answer was hot! And I liked the '50 year old Access dinosaurs' argument, as it certainly reflects the youth of its author. @ChrisDiRulli, I have not developped an client app with vb.net, that includes 220+ forms, more than 500 different menu options, all that nice stuff that helps users (report integration, export functionnalities, etc) and allow developpers o make it smart (transaction follow-up, error tracking, version comparison, automated update procedures, etc), but I did it with Access. It's quick, clean, and simple. And it works ...
Philippe Grondier
Oh, no short circuit evaluation either in VBA. What an amazing language. Like I've been transported back to the 1970s
ChrisDiRulli
I've been programming in VBA since it was introduced in Access 95 and I can't say that lack of short circuiting has given me any problems. It just means you have to structure your code to account for it -- hardly a major hardship for anyone with any degree of intellectual flexibility.
David-W-Fenton
@ChrisDiRulli – I didn't know "short circuit evaluation" was the standard phrase for that; strange enough, I would've implicitly assumed *every* language did this by default (I didn't account for side-effects). After a brief google search, wikipedia [http://en.wikipedia.org/wiki/Short-circuit_evaluation] seems to indicate that VBA *does* provide short-circuit evaluation via the 'select ... case' statement.
Kenny Evitt
I think the usual short-circuiting expected is with Boolean statements, and VBA with a Boolean OR does not quit evaluating the minute it finds an expression that evaluates as True (or False, if you're comparing to False). This would be quite useful in some situations, but it's hardly a fatal flaw in the language! It also occurs to me to ask if VB short-circuits or not, and if so, why VBA doesn't.
David-W-Fenton
Find me a moderately popular programming language designed in the last 15 years that doesn't do short circuit (or lazy evaluation) and I'll give you a gold star. It's not a fatal flaw, just another sign of old age (and poor design). It's the kind of thing an open-source community would have fixed long ago, but since it's MS you're stuck working with this out-of-date language that is no longer supported.
ChrisDiRulli
@ChrisDiRulli: On what basis do you make the claim that VBA is no longer supported? It's not true, of course.
David-W-Fenton
Excuse me, the VB6 IDE is supported as "it just works." Which means they commit almost no resources to it. I pity the poor soul that probably spent a week testing that POS on Windows 7. Obviously VBA is still very much apart of the Office scripting stuff...more for power users writing macros in Excel not software developers. If you're under the age 50 and intend on having a career, probably not worth the effort. I know I won't be putting this on my resume!
ChrisDiRulli
"Commit almost no resources to it"? You are aware that as part of the Office 2010 rollout they've ported VBA to run 64-bit, and added appropriate data types and other tweaks to make it work? (http://msdn.microsoft.com/en-us/library/ee691831(office.14).aspx) That doesn't look to me like "no resources" to me. You had a chip on your shoulder when you posted your original question and you have demonstrated that you don't really deserve the quality answers you've received here.
David-W-Fenton
+1  A: 

We keep it because it works. When a business's needs grow so much that the Access App can no longer get the job done (A very good thing for the business or an unfortunate sign that your Access developer may be lacking knowledge in this area.), you build something that can or hire someone who can.

You were frustrated which all developers go through. I never start my day thinking, "&^%&, I have to build a new application! When am I ever going to get to go back to that 3 yr old .NET code and fix that ..." Refactoring has its place.

Now, there are many .NET features I'd like to see available in Access and look forward to the 2010 version.

Jeff O
You can download a beta of Access 2010. MS emphased Sharepoint and web developerment. Very useful stuff but I sure would've liked to see work done in the VBA IDE>
Tony Toews
+2  A: 

Use the right tools for the right job. Many people in IT are put off access from having to maintain some god awful db made by someone just stepping out of excel. However access has many things going for it. For example I have a project coming up that calls for rapid roll out to about 10 users with a short turn around time. For this job I'm leaving the SQL server and the copy of visual studio on the shelf and using access. If access fits the job then why rewrite it in .net just so it can be in .net. For me the programming tool used is a means to an end not a feature

Kevin Ross
BTW see the Auto FE Updater to help roll out updates of your Access FE to your users. http://autofeupdater.com/
Tony Toews
I already use it tony. Well actual I made my own version of that idea and then after getting it all working nicely found out it had already been done! Great minds and all that
Kevin Ross