>Is there a best one or is it just preference (I'm using this code to ensure that any table is on the correct record after something that might move the record pointer has finished so a primary key is not an option).
The PK is an option, instead of saving the recno() save the PK value. Then instead of GOTO lnRecno you Locate for PK = PkSaveVar.
The reason that this is important is that once you move from Fox data the concept of recno goes away (or at least it becomes a problem).