Recursive function: Operator IN / NOT IN or alternat.method

andy76andy76 Member Posts: 616
Hello,

is it possible to change the forum where I posted a previous message if I inserted it in a not correct place in Mibuso forums?

I have to scroll Reservation Entry table recursively with a lot of
conditions of filter.

this is a function called more times

T337.setrange(....);
T337.setrange(....);
T337.setrange(....);
T337.setrange(....);
T337.setfilter('Entry No.','<>%1',prev.'Entry No.');

now I have a case where the loop is infinite and Navision client closes.

I understand that last filter condition is not enough because if there are
more records with identical previous conditions I can return on previous one
so I have to substitute it in a manner similar to this

declare a variable where I insert all previous Entry No. already scrolled
and then use a new filter similar to following

T337.setrange(....);
T337.setrange(....);
T337.setrange(....);
T337.setrange(....);
T337.setfilter('Entry No.','NOT IN [%1]',prev.myVar);

The problem is that myVar should be of types text to concatenate previous
Entry No separated by commas [,] but after it doesn't go right because 'Entry
No.' of setfilter is of type Integer.

What do you suggest?

Thank you very much

Comments

  • kinekine Member Posts: 12,562
    May be better is to describe what is your target, what you want to do than just solving some never ending loops because wrong design. For me it seems that the meaning of your code is not clear and it can be done in antoher way...
    Kamil Sacek
    MVP - Dynamics NAV
    My BLOG
    NAVERTICA a.s.
  • andy76andy76 Member Posts: 616
    In few words I only have to exclude a range of values in a filter.

    rec.SETFILTER("fieldName",'NOT IN [%1]',varRange);

    where varRange is a variable of type Text with more not determined values for varRange

    for example varRange='12345,6789,8908,....' where the single values are

    12345
    6789
    8908

    they are a string created dinamically.

    but "fieldName" is of type Integer

    Thank you
  • SavatageSavatage Member Posts: 7,142
    you code needs to reflect more of a
    Setfilter("Entry No.", '<>12345&<>6789&<>8908');
  • andy76andy76 Member Posts: 616
    I don't know which are the values and how many they are.
    The string of values is populated dinamically at run time.
    There can be an only one value or 100.

    Do you understand?

    Thank you
  • SavatageSavatage Member Posts: 7,142
    how are they being entered?

    into some text string? value1,value2,etc?
    kine wrote:
    May be better is to describe what is your target, what you want to do than just solving some never ending loops because wrong design. For me it seems that the meaning of your code is not clear and it can be done in antoher way...
  • tinoruijstinoruijs Member Posts: 1,226
    I'm guessing using marked records could solve your problem.

    But I'm only guessing. Because like the others; I don't exactly understand your problem. :(

    Tino Ruijs
    Microsoft Dynamics NAV specialist
  • kinekine Member Posts: 12,562
    I know what you want to do, but I do not know why you want to do. I need to know the "meaning of whole" to be able to suggest another way around. This way is not good and there are just problems.
    Kamil Sacek
    MVP - Dynamics NAV
    My BLOG
    NAVERTICA a.s.
  • andy76andy76 Member Posts: 616
    The problem is to exclude the records already passed before and go on recursively on the other ones?
  • kinekine Member Posts: 12,562
    Why not flag the records in some flag and mark them as "processed" to filter them out?
    Kamil Sacek
    MVP - Dynamics NAV
    My BLOG
    NAVERTICA a.s.
  • andy76andy76 Member Posts: 616
    Maybe this is ok.
    I will have to try.

    Thank you
Sign In or Register to comment.