Mark and Markedonly

sabzamsabzam Member Posts: 1,149
Hi Everybody,

Let's say I have a Sales Line Record. I need to compare the current record with all the records in the table except for the current one. This code will be running on the validate trigger of a particular field. How should the code be written to distinguish between the current record and all the otehr records. I think i have got to use the mark and markedonly but not sure how it has to be done.

Thanks in advance for your help

Comments

  • krikikriki Member, Moderator Posts: 9,110
    Put the record you need to check in another variable. And then you check the primary keys of both records.
    LrecSalesLine.GET(....)
    LrecSalesLineToCheck := LrecSalesLine;
    
    LrecSalesLine.RESET;
    LrecSalesLine.SETCURRENTKEY(...)
    LrecSalesLine.SETRANGE(....);
    IF LrecSalesLine.FINDSET THEN
      REPEAT
        IF (LrecSalesLine."Document Type" <> LrecSalesLineToCheck."Document Type") OR
            (LrecSalesLine."Document No." <> LrecSalesLineToCheck."Document No.") OR
            (LrecSalesLine."Line No." <> LrecSalesLineToCheck."Line No.") THEN BEGIN
          // LrecSalesLine is different from LrecSalesLineToCheck
          ...
        END;
      UNTIL LrecSalesLine.NEXT = 0;
    
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • rvduurenrvduuren Member Posts: 92
    Hello,
    Using "MARKED" is one possibility.. Here's what I would do:
    SalesLine.SETRANGE("Document Type", Rec."Document Type");
    SalesLine.SETRANGE("Document No.", Rec."Document No.");
    SalesLine.SETFILTER("Line No.", '<>%1', Rec."Line No.");
    IF SalesLine.FINDSET THEN
      REPEAT
        // Do you thing..
      UNTIL SalesLine.NEXT=0;
    
    Met vriendelijke groet, best regards,

    Rvduuren
  • krikikriki Member, Moderator Posts: 9,110
    rvduuren wrote:
    Hello,
    Using "MARKED" is one possibility.. Here's what I would do:
    SalesLine.SETRANGE("Document Type", Rec."Document Type");
    SalesLine.SETRANGE("Document No.", Rec."Document No.");
    SalesLine.SETFILTER("Line No.", '<>%1', Rec."Line No.");
    IF SalesLine.FINDSET THEN
      REPEAT
        // Do you thing..
      UNTIL SalesLine.NEXT=0;
    
    But this doesn't work if your filters include different document nos. (or document types).
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


Sign In or Register to comment.