Output Journal Reservation Problems (NAV 4.00 SP1)

rosenberglrosenbergl Member Posts: 37
When posting Output Journals we often receive an error message “Another User has modified the record for this Reservation Entry after you retrieved it from the database.”

Our Navision vendor does not know how to repair the data. They did send us a fix that they said was from Microsoft, but it apparently does nothing to repair the bad data already in the system causing these errors. We’ve been deleting the Reservation Entries from table #337 as the errors indicate the offending records. Does anyone else know what to do about this?

Comments

  • ShenpenShenpen Member Posts: 386
    This is not related to bad data I think. When you modify data in a form and someone modifies the same record, you got this message because Navision does not lock records open for reading ("optimistic concurrency"). Of course in this case you do not modify Reservation Entries by hand, it was the program code that modified it. I think a LOCKTABLE must be missing somewhere from the code. Tell your VAR to investigate into this direction.

    Do It Yourself is they key. Standard code might work - your code surely works.
  • krikikriki Member, Moderator Posts: 9,118
    Or it can happen that the program fools itself into thinking this.
    I give a code-example:
    recMyRecord.GET(a,b,c);  // *
    SomeFunction();
    recMyRecord.X := new value;
    recMyRecord.MODIFY(FALSE); // this generates the error
    
    SomeFunction:
    recMyRecord.GET(a,b,c); // same record as in calling routine  // *
    recMyRecord.Y := new value;
    recMyRecord.MODIFY(FALSE);
    
    Some comment:
    In '*' the record is taken and it has a certain version (=V1), then the function "SomeFunction" is called that does a GET on the same record with the SAME VERSION. And "SomeFunction" changes and saves (=MODIFY) the record. On the MODIFY, Navision checks if the old version of the record (V1) is the same as the version in the DB (V1) and it is so it saves the record and in the DB it becomes V2.
    Now in the main function we change the record and MODIFY it. Remember we have read the record as V1!!!!!! And now we save it. So the MODIFY checks it's old version (=V1) with the version in the DB (=V2). They are different!. So error : “Another User has modified the record for this Reservation Entry after you retrieved it from the database.”
    Regards,Alain Krikilion
    No PM,please use the forum. || May the <SOLVED>-attribute be in your title!


  • rosenberglrosenbergl Member Posts: 37
    My var claims it was a bug. We installed a fix from Microsoft (I think our VAR made an additional change too).

    Then, we had to complete all inventory open inventory transactions (Moves, Picks, Shipments, etc.). After that we cleared all Output Journal and Consumption Journal batches. We cleared the Planning Worksheet and the Requisition Worksheet.

    Finally, we deleted all, TRACKING type reservation entries from table #337.

    Now we seem to be OK.
Sign In or Register to comment.