A
Access57
Program runs great all day in single user mode with absolutely no errors but
is very "unstable" in multiuser mode because it will occasionally get error
messages when two users apparently access same table (but different records)
Usually receive one of three Error messages:
predominantly 3343 - Unrecognized database format (which occurs when Access
does not write to the database properly); or
Invalid SQL String, Expecting SELECT, UPDATE, etc. 2147217900 or 7904 error.
I am confused because I am not getting 3186 / 3187 / 3188 / 3189 type
messages about record locking problems - it seems to have trouble
communicating correctly.
(Also, the error messages are not "accurate" because it does recognize the
database the rest of the time and it runs the same SQL commands with no
problems - i.e. the error messages are about the symptoms, not the real
problem.)
The errors appear random - that is to say, they occur in many different
places of the program and the error never repeats at same place, even when
using the same data (using a "Backup" copy), but it is always appears to be
when a second user tries to write to a table that was recently accessed by
the first user.
Program was originally written in 1994 (Access 2.0) then upgraded to 95,
then 97, then 2000, then Access 2002 format. I "Open database with Record
Level Locking". I am using a "data.mdb" with tables / backend sitting on a
Win XP SP2 computer with about 10 Win XP SP2 LAN computers running local
"front end" copies of the "program.mdb" in runtime mode as the front end on a
Gigabit LAN (192.168.20.XX)
When I run simultaneous sessions (multiuser test & checkout) I will get
about two errors in ten tries (that is to say, it works correctly the other
eight times). If I repeat with same data (a "fresh" copy), I will get about
the same number of errors but in different locations - so the data and
program will work properly, but it seems to depend on the timing of when the
two users hit the backend.
So I believe my code is good (which is ADO recordsets, some docmd.runSQL,
and alot of append queries to temp tables for reference purposes) but I must
be missing some fundamental element necessary for multiuser environment.
Any ideas of what I am missing? Thanks for your interest and any help you
can offer!
is very "unstable" in multiuser mode because it will occasionally get error
messages when two users apparently access same table (but different records)
Usually receive one of three Error messages:
predominantly 3343 - Unrecognized database format (which occurs when Access
does not write to the database properly); or
Invalid SQL String, Expecting SELECT, UPDATE, etc. 2147217900 or 7904 error.
I am confused because I am not getting 3186 / 3187 / 3188 / 3189 type
messages about record locking problems - it seems to have trouble
communicating correctly.
(Also, the error messages are not "accurate" because it does recognize the
database the rest of the time and it runs the same SQL commands with no
problems - i.e. the error messages are about the symptoms, not the real
problem.)
The errors appear random - that is to say, they occur in many different
places of the program and the error never repeats at same place, even when
using the same data (using a "Backup" copy), but it is always appears to be
when a second user tries to write to a table that was recently accessed by
the first user.
Program was originally written in 1994 (Access 2.0) then upgraded to 95,
then 97, then 2000, then Access 2002 format. I "Open database with Record
Level Locking". I am using a "data.mdb" with tables / backend sitting on a
Win XP SP2 computer with about 10 Win XP SP2 LAN computers running local
"front end" copies of the "program.mdb" in runtime mode as the front end on a
Gigabit LAN (192.168.20.XX)
When I run simultaneous sessions (multiuser test & checkout) I will get
about two errors in ten tries (that is to say, it works correctly the other
eight times). If I repeat with same data (a "fresh" copy), I will get about
the same number of errors but in different locations - so the data and
program will work properly, but it seems to depend on the timing of when the
two users hit the backend.
So I believe my code is good (which is ADO recordsets, some docmd.runSQL,
and alot of append queries to temp tables for reference purposes) but I must
be missing some fundamental element necessary for multiuser environment.
Any ideas of what I am missing? Thanks for your interest and any help you
can offer!