Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

SOLVED

Data repeats in multiple instances, please help.

mikemsr44
Level 1
Level 1

Hi,

I have been working for days on this form using Adobe Livecycle 9 ES2 and need some help.  I am new to LiveCycle and JavaScript, but as you'll see, I've learned a lot .

I have a repeatable subform (GoalSheet) that totals values based on a dropdown:

var len = form1.GoalSheet.Table6._Others.count;

var sum = 0.0;

this.rawValue=0;

if (form1.GoalSheet.Table6.First.Funding1.rawValue==1)

{

sum += form1.GoalSheet.Table6.First.Cost.rawValue;

}

for (var i = 0; i < len; i++){

if (form1.GoalSheet.Table6.resolveNode("Others[" + i + "]").fsource.rawValue==1) {

sum += form1.GoalSheet.Table6.resolveNode("Others[" + i + "]").Cost2.rawValue;

}

}

this.rawValue = sum;

This works beautifully.  However, when the user creates a second instance of GoalSheet, it doesn't work. 

Any suggestions?

A link to the form is here:  https://www.dropbox.com/s/94t48cw2ywcxpcq/4-20%20Draft_total_formcalc_pagination_safetynet%20v126.pd...

Thanks for any and all help!

Michael

1 Accepted Solution
radzmar
Correct answer by
Level 10
Level 10

Hi,

as the GoalSheet is a repeatable instance as the Others row you have to loop through all its instanced too.

var goalSheets = _GoalSheet.count,

          sum = 0;

for (var i = 0; i < goalSheets; i += 1) {

          var vGoalSheet = form1.resolveNode("GoalSheet[" + i + "]"),

                    vOthers = vGoalSheet.Table6._Others.count;

          if (vGoalSheet.Table6.First.Funding1.rawValue == "1") {

                    sum += vGoalSheet.Table6.First.Funding1.rawValue;

                    for (var j = 0; j < vOthers; j += 1) {

                              sum += vGoalSheet.Table6.resolveNode("Others[" + j + "]").Cost2.rawValue;

                    }

          }

}

this.rawValue = sum;

Hope this helps.

View solution in original post

3 Replies
radzmar
Correct answer by
Level 10
Level 10

Hi,

as the GoalSheet is a repeatable instance as the Others row you have to loop through all its instanced too.

var goalSheets = _GoalSheet.count,

          sum = 0;

for (var i = 0; i < goalSheets; i += 1) {

          var vGoalSheet = form1.resolveNode("GoalSheet[" + i + "]"),

                    vOthers = vGoalSheet.Table6._Others.count;

          if (vGoalSheet.Table6.First.Funding1.rawValue == "1") {

                    sum += vGoalSheet.Table6.First.Funding1.rawValue;

                    for (var j = 0; j < vOthers; j += 1) {

                              sum += vGoalSheet.Table6.resolveNode("Others[" + j + "]").Cost2.rawValue;

                    }

          }

}

this.rawValue = sum;

Hope this helps.

View solution in original post

mikemsr44
Level 1
Level 1

Thank you so much for your reply.  You are putting me on the right track.

However, in my original code I have two if statements, one to sum the First row and one to sum the Others row.  Would you mind incorporating that in your explanation?  I am having trouble picturing how that looks.

I appreciate your time.

Michael

form1.GoalSheet.PracticeTitle1::calculate - (JavaScript, client)

var len = form1.GoalSheet.Table6._Others.count;

var sum = 0.0;

if (form1.GoalSheet.Table6.First.Funding1.rawValue==1)

          {

          sum += form1.GoalSheet.Table6.First.Cost.rawValue;

          }

for (var i = 0; i < len; i++){

if (form1.GoalSheet.Table6.resolveNode("Others[" + i + "]").fsource.rawValue==1) {

                              sum += form1.GoalSheet.Table6.resolveNode("Others[" + i + "]").Cost2.rawValue;

                    }

          }

this.rawValue = sum;

mikemsr44
Level 1
Level 1

I got it working correctly. 

Thank you so much for your help!

Michael