I don't know if tis help but I always work with views instead of tables and on the view I filter the record to have on ly what I need, for exemple in your case I would use a view on PERSON were iOnwers = ?lcOnwers.
In that situation, after deleting a record I just do skip 1 in the view (with a little test if eof, go top...) if I use a grid, I also have to refresh the grid explicitly.
In other word, I do net use Locate and when I use it its on a very small subset of record.
Maybe you can apply this technic with tables using the filter property.
Good luck
Diane Robitaille eng.