T
Thomas
Rob, great, winter is quite suitable if nobody else would have time
before that.
Regards,
Thomas
before that.
Regards,
Thomas
Thomas said:I have a proposal for trying to solve this dilemma: if you have one or
two days in the following month or two, we can imagine simple fictitious
business application (it can be also some usable problem which we can
sell then as a product, too ).
Sylvain Lafontaine said:This only tell us that you have started a project in VB without knowing
VB. I never saw someone starting a project with a technology that he
(/her/them) doesn't know without going into massive cost overruns.
As to the data marshalling that you have done, I would be very surprised
if you can't do the same thing with either VB or .NET. In fact, I would
be even more surprised if you can't do any better with NET than you did
with Access.
NET has been designed to give you the fastest response as possible with
every kind of backend (JET, SQL-Server, Oracle, heterogeneous, etc.) over
any network (Local, LAN, WAN) as possible. If you make a test that gives
a slower response with .NET than with anything else, it's not because NET
is slower, it's because you have made one or more errors somewhere.
Don't forget that with practically any kind of new technology, you will
usually need at least one year of experience to have some mastery of it.
The performance of VB.NET also has yet to equal that of VB6/VBA, so that is
a consideration as well. The only way to get acceptable performance
So what to do, what to do? The obvious question was to fix the data
marshalling in MS Access so that it is fast and reliable.
Did that. My Access applications now run 125 times faster on the network
with bound forms to linked tables.
<snip>Jim Rand said:A simple question has been posed - does it make sense to move from MS Access
to .NET?
Back in 1999, I rewrote an application for the third time. The first
version was in DBase II and the second version was in Progress. The plan for
version 3 was VB on the frontend and Sybase SQL Anywhere on the backend.
With 10% of the project completed, I was through 25% of the money - $10,000
at this point. (Math quiz: what was the budget and what was the projected
cost overrun?)
Two questions had to be answered. 1) How did I screw up the budget so
terribly and 2) how could I fix it?
The answer to (1) is that I budgeted the project based on what I could do it
in MS Access. The reason that I didn't use Access is that for multi-user
applications using bound forms and linked tables across the network, Access
stinks. It is slow and unreliable.
The framework is complex, but once it is written, it's really simple to use.
Access is totally faked out. It becomes a really fast single user database
working only with local data.
How do you deal with concurrency? Presumably a long time can pass between
retreiving data into the temp tables and all changes being written back to
the source. How do you know some of those same records have not been
changed by other users?
When people talk about the benefits of "disconnected" data I never
understand how they can deal with this part.
Buying a dual core is now standard and they will soon be replaced with quad
core as the basic developer machine. (Probably that the price of the quad
core will be cut by two this autumn, if not before.).
If I had to do something in that vein with a .MDB, I guess it
would just be a field in the record - something like a LAN UserID
and a timestamp.
But that's a whole new layer of complexity and programming effort
and the kind of apps I do aren't really exposed to concurrency
because of the small number of users.
So, I guess one cost of my approach is loss of JET's monitoring
of concurrency issues.
yes, you are wasting your time
Microsoft is going to make a new .NET version of ADP with the next release--
so .NET is not a total waste of time
but it is obvious that ADP is a much much much better platform than .NET
Then what's the benefit of editing local temporary tables? With that
small a user population, forms bound to the linked tables ought to
function just fine.
What problem are you trying to solve with all the complexity you
introduce with your temp tables?
(PeteCresswell) said:Per David W. Fenton:
I don't see it as all that complex. More code, yes.... but far
from rocket science.
I'm not pushing it as the end-all-be-all, but it works for me.
What I *think* I get is:
------------------------------------------------------------
1) Maybe a little more robustness.
Nobody's "in" the back end for more than a fraction
of a second - so if somebody goes to lunch or home
leaving the app up and running on their PC, they're
not locking anybody else out who wants to edit
the same block.
If somebody's PC crashes or a NIC goes haywire
there's less chance of the back end getting
corrupted.
2) Control.
I like my forms to have two modes: Browse and Edit.
When big bucks are at stake and people are banging
on a form all day every day, I believe having to
click "Change" before being able to update any
fields allows fewer errors than if somebody can update
fields just by putting an elbow on the keyboard.
I know this can be achieved with a conventional bound
form - and I even tried a few like that. But every
time I tried it, in the end something came up that
it couldn't handle - can't recall what bc it was
such a long time ago; but once I started gaming
the system so-to-speak the complexity and subtleties
needed seemed to me tb just as bad as the additional
code used by my methods.
Finally, when it's time for interdependent edit checking
(e.g. if BondType=Debt, then InterestAccrualType
must=Variable) I find my approach works for me.
Never did figure out how to do that with bound forms.
3) Transactions
When there are multiple child tables involved in a given
form/edit, I prefer to wrap everything in a transaction
so that if part of it goes south, nothing gets updated.
4) Adaptability.
The guys I serve tend to evolve their applications as
circumstances arise. One of the reasons they called
on me and not IT was that they don't have the time or
inclination to spell everything out in a spec, sign it
in blood, and then take an hour or two out of their
work day to go before some committee every time they
want to make a change.
So if I go with the work-table-based form from the get-go,
and they come up with something like interdependent edit
checking, I know I can handle it without re-architecting
the whole form.
One more time: I'm not presenting this as
The-Good-Right-And-Holy-Path or The Revealed Truth or
anything like that.
It's just something that works well enough for me and using it
most of the time gives my apps an almost boring consistency -
i.e. I can go into one two years later and it's all there
right up front in the code. I don't have to try to remember what
little tricks I was performing to get something done.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.