SETFILTER problem

OscarA
OscarA Member Posts: 11
WITH rLP DO
BEGIN

SETFILTER("Name",'Mike');
IF FIND('-') THEN
REPEAT
// 1st cicle
UNTIL NEXT = 0;

SETFILTER(Address,'Stre*');
IF FIND('-') THEN
REPEAT
//2nd cicle
MODIFY;
UNTIL NEXT = 0;

END;

Why does the code above doesn't work.?
It enters in the first cicle and executes but it doesn't enter in the second.
The setfilter function help says that it removes previous filters.

Answers

  • remco_rausch
    remco_rausch Member Posts: 68
    Hi,

    It removes filters that are applied to the same field that you are applying the new filter to.

    So in your second section you have the following filters applied to rLP
    Name,'Mike'
    Address,'Stre*'

    To make it work you should have

    WITH rLP DO
    BEGIN

    SETFILTER("Name",'Mike');
    IF FIND('-') THEN
    REPEAT
    // 1st cicle
    UNTIL NEXT = 0;

    SETRANGE("Name);
    SETFILTER(Address,'Stre*');
    IF FIND('-') THEN

    The setrange will clear the filter that you applied to name in the earlier section.
    REPEAT
  • kriki
    kriki Member, Moderator Posts: 9,132
    Some good programming practices:
    -don't use WITH-statements. I know Navision uses them, but they create confusion.
    -to put filters, put always this:
    recMyRecord.RESET;
    recMyRecord.SETCURRENTKEY(....); // EVEN if you use the primary key
    recMyRecord.SETRANGE(....);  // put the fields on which you filter in the order of the key you are using
    ....
    recMyRecord.SETFILTER(....); // only use SETFILTER if you can't use a SETRANGE
    ...
    
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • OscarA
    OscarA Member Posts: 11
    Thank you!

    Problem solved!