> The above tells me you using the wrong tool. The ms-access object model
> REALLY REALLY REALLY falls down when you using un-bound forms. You
> would be MUCH better to use vb here, as it has TONS of wizards, and
> data controls that allow you to build forms with a data connections.
> support the 30-50 users this application will be used co-currently by,
> having used Fox Pro databases in the past I am more confident of its
> ability to hold up with this many users (many more than the database
> was originally intended)
I *really* doubt that dropping native access to a mdb back end
and going to a fox back end is going to be more reliable. You
adding a complex ADO + fox driver "software" layer here that
you did not have before. and, ms-access is still going to be
loading the native "JET" data engine it needs anyway.
So, you adding layers of software here.
If anything, you wind up with a LESS stable
system. Now, your system will have to open table, read table (perhaps
close table at this point). Put data into form. After we edit, we
then take data from form, re-open table, re-execute sql to write back
to that table with sql updates. You more then doubled the steps and
work then just letting access update the table direct like it does
now.
Further, this approach could wind up using MORE bandwidth then
letting ms-access do a NATIVE update to a mdb file. Remember, in the case of
letting ms-access do the update, there is NO odbc, no
extra ADO layer, and I am quite sure that NO sql statements need be
parsed to make the update. Note that just to parse the sql, the sql
has to be *checked* against legal fields in the back end.
So, you likely use LESS bandwidth by leaving the tables open and
using native mdb file for the back end. All of your open/close,
read/load data into form, and then write back out + open/close
connection stuff can actually cause MORE bandwidth to be used
then just letting ms-access update a record it just read
into a form.
Ms-access is able to raw update that table, and,
access is NOT using odbc to connect to the
back end...it a native update system.
I do not see ANY reasonable argument here that moving the back end
to a Fox db, adding additional layers of code and ado.
I don't think you gain anything here. And, the argument that a
Fox back end is going to be more stable is weak.
(all those who developed in FoxPro, raise
your had if you ever had a corrupted index (everyone in the room will
raise their hand)).
So, I really doubt you going to gain additional
stability, and I doubt you gain ANY performance here. The ONLY reason
why you might gain performance is because your FORCING your design
to only load the one record to the form, and you should do that
in ms-access anyway.
With bound tables in ms-access, you don't need to write any update
code, and you seem VERY sensitive to time + cost issues here, and yet
are using up large amounts of developer time to write a bunch of update
code? You could use that time to migrate to sql server.
You not going to gain any more stability or performance here in my IMHO.
> In an ideal world I would have Web based application served by a SQL
> server, however what I can only describe as "red tape" means this
> would have to be done by external suppliers who have an awful habit of
> charging significant amounts of money!
You do realize there is at least 2, perhaps 4 free versions of sql server
available from Microsoft? The time and cost to re-write this stuff
to use ado, fox is likely the same for migration to sql server.
> Happy to take any board any suggestions for alternative development
> tools, given the current constraints.
I would first check if your existing application is correctly setup.
As long as you do the following, you should get good performance, and
stability:
1) split the databae (that likely a given on your part)
2) always distribute a mde to users.
3) NEVER open up a form bound direct to a table unless you use a where
clause.
(so, bound forms are ok, but you MUST restrict the records loaded. With
a small table of 100,000 records, the time to load the form will be same for
a table of 1 record *if* you respect this approach. Here is quick example of
a typical way to "restrict" records (eg: ask the user BEFORE you load the
form
http://www.members.shaw.ca/AlbertKallal/Search/index.html
This also means that as a general rule you not need, nor allow the
navigation buttons
in he form because you load only one record.
Further, once you split the database, and reduced the number of records that
flow to a form, then you 90% of the way to having a application is VERY
close to a good setup for running the data from sql server. So, assuming you
do eventually get sql server, then you simply move your back end data from
the mdb file to sql server, and then link your front end tables to sql
server. At this point, 90%, or more of your code and forms will work "as is"
WITHOUT having to write ANY code. so, you simply tweak that last 10% to work
with sql server...
> There were two reasons I did not consider odbc:
>
[quoted text clipped - 3 lines]
> differently or knows of a driver that will work with vfp 8 features
> please let me know.
I not heard the above. I would assume that the latest drivers for
fox would support the basic functions you speak of. Further, any
reason why you can't used a supported version of fox for the back
end.
> 2) In terms of performance I always thought that using adodb
> connections would be more efficient than odbc connections. Not quite
> sure why I thought this....How does adodb compare with odbc in terms
> of performance?
In general, there not much difference. This is *especially* so when using
a file share, and NOT a server (and, that is our case until you spring
for sql server). However, with ms-access, you not using
a odbc layer, you not using a ADO layer, you using native JET to the mdb.
Now, your proposing to throw in ado layer that you did have before, and
also the FoxPro driver which also has to be loaded and run in addition to
ms-access. Lots and lots of more
layers of software you adding here.
I don't think you gain a thing in terms of stability, or performance
if you have a good desing now...

Signature
Albert D. Kallal (Access MVP)
Edmonton, Alberta Canada
pleaseNOOSpamKallal@msn.com
Albert D. Kallal - 30 Sep 2007 04:10 GMT
I going to add one more comment:
Looking to run 40, or 50 is pushing ms-access.
There are reports that when everything is JUST right, some have manage to
push ms-access to 100 users, but that is in a absolute "ideal" case. And, it
was in a era when we did not load up pc's with a zillion other applications.
And, it should be pointed out that even Microsoft rated the JET database
engine for 50 users (but, that was *before* they had sql server in their
stable (and, before Unicode was used in JET).
Ms-access can be run with 50 users, but I think 50 is really pushing it....
30 users? Hum, sure ok, but only if you have a VERY stable environment (no
network problems, and NO pc's that freeze or get rebooted by users).
And, yes, I do think the FoxPro database format is somewhat more robust then
is ms-access (but, not by much, and it not going to get you a lot more users
IMHO).
Given that versions of sql server are available for free that can easily
handle 50 users, I don't see the cost benefit to try and use a file share
with so many users.

Signature
Albert D. Kallal (Access MVP)
Edmonton, Alberta Canada
pleaseNOOSpamKallal@msn.com