mysterious message

When I try to print an order confirmation I get the message ‘Another user has changed the definition of the table …’. But I just do a deleteall on this table? Has anyone experience with this message? Michael

You make a deleteall to the order table ??? This message usually appears, when someone else has modified the table and Navision discovers that the version you have in the object cache is old. Try restarting the Navision client and do it again, does it happen again and on different clients? Do you have any custom trigger code for the table?

Hi Qasimodo, Are you working in a development environment wherein many developers are working on the same database at same time. B’cos this is the most likely cause for occurence of error. If not, you must get mesg. “Another user has modified the record…” and not table definition. If you are encountering this error in dev. environment, it’s a object cache issue, else in a prodn. environment then a locking issue. Inform your verison and other details. Regards

Hi Mohammad, this message occurs in a prodn. environment. Before starting the print, I fill the table with certain datas. So before the next order confirmation or invoice will be printed, I make a deleteall on that table, fill it with datas … and so on. Everything is allright, when the customer quits Navision, starts it again and than the print of that invoice can be done without error message.

This error can occur when you pass a record variable to a codeunit and it is modified by the codeunit. Then you attempt to change the value of a field on the same record from the form. When the change is attempted, it realizes that it has a different version than the one that has already been commited. The fix for this is to restructure you code. This can also happen, though more rarely if 2 users access the same record and both change it. The last one to attempt to commit the change will receive this error. Bill Benefiel Manager of Information Systems Overhead Door Company (317) 842-7444 ext 117

This error often occurs in the SQL environment under the following circumstances Var1 reads a table Var2 reads the same record Var1 delete the record This happens as when a record is read, the timestamp is also read from the SQL database. When you delete a record the timestamp is compared with the last read. So I think your report is reading from the table before your DELETEALL. So make sure you use Var.FIND; Var.DELETEALL; So you variable owns the last read. Paul Baxter Edited by - triff on 2002 Jun 17 23:18:10

Hi, From the details given by you,you need to check: 1. ‘Transaction Type’ property in the report you are running for type of locking that’s used there. Changing it may solve your problem. 2. In case of SQL, the record level locking can be the source of problem. You need to use tools related to “Performance Troubleshooting on SQL Server Tools” available in Navison Tools CD. 3. The code behing report you are using can also be checked for GET,FIND statements. If these are used during another process on same set of records also, you’ll get error. Hope above suggestions help you solve problem. Regards

The solution is a mixture of Paul and item 3. of Mohammad. Thanks. Michael