Quote Originally Posted by Rachael View Post
I should point out that most of the above examples are where I am using DD's, and the idea of putting the global buffer back the way it was, is so as not to confuse the DD's and end up getting strange things happening within the programme.
Don't forget you can also (possibly) use Refind_Records here. If a DDO already contains the correct record, but code is executed such that the global buffer is changed, sending Refind_Records of the DDO will re-sync the global buffer to the record that's in the DDO.

But other than that, at a glance any of your suggestions would be ok. I'd have to check but I'm pretty sure I've used the first suggestion - the simple unconditional FindByRowId.