(windows client-server client, 11.5)
This is something that I would like to screen, before posting to TS.
In my sales system, the user uses a barcode scanner to pick up package number. Then I process the number and all that you know...
The problem comes when heavy load. Sometimes the lot record of the package is being used by the purchases guy, (I just add 1 to the number of packages on the lot, record last time, and some other stuff, all in just the lot record) and also other tables are updated inside a single trx. In all it takes up to half second, but if there are parallel uses doing purchases and sales, the posibility of a collision on the lot, product and stock tables is higher, so perhaps the wait spawns 2 to 4 seconds, so far the program handles as expected and manages gracefully this contingency.
The problem is the "Record is in use by joe on Sales1. wait or press...." message. When it shows and goes away automatically, it takes focus away with it... the cursor is no longer inside the window, cant use any keyboard key, even I have a trigger for the tab key on the frame anywhere: "ENTRY to package field", but when cursor is "stolen", the user has to approach computer use the mouse and keep doing scanning, sometimes 6 feet away if they noticed this thing, if not they keep scanning, and when counts don't match, they have to unload the truck and do all again. As you can imagine, this is irritating for them.
I created visual aids to inform to user where is cursor, so have entry and leave triggers changing bgcolors of the field, but when cursor is stolen, if won't even fire the leave trigger...
So wonder if somebody has noticed this, or otherwise have found some alternative?
PS: I don't get deadly embrace (deadlock)...
Just a thought, but if you get the record exclusive lock with no-wait and then check if you have the record available then you will not get the grey box of doom.
And then handle the wait my self.....
I would like that avm do that... but will check the current algorithm and give it a thought any way, thanks.
you can check "if locked <table> then..." to differentiate why something is not available.