Filtering records with the SetRange, SetFilter, GetRangeMin, and GetRangeMax methods

The following methods can be used to filter records in a table:

These methods are some of the most commonly used AL methods. They set limits on the value of one or more specified fields, so that only a subset of the records are displayed, modified, deleted, and so on.

SetRange method

SetRange sets a simple filter on a field.

SetRange has the following syntax.

Record.SetRange(Field [,From-Value] [,To-Value]);  

In the following example, SetRange filters the Customer table by selecting only those records where the No. field has a value between 10000 and 90000.

Customer.SetRange("No.",'10000','90000');  

When you use SetRange the following rules apply:

  • SetRange removes any filters that were set previously and replaces them with the From-Value and To-Value parameters that you specify.
  • If you use SetRange without setting the From-Value and To-Value parameters, the method removes any filters that are already set.
  • If you only set the From-Value, the To-Value is set to the same value as the From-Value.

SetFilter method

SetFilter sets a filter in a more general way than SetRange.

SetFilter has the following syntax.

Record.SetFilter(Field, String [, Value], ...]);  

Field is the name of the field on which you want to set a filter. String is the filter expression. String may contain placeholders, such as %1 and %2, to indicate where to insert the Value parameter(s) in a filter expression.

The following example selects records where the value of No. is larger than 10000 and not equal to 20000.

Customer.SetFilter("No.", '>10000 & <> 20000');  

If the variables Value1 and Value2 have been assigned "10000" and "20000" respectively, then you can use the following statement to create the same filter.

Customer.SetFilter("No.",'>%1&<>%2',Value1, Value2);  

GetRangeMin method

GetRangeMin retrieves the minimum value of the filter range that is currently applied to a field.

GetRangeMin has the following syntax.

Record.GetRangeMin(Field);  

A runtime error occurs if the filter that is currently applied is not a range. For example, you can set a filter as follows.

Customer.SetFilter("No.",'10000|20000|30000');  

With this filter, the following code fails because the filter isn't a range.

BottomValue := Customer.GetRangeMin("No.");  

GetRangeMax method

GetRangeMax retrieves the maximum value of the filter range that is currently applied to a field.

GetRangeMax has the following syntax.

Value := Record.GetRangeMax(Field)  

See also

SetRange method
SetFilter method
GetRangeMin method
GetRangeMax method