jpmiller Posted June 11, 2019 Share Posted June 11, 2019 Hi, I am trying to get the loop below to run through the record count and execute different results based on the quantity. The rule below never gets past the first if statement. Not sure what I am doing wrong. Any help would be appreciated. var nameFieldName = "first"; var data = new ExternalDataFileEx(PrimaryInputFile()); var totalRecs = data.recordCount; for (i = 0; i < totalRecs; i++) { if (totalRecs = 5000) { var recordsPerBox = (2500); } else if ((totalRecs > 2500) && (totalRecs < 5000)) { var recordsPerBox = Math.ceil(totalRecs / 2); } else (totalRecs < 2500) { var recordsPerBox = (totalRecs); } } var numBoxes = Math.ceil(totalRecs / recordsPerBox); FusionPro.Composition.repeatRecordCount = numBoxes; var boxNum = FusionPro.Composition.repeatRecordNumber; var boxStartRec = (boxNum - 1) * recordsPerBox + 1; var boxEndRec = Math.min(boxNum * recordsPerBox, totalRecs); FusionPro.Composition.AddVariable("totalRecs", totalRecs); FusionPro.Composition.AddVariable("boxNum", boxNum); FusionPro.Composition.AddVariable("numBoxes", numBoxes); FusionPro.Composition.AddVariable("boxStartRec", boxStartRec); FusionPro.Composition.AddVariable("boxEndRec", boxEndRec); FusionPro.Composition.AddVariable("boxStartName", data.GetFieldValue(boxStartRec, nameFieldName)); FusionPro.Composition.AddVariable("boxEndName", data.GetFieldValue(boxEndRec, nameFieldName)); Quote Link to comment Share on other sites More sharing options...
Dan Korn Posted June 11, 2019 Share Posted June 11, 2019 That totalRecs variable is simply a number, not an array, so there's nothing to iterate over in a for loop. I'm not sure exactly what the requirements are that you're trying to meet with this code, but I think you want to do something like this: var data = new ExternalDataFileEx(PrimaryInputFile()); var recordsPerBox = Math.ceil(data.recordCount / 2); if (recordsPerBox < 2500) recordsPerBox = 2500; Or just: var data = new ExternalDataFileEx(PrimaryInputFile()); var recordsPerBox = Math.ceil(Math.max(data.recordCount, 5000) / 2); Quote Link to comment Share on other sites More sharing options...
jpmiller Posted June 11, 2019 Author Share Posted June 11, 2019 That totalRecs variable is simply a number, not an array, so there's nothing to iterate over in a for loop. Thank you Dan. That helps. I was getting frustrated trying to figure out a formula that would loop through the totalRecs until zero. I understand my error now. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.