This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

DEVELOPERS FORUM - Update to DB failed

sherenegladysj - Thursday, January 20, 2011 6:05 AM:

Hello all,

Here is the Javascript method to get the least sequence Part number of AML and update the "Part field - Preferred Manufacturer Number ". After upding to DB I'm getting error update failed Part is not locked by you. PLease anyone sort out this issue. I have bold the code. I'm calling this method on Grid event of AML OninsertRow and OndeleteRow.

var minVal = 10000;
var Rels = parent.thisItem.getRelationships(relationshipTypeName);
var count = Rels.getItemCount();
var relatedID;
var sourceID;
for (var i=0; i<count; ++i) {
      var Rel = Rels.getItemByIndex(i);
      var item_number = Rel.getProperty("item_number");
      var sort_order = Rel.getProperty("sort_order");
      if (Number(sort_order) < Number(minVal)) {
            minVal = sort_order;
            relatedID=Rel.getProperty("related_id");
            sourceID=Rel.getProperty("source_id");
      }
      }

var myItem = parent.Item("Manufacturer Part", "get");
myItem.setProperty("id",relatedID);
myItem = myItem.apply();
var name= myItem.getProperty("name");
var preferedno= myItem.getProperty("keyed_name");

var partItem = new Item("Part","get");
partItem.setProperty("id",sourceID);
partItem.setAttribute("select","preferred_manufacturer_no,item_number,locked_by_id");
partItem=partItem.apply();

partItem.apply("lock");
partItem.setAction("edit");
partItem.setProperty("preferred_manufacturer_no",preferedno);
partItem=partItem.apply();

Based on the row item of AML, Prefered_Manufacturer_No in Part should be updated and displayed in PArt Form.

Thansk & Regards,

Sherene



Yoann Maingon - Thursday, January 20, 2011 6:50 AM:

Hi,

In debug mode the method crashes on "partItem.setAction("edit");" ??

"edit" works on an unlock item. so you either don't lock it before or you use the update command instead of edit.

edit = lock + update + unlock

Best,

Yoann,



sherenegladysj - Thursday, January 20, 2011 7:07 AM:

Hello Yoann,

Thanks for your reply. I used "Update" command. For the first time. I'm able to save,unlock and close the Part. For second generation I'm not able to save the Part. I'm getting error as" Update failed Part is not locked by you".

And I want to update the Part Form also whenever there is change in the row item of AML. How to do this??

Thanks.



Yoann Maingon - Thursday, January 20, 2011 7:26 AM:

So now you code is:

var partItem = new Item("Part","get");
partItem.setProperty("id",sourceID);
partItem.setAttribute("select","preferred_manufacturer_no,item_number,locked_by_id");
partItem=partItem.apply();

partItem.setAction("update");
partItem.setProperty("preferred_manufacturer_no",preferedno);
partItem=partItem.apply();

???



sherenegladysj - Friday, January 21, 2011 5:25 AM:

Here is my code...

var minVal = 10000;
var Rels = parent.thisItem.getRelationships(relationshipTypeName);
var count = Rels.getItemCount();
var relatedID;
var sourceID;
for (var i=0; i<count; ++i) {
      var Rel = Rels.getItemByIndex(i);
      var item_number = Rel.getProperty("item_number");
      var sort_order = Rel.getProperty("sort_order");
      if (Number(sort_order) < Number(minVal)) {
            minVal = sort_order;
            relatedID=Rel.getProperty("related_id");
            sourceID=Rel.getProperty("source_id");
      }
      }

var myItem = parent.Item("Manufacturer Part", "get");
myItem.setProperty("id",relatedID);
myItem = myItem.apply();
var name= myItem.getProperty("name");
var preferedno= myItem.getProperty("keyed_name");

var partItem = new Item("Part","get");
partItem.setProperty("id",sourceID);
partItem.setAttribute("select","preferred_manufacturer_no,item_number,locked_by_id");
partItem=partItem.apply();

partItem.setAction("update");
partItem.setProperty("preferred_manufacturer_no",preferedno);
partItem=partItem.apply();

//I want to update the value of Preferred_manufacturer_no in Part Form whenever a row is inserted or deleted in Part AML.
//So I'm calling Form Fill events. But it's not working..

 // Loop through the "input" elements
var elements = document.getElementsByTagName("input");
 alert(elements.length);
for (var j=0; j<elements.length; j++){
 // Look for a custom attribute named "populate"
 if (elements[j].populate == "1") {
  // The property name to use is the input name of the field
  var propName = elements[j].name;
  var propVal = document.thisItem.getProperty(propName);
 alert(propName + propVal);
  // If the property has no value, show a blank field
  if (propVal === undefined) {
   elements[j].value = "";
  } else {
   elements[j].value = propVal;
  }
 }
}

I'm getting the same error while saving/unlocking second time. "Update failed The Part is not locked by you"

Thanks & Regards,

Sherene