quest4
I may a day late and a dollar short weighing in on this one, but "ISO" perked my ears.
You can still use autonumber if you wish but just use the numbers internally, and don't display it on the form or report.
Use a tblCtrlNo (control number table) to store your control number or numbers. Lots of ways to approach this -- for example, use a text field for the primary key and text or numeric field for the control number.
Example:
PKey CtlNo or CtlNo
CTLINV 1000 A2000
CTLPAY 2001 R2001
CTLPO 3002 P3002
You get the picture.
Have ONE central module that updates the control record.
This module advances the control number and updates the control record and returns the applicable control number to the calling module. The neat thing is that you can increment the control number by 1 or 10 or the next alpha character. Hint: On large systems, use record locking to prevent collisions.
Then, from your form that performas the update, call the central module AFTER creating the initial record, i.e., use the after insert event. (example "mdlUpdateCtl CLTInv, strInvNo"

Grab the next control number, and update the trasaction record with the control number.
Word of caution. Since the control number is stored in a table, you should probably use some safe guards, ie security, to prevent a person from manipulating the data. For example, a little hanky-panky in payroll or A/P.
I am sure there are vairation on this. And already some excellent ideas have been presented.
Richard