I have been noticing in the MS Access books that I have been reading that
the author(s) have been using the form's record selectors, navigation
buttons, and dividing line as the main form of navigation between records.
This is for many different publishers such as Wrox Publishing or Microsoft
Press.
Good observation on your part. In my applications, the main edit forms
actually NEVER have navigation buttons. (for sub forms...yes...main
table..not very often).
The reason why you want to avoid navigation is not because they
are bad, but it means you failed to ask the user what they need to
work on in the first place.
** Ask the user what they need before you load a form!
The above is so simple, but so often I see the above concept ignored.
For example, when you walk up to a instant teller machine, does it
download every account number and THEN ASK YOU what you want to do? In
access, it is downright silly to open up form attached to a table WITHOUT
FIRST asking the user what they want! So, if it is a customer invoice, get
the invoice number, and then load up the form with the ONE record (how can
one record be slow!). When done editing the record...the form is closed, and
you are back to the prompt ready to do battle with the next customer. You
can read up on how this "flow" of a good user interface works here (and this
applies to both JET, or sql server applications):
http://www.members.shaw.ca/AlbertKallal/Search/index.html
I have also noticed that they bind the table directly to the form and
without using a mid-tier to establish their business rules.
yes, the above is common approach. It really comes down to how
complex the appcation is going to be, and also the fact if you
actually HAVE tools that let you build that middle tier.
(access does not have tools that allow building of the middle
tier).
I was wondering
do they do it this way for simplicity or is it a common practice to
develop a
MS Access application that way?
It is case of simplicity, BUT ALSO ONE OF productively also. The building of
a middle tier was USUALLY the result of a client/server environment, but the
main
problem was that the server side totally sucks. It is quite hard to write
complex
payroll routines in t-sql for sql server. and, without a debugger, and a
nice
integrated development environment, programmers simply gave up on the t-sql
and wrote their code in a middle tier. After all, that complex code had to
go somewhere. It not totally that developers wanted to use a middle tier,
but more so that the server side coding really was rotten, and they
did not want to put all of the business code into the front end.
(especially when that front end also sucks - such as web based!!)
However, the above tends to apply to a web based model.
ms-access actually gets it power and productivity from using
bound forms. It is why you can cut the cost of a project by
a factor of 5 or even more as compared to something like VB.
Further, for most applications, it don't hurt so much that you place the
code
+ ui together. In fact, this merging of code + UI is why ms-access is so
productive.
Here is a few quick easy screen shots of bound data in ms-access:
http://www.members.shaw.ca/AlbertKallal/Articles/Grid.htm
So, if you want take a project that costs $7000 in ms-access, and use a nice
middle tier approach, be probably to spend $28,000 on the project. So, the
development of the middle tier also based on how many developers and budgets
you have. And, also, with a middle tier, your application tends to be more
scalable. So, if you need 300 users, you very might well consider a 3 tier
setup.
If you only plan to have 30 users, then I would use ms-access with sql
server, but I would not for the most part introduce a middle tier (well, if
you do that..then you using the wrong tool.). ms-access is 2 tier, and is
productive in that setup. It not designed for a 3 tier..and if that is your
requirements..then don't use ms-access.
the only exception to the above I suppose is using web services -- there is
a
nice soap tool kit add-in for ms-access. So, I suppose if you had a rich
web based system where your middle tier code was designed and written as a
web service, ms-access can consume those web services.
I would like to use more of a client/server
structure as I hear that is the best way MS Access can support a
multi-user
and multi-concurrent environment.
well, client/server tends to mean 2 parts...client side..and server side.
You don't really have a practical way to introduce the 3rd "middle" tier.
I will be using Access 2003 and will
probably support upwards of 25 users though that could change either way.
If you starting out to assume 25 users, then I would certainly use sql
server
for the back end, and you can use ms-access for the front end.
You can most certainly contain some business rules and logic by using
class object. I explain them here:
http://www.members.shaw.ca/AlbertKallal/Articles/WhyClass.html
And, here is interesting article on converting a mainframe application to
ms-access. Give it a read, as it also gives some ideas and concepts
used in ms-access development.
http://www.members.shaw.ca/AlbertKallal/Articles/fog0000000003.html