Griff,
while it works, it introduces the dependence on the scope of the OldFilter variable.
After you set filter to Evaluate(m.OldFilter) compare the filter as it was (m.OldFilter itself) with SET("FILTER") as it is reflected now...
See?
If you had soemthing like SET FILTER TO ID=1
then store that in OldFilter via
[pre]OldFilter = SET("FILTER")[/pre]
then OldfFilter is "ID=1".
If you now "reset" via SET FILTER TO Evaluate(m.OldFilter) you only get the record with ID=1. That's fine. But your reset filter condition literally is "Evaluate(mOldFilter)" and if now or in following code m.OldFilter changes its value, eg when using OldFilter = SET("FILTER") elsewhere to remember the old filter condition of another workarea, your filter here surprisingly will change its behaviour!
Don't do that, here you need macro substitution to reset the filter: SET FILTER TO &m.OldFilter.
Bye, Olaf.