"onedaywhen" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> Learn VB6 forms and you are most of the way to
> learning e.g. .NET Windows Forms. Invest my time learn quirky MS
> Access forms and those skills would not be transferable outside MS
> Access apps.
Hum, that is matter of opinion. I don't think the jump from VB forms to .net
or from ms-access forms to .net is going be much different at all here. Any
competent developer will make this leap. The idea you are proposing here is
that ms-access forms teach some bad habits...or hold back the developer some
how. The worst business applications I seen are written in VB6. So, it is
very possible that since VB6 is so un-structured when it comes to data
forms..that you actually learn worse habits in VB6 then you do in ms-access
(just like a language that has no data typing vs one that does). At least
the forms data model and events is consistent from one application to the
next in access, I can't say that for VB6.
As for future skills?...Hum...at least we got a nice new version of
ms-access in the works...can't say that for VB6...can we?
> I've heard say it takes a
> good part of a year to 'un-learn' MS Access.
Well..again, that is kind of here say. The programming language in ms-access
is the same as VB6 anyway (sans the forms model). So, really, we are talking
about a VB development system with a different forms object. Not really a
big deal here except for the labour savings you get when working with data.
The IDE between VB6 and access are quite similar. Of course..since forms are
the heart an soul of an application..I would be silly not say there is a big
difference..but the language is the same in both cases.
> I've built a few data
> access (small 'a') tiers in my time so I've got some transferable
> skills (the MS Access apps I've seen don't seem to have a data access
> layers). This is how I can be competitive in terms of 'time is money'.
Most business applications are two tried when you talking about VB6, or
ms-access to sql server. If you do need, or plan to build a 3 tried
applications, then without question ms-access is likely NOT the right tool.
However, you *can* consume .net web services in ms-access now with the soap
tools add in kit for ms-access. So, that would give one an ability to
develop 3 tried systems with access. However, for a very LARGE slice of
business applications market...a two tried design is fine. I have no problem
with the issues of using the right tool for the right application.
Ms-access makes a great client to sql server, and thus is good choice in a
two tried environment. For 3 tried...hum...likely not the best choice.
>
> But my connection and recordset objects have certain crucial
> properties (client side cursors, disconnected results sets, batch
> optimistic locking, asynchronous connection, etc) why is the form
> hiding all this from me?
Again, if you need a disconnected recordset, or need to code that
stuff..there is nothing stopping you from doing that in ms-access. The
problem is 9 out 10 times you don't need to do that. You have the full ADO
object set available in ms-access. You can code your heart out in that
regards if you want...the real problem is when you DON'T need to..you *have*
to in VB6.
> And my sql is in parameterized stored
> procedures i.e. sql is on the server side not in client code.
Well, if we are talking sql server here (are we???). You are well aware that
a access ADP project is 100% native sql, NO jet engine, and no local tables.
No local engine even exists to process the sql (it all 100% sql server
native application). So, any stored query means that all sql processing is
done on the server. So, lets not jump to quick as to how ms-access can , or
can not work with sql server. ADP projects have been available in ms-access
for the last 3 versions of office (and, on the office cd is the MSDE desktop
edition of sql server. So, for 3 versions of access we have been able to
create native sql applications). You HAVE to use a server engine when you
use access ADP projects. However, this really comes down to how the
developer is going manage where, and how the sql is used. This is a
developer decision..not one of ms-access anyway. However, if we are talking
a NON server based application..and JET? Well, then ms-access is far
better..since we have a nice query builder and collection of queries. This
more often then not makes the developer put the sql out side of the
code..and NOT use in-line sql. (so, I would again say as a general rule..vb
guys use more in-line sql then does access folk..since we have a wonderful
"querydefs" collection that we can use (and,that querydefs collection
supports the use of parameters).
I should also say that if you user count is only going to be 50 to 150
users..then I never seen ANY difference in sql server performance with odbc
as compared to a OLEDB connection that ADP access projects provide. This
native connection business about oleDB and odbc is much a urban myth. For
most applications..you will not see ONE BIT of performance difference
between the two approaches to sql server (ie: native ADP access projects vs.
ODBC to sql server). I don't know why, or how it is that people often think
that ms-access does not work, or somehow is not able to work with sql
server. Access is a fine client..and every bit as good (in fact many ways
better) then VB6. Again..we talking about that 90%+ applications of being
two tried here.
If you do need a middle layer..then I do concede that the debate does widen.
(you can consume .net services in ms-access...but you can't create them!).
So, for 3 tried...likely ms-access is not the best choice (but there is
still some room for debate here!).
> > "similar to control arrays, and cloned controls in VB,
> > but is much better since the controls ARE DATA
> > BOUND for you! Once you stuff the sql into the
> > control, no additional coding is required for editing of
> > data!"
>
> I need closer control over the data, I don't want bound controls.
Yes, and in most cases you do need more control. The first problem is that
the VB controls are very bad in working with data. If you had the events an
extra methods and properties that ms-access provides then in a large portion
of those cases you could get away using bound controls. Bound controls/forms
are not so bad when those forms have a whole bunch of extra methods to deal
with data editing. For example, just for deletion..we have the following
events:
On Delete
Before Del Confirm
After Del confirm
Once again, without these extra events to work with when a deletion occurs,
then you need to write code. To have code run, or occur on one of the above
given events..you are forced to write REAMS of code for the shortcomings in
VB6. VB6 is just not designed from the group up to do data editing. So,
sure..you do get more control in VB...but so does assembler give you more
control. I am not sure that being forced to write a bunch of extra code due
to the objects lack of design is a good thing. To get more control you have
to write a ton of code. And, of course this rapidly forces you to go the
un-bound way. Like I say..bound forms without extra events and methods deal
with bound data is a nightmare.
Since VB6 does not have bound data forms..then you have little choice in
this matter. And, thus you get that large increase in application cost I
talked about. I will be the FIRST to admit that many a performance
problems occur when bound objects are miss-used. However, miss use of bound
objects should not be an argument to kill the use of them!
Without question there are times when bound controls are bad. However, if
those bound controls have a ton of extra methods and properties..then THEY
ARE just fine to use. And, there nothing stopping one from using standard
active x controls like listview or a treeview in ms-access (but..then you
are forced to write code to fill those things).
This really comes down to the right horse for the right course. Products
like FoxPro, Dbase, ms-access etc took the market by storm many years ago
and catapulted the desktop pc into being a useful data management system.
These data systems now work very well with server based engines also.
I not going to write a game in Auto Cad, nor would I try and use VB6 in
place of auto - cad. The same goes for these database projects in the market
place. They simply would not exist if products like VB6 could do a better
job. Why would anyone use a database product over VB6 if vb6 was better?
This makes no sense at all, none more so to throw out auto-cad and try and
use VB6 in its place.
When projects need certain features (like highly customized UI), or wide
product distribution, or a larger development team using a multi-tiered
approach...then VB6 starts to become a better development tool....and
rightfully so. I would not argue differencing on this issue.
This all about the right tool for the right job!
When it comes to a data centric project......the winning bets most of the
time are on the horse called ms-access.
--
Albert D. Kallal (Access MVP)
Edmonton, Alberta Canada
(E-Mail Removed)
http://www.attcanada.net/~kallal.msn