I am using the below code to sum a dynamic table. Each time I add a second "Table1.Row1" row, and select the value that would render countU ==0 true, the Livecycle form will not re-calcuate the query correctly unless I re-select the first row "Table1.Row1" countU value. In other words, the dynamic table has two levels of expansion. When I try to add more row under each primary row, the calculation does not automatically run. Any suggestions? Thanks in advance!
var sumD = 0;
var countS = this.resolveNodes("TableA.Row1[*].Subform2[*].Table1.Row1[*].MBRS");
var countT = this.resolveNodes("TableA.Row1[*].Subform2[*].Table1.Row1[*].NON");
var countU = this.resolveNodes("TableA.Row1[*].Subform2[*].Table1.Row1[*].CLC");
for (var i = 0; i < countS.length; i++)
{
if(countU.item(i).rawValue==0)
{
sumD += (countS.item(i).rawValue * countT.item(i).rawValue);
}
}
sumD
Solved! Go to Solution.
Views
Replies
Total Likes
Hi,
I'm not sure I understand your structure you seem to have an inner repeating subform then a repeating table, that would be three levels. Either way you will need to reference the instanceManager count property so the calculation script knows to run when the value changes, so something like;
var sumD = 0;
var tableARows = this.resolveNodes("TableA.Row1[*]")
for (var i = 0; i < TableA._Row1.count; i++) {
var tableARow = tableARows.item(i);
var table1Rows = tableARow.resolveNodes("Subform2.Table1.Row1[*]");
for (var j = 0; j < tableARow.resolveNode("Subform2.Table1")._Row1.count; j++) {
table1Row = table1Rows.item(j);
if (table1Row.CLC.rawValue == 0) {
sumD += table1Row.MBRS.rawValue * table1Row.NON.rawValue;
}
}
}
sumD;
Regards
Bruce
Views
Replies
Total Likes
Please try to shar your form if possible, in order we can help you with you issue.
thanks.
Views
Replies
Total Likes
Hi,
I'm not sure I understand your structure you seem to have an inner repeating subform then a repeating table, that would be three levels. Either way you will need to reference the instanceManager count property so the calculation script knows to run when the value changes, so something like;
var sumD = 0;
var tableARows = this.resolveNodes("TableA.Row1[*]")
for (var i = 0; i < TableA._Row1.count; i++) {
var tableARow = tableARows.item(i);
var table1Rows = tableARow.resolveNodes("Subform2.Table1.Row1[*]");
for (var j = 0; j < tableARow.resolveNode("Subform2.Table1")._Row1.count; j++) {
table1Row = table1Rows.item(j);
if (table1Row.CLC.rawValue == 0) {
sumD += table1Row.MBRS.rawValue * table1Row.NON.rawValue;
}
}
}
sumD;
Regards
Bruce
Views
Replies
Total Likes
Thanks Bruce,
It was the instance manager - I used the exeCalculate( ) in another part of the form, and tested it with an app.alert to ensure the rows were then counting the number of instances correctly to perform the calculation properly.
Views
Likes
Replies