I got a form which contains a simple table box, based on own Custom Record, nl "Return Line"
Enabled Field No. Field Name Data Type Length Description
Yes 1 Customer Code 20
Yes 2 Customer Name Text 30
Yes 3 Item Code 10
Yes 4 Quantity Received Integer
Yes 5 Finished Boolean
Enabled Key SumIndexFields
Yes Customer,Item,Finished
Now on the form i have a Tableview to show only the Records where Finished = FALSE;
In this form the user can enter new lines, Finished will be default False off course...
Now at the bottom there is button which calls a function which should loop through my Custom Return lines
and Create Return Orders for these Lines... this all works fine.
But when the lines have been processed they need to get updated so that their status of the Finished field, equals TRUE
lv_Customer := '';
lv_LineNo := 0;
lv_HeaderCreated := FALSE;
lv_Return.RESET;
lv_Return.SETCURRENTKEY(Customer,Item,Finished);
lv_Return.SETRANGE(Finished,FALSE);
IF lv_Return.FINDSET THEN BEGIN
REPEAT
IF (lv_Customer = '') OR (lv_Customer <> lv_Return.Customer) THEN BEGIN
IF lv_Customer <> lv_Return.Customer THEN
lv_HeaderCreated := FALSE;
IF lv_HeaderCreated = FALSE THEN BEGIN
lv_SalesHeader.INIT;
lv_SalesHeader.VALIDATE("Document Type",lv_SalesHeader."Document Type"::"Return Order");
lv_SalesHeader.VALIDATE("No.",'');
lv_SalesHeader.INSERT(TRUE);
lv_SalesHeader.VALIDATE("Sell-to Customer No.",lv_Return.Customer);
lv_SalesHeader.MODIFY(TRUE);
lv_HeaderCreated := TRUE;
COMMIT;
END;
END;
lv_SalesLine.INIT;
lv_SalesLine.VALIDATE("Document Type",lv_SalesLine."Document Type"::"Return Order");
lv_SalesLine."Document No." := lv_SalesHeader."No.";
lv_LineNo += 10000;
lv_SalesLine."Line No." += lv_LineNo;
lv_SalesLine."Sell-to Customer No." := lv_Return.Customer;
lv_SalesLine.Type := lv_SalesLine.Type::Item;
lv_SalesLine.VALIDATE("No.",lv_Return.Item);
lv_SalesLine.VALIDATE(Quantity,lv_Return."Quantity Received");
lv_SalesLine.INSERT(TRUE);
lv_Customer := lv_Return.Customer;
UNTIL lv_Return.NEXT = 0;
END;
Changing the code to:
...
lv_SalesLine.INSERT(TRUE);
lv_Customer := lv_Return.Customer;
lv_Return.Finished := TRUE;
lv_Return.MODIFY; UNTIL lv_Return.NEXT = 0;
END;
Leads to following error:
The Return Line does not exist.
Identication fields and values:
Customer No = 10000, Item No = 1960-S, Finished = Yes
Finished: No
Where should i now change the Status of the Finished Field?
0
Answers
you could do it like this
lv_Return2 is a variable of type record the same as lv_Return
You should do it like this as the Finished field is part of your primary key
Hope this helps