Change the sorting key after FINDSET

poppinspoppins Member Posts: 647
Hi everyone,

Is it possible to use a certain key to search for some records, and then change the key after finding the records to do some other treatment?
Does it have an impact on the result or/and performance?

SETCURRENTKEY(Field1,Field2,Fied3)
SETRANGE(Field1, ...)
SETFILTER(Field2, ...)
SETRANGE(Field3, ...)
...
IF FINDSET THEN
REPEAT
SETCURRENTKEY(Field4,Field5);
.................................
UNTIL NEXT = 0;

Thanks in advance :smile:

Comments

  • RockWithNAVRockWithNAV Member Posts: 1,139
    edited 2018-07-07
    SETCURRENTKEY(Field4,Field5);

    This code will always have one record at a time, so even if you write this code it will have no sense. Sorting is already done above and on the base of which one by one record will enter into FINDSET execution.

    Better to remove this as unnecessarily one line of code will be executed which has no impact altogether apart from downgrading performance.
  • Slawek_GuzekSlawek_Guzek Member Posts: 1,690
    Changing the current key inside the loop will have a negative impact on performance - which you may or may not notice - depending on how big your table is.

    It will also, most likely, have a negative impact on results - you will likely 'loose' the 'first' record (or more) from the subset ordered along fields 4 and 5, and/or you may have another record processed twice - the first record from your subset ordered along fields Field1, 2 and 3.
    Slawek Guzek
    Dynamics NAV, MS SQL Server, Wherescape RED;
    PRINCE2 Practitioner - License GR657010572SG
    GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-03
Sign In or Register to comment.