SETFILTER allows us to define and apply any filter expression that could be created manually, including various combinations of ranges, AL operators, and even wild cards. The SETFILTER syntax is as follows:
Record.SETFILTER ( Field, FilterString [, FilterValue1], . . . ] );
SETFILTER also can be applied to Query objects with similar syntax:
Query.SETFILTER ( ColumnName, FilterString [, FilterValue1], . . . ] );
FilterString can be a literal, such as '1000..20000' or 'A*|B*|C*', but this is not good practice. Optionally (and preferably), we can use variable tokens in the form of %1, %2, %3, and so forth, representing variables (but not operators) such as FilterValue1, FilterValue2, and so forth to be substituted in the filter string at runtime. This construct allows us to create filters whose data values can be defined dynamically at runtime. A new SETFILTER replaces any previous filtering in the same filter group (this will be discussed...