You need to use Exit Script [False]
to keep the triggering action from being processed and thus keep the cursor in the field where you have your script put it with either go to field, go to next field or go to object.
You might also see if you can configure your scanner to append a character to the beginning of your scanned data. Then you can set up OnLayoutKeystroke to check for that keystroke and put the cursor in the correct field to recieve the scanned data.
Aaaaaah, I knew it was something simple! Thank you so much, everything is working perfectly now.
(I did consider the keystroke trigger option -- but I'm already having trouble with the scripts running too slowly for the rate at which the barcode scanner dumps, and I didn't want to have to slow things down even further.)
We use that method, (an initial character on the beginning of the scanned data), with a magnetic script reader here and it works quite well with no noticeable slow downs.
The script is quite simple:
If [ Get ( Triggerkeystroke ) = "~" ]
Go to Field [Table::ScanField]
Exis Script [false]