I am not primarily an Access developer. My background is in C++ and coding
with the Windows API. Currently I am doing mostly C# development.
I have been working with a client with a small to medium sized investment in
Access. The application is not well written and I am finding Access to be
unstable. Here are a few of the problems:
Poorly written software is simply poorly written software. I been
consulting, and writing software on a daily basic for 20 years now. I have
used a LOT of development platforms. Many were mini-and main frame based (I
still consult for those systems). I also consult to company's that develop
and built products around the office application suite. That generally means
VB, and VBA
On the pc side, I have written in assumer, and even written payroll systems
in Pascal without the aid of a database system (had to write my own).
I have coded on just about every platform I can think of. I have used a
good number of pc based database systems. They go all the way back to
Reflex, DataEase, KnowledgeMan, Advanced Revelation, and of course the
veritable dbaseeIII, and FoxPro.
I also currently have software of mine running on Linux computers in 6, or
more counties around the world as I speak.
So, given the above..what is my experience with ms-access?..
No, I have not experienced the above at all. I have clients running access
applications, and in most cases they are MORE reliable then email, word, or
most applications that they run on a daily bases. About the ONLY thing you
need to ensure is that the updates to JET, and to the particular version of
office/access are installed. I suppose it goes without saying that service
packs,a nd updates are required to anyone who is serous about software
development, and takes at least SOME pride in their workmanship. (so, I
doubt I even have to point out that ensuing updates tot he software tools
need to be installed).
· difficulty keeping track of the context in windows containing child
windows
Gee, not sure what you mean by the above. As always, when a developer is
faced with a new tool, they instantly blame the tools, and not their lack of
knowledge, and how the tools is to be used.
Ms-access follows the MIDI interface that Excel, and word have had for about
10+ years. Only since office 2000 has Microsoft started to move away from
the MIDI interface..and gone to SDI. However, I find control of focus and
ease at which forms follow each other VERY easy in ms-access. I would say
that 80% of my forms are model..but that much my preference, and my desire
to "control" users.
I also going to mention that trying to figure out ms-access which has a FAR
steeper learning curve then VB does can NOT be learned in quick afternoon.
I would consider finding a good developer to evaluate this situation for
you. Anytime you get involved in a project, you need someone with some real
good skills.
Here is a great quote on the Sven Stages of Expertise in Software
Engineering
The general levels of expertise are:
<quote>
Stage 1 Innocent (never heard of the product)
Stage 2 Aware (Has read an article about X)
Stage 3 Apprentice (has attended a three-day seminar)
Stage 4 Practitioner (ready to use X on a real project)
Stage 5 Journeyman (uses X naturally and automatically in his job)
Stage 6 Master (has internalized X, knows when to break the rules)
Stage 7 Expert (writes books, gives lectures, looks for ways to extend x)
</quote>
Page-Jones, Meilir. "The Seven Stages of Expertise in Software Engineering",
American Programmer, July-Aug 1990
One should NEVER attempt a project with a team consisting with Stage 3 or
lower people. This is a sure fire formula for failure. The team can consist
of stage 4's, but they should have at least access to Stage 5, or 6.
· difficulty controlling when data is entered into the database (for
example, when the user wants to cancel)
There are a number of events on the form that you need learn about (before
update is a good example). If you are talking about a general form, and
controlling the update..there is as a general rule FAR better controls here
then what you have in environments like VB.
The ONLY exception to this rule would be when you use sub-forms. (you can't
wrap forms, and sub-forms in a transaction). So, if you are just talking
about a general form, and controlling the update, I have to disagree with
you. If you are taking about sub-forms..then yes..I agree, this is a weak
spot.
· code that crashes, produces errors, etc. until I run the /decompile
switch - then it works
The production version of your software should be a mde file..not a mdb.
And, this mde is placed on each pc..(right?). Or, are we even talking about
a multi-user application here?
· I have saved, compiled, and run code only to find that all my
"saved" changes are gone
Hum, have not experienced the above. However, as mentioned. access 2000 in
my option was NOT very stable until the service packs came out.
My gut feeling is that every addition to the user interface makes the
application less stable. They only need a few new features at the present
time, but anticipate continuous small changes in the future.
I find that for small applications, adding forms is not a problem. For
example, I have a small sized application in ms-access. It have 160 forms,
and about 100 reports. it is had a modest amount of code (27,000 lines). (of
course, in a traditional environment like VB, or c#, you don't get 160 forms
very easily..as those 3 months would take 12 or more months to develop the
same thing). I should note that the resulting application is less then 6
megs in size, and this mde can be zipped onto a floppy disk.
What truly great is that to install the application we simply copy it to the
target pc (we had x-copy development for 10 years now..and the folks in .net
are JUST starting to rant and rave about the wonders of such a setup. We
done this for 10+ years!).
It is possible that your application has far more then 160 forms, and is
rather large. However, even up to the 250 to 300 range for forms, you are
still talking about a fairly small mde file.
I could probably rewrite the whole thing in a few weeks using C# and Windows
Forms.
You cold, but then again, you will spend about 2 to 3 times the effort as
compared to ms-access. Some people rate the development speed in ms-access
much higher..but lets just agree on the low end of the spectrum in terms of
RAD tools. You are talking about a good 3 times the amount of work to
accomplish the same functionality here.
So, my questions are:
· Is Access as unstable as I think it is? (the user interface, not
the actual database)
I have found when you ensure the target pc has a good install of access,
then the resulting application is very stable.
· How does one judge when to move away from Access?
I guess it depends on if it is worth saving. In the summer of 2002, I did
consult for firm that had development a application in VB. It really was a
disaster and part of the problem was poor designs, but worse was that so
much code was used to control referential integrity on the data when the
database engine can do so much of this kind of thing. These most offenses
applications I seen are ones written in VB, or c++ that try to do data
management when tools like ms-access would have been much better. They are
going to keep the application...but man, what a mess! (good developers do
NOT necessary make good database developers).
· Is it inevitable that Access user interfaces will be moved to some
other technology?
Well, what other technology..and at what cost? I mean, we had ms-access out
for 10+ years, and the team is hard at work on the next version (can't say
that about VB6..can we now?). I think the real issues are of how many
desktops are you talking about here? (vb, and .net applications have
advantages when the team of developers grows in size, and also the number of
desktops you plan to support also is gong to be large.Further, as the
project gets larger, then use of class objects etc becomes more important as
developers much work with each other).
I have good document I wrote on converting a application from one platform
to ms-access. You might give the document a good read, as it does have some
good info on the processes involved.
http://www.attcanada.net/~kallal.msn/Articles/fog0000000003.html