I am trying to modify an existing form (that was working well) to allow calculation of a set of values in the event there is a partial year included in the term being analyzed. It is all kinds of a headache as the 'logic' and 'execution' to get there are not as simple as an Excel calculation.
In trying out some possible solutions, I have begun having calculation-stopper Script Syntax Errors, and I can NOT figure out the source of the problem. In my Report palette warning tab, I get repeated warnings such as (but not limited to!)
Object: StepRent2 Description: Error: syntax error near token 'Step2' on line 2, column 6 Type: Script Syntax Error Code:30008
I have no idea what Code 30008 references/ means. I have spent an inordinate amount of time searching for a list of warning codes that include 30008 so I have even the slight clue of knowing what to stare at. I would greatly appreciate if someone could let me know where the Code list is hidden.
I think I have more fundamental issues with my coding attempts, although logically these should work -- but they don't. I would also appreciate if someone could point me to a fuller example of how to work with multiple IF conditions and the proper use in FormCalc for "and" in the IF logic world. I am tripping over setting up this extra complexity in at least 4-5 numerical fields in each subform enveloping a particular "year" number.
Already for each calculation after year 1, there is a formula which is to the effect of (Value for year 1 * escalation%) + Value for year 1 = Value for Year 2. That formula cascades along through each year with a value being based on an escalation of the prior year. The ripple is that the calculating needs to 'stop' based on the number of years in the manually-entered Term. I figured this out, undoubtedly the hard way, by creating in each cell being calculated a FormCalc script that states If (Term.rawValue >{the number for the prior year}) then the $.rawValue for the particular year = (prior year's value.rawValue * escalation%.rawValue) + the prior year.rawValue. It was tedious, but it works.
Now I've added a numerical cell adjacent to the Term cell to reflect the percentage of the year = the number of months in the partial year (e.g. 8 months = .67) -> the Partial Value. The need is simple -- take the full year values from the calculation of the final-partial year (which already shows up due to that year being > the prior year) and multiply those by the "Partial" value. But the execution is challenging me and I am killing any hope of figuring this out by generating Script Syntax Errors (with mysterious Code numbers) that I just don't know what the problem is.
I'm setting this up so that IF the Term is >{prior year}, the Partial Value is >0, and the total of the costs in the following year are 0, THEN ... do the formula for the full year for the final year and then multiply it by the Partial Value. It is not working.
To try to break it down, I added numerical cells for each test year- into which I entered the formula for the full year (a Stepvalue), then in the corresponding value in the main grid I set that that $.rawValue = the Step value * the Partial Value. Logically that is exactly what I need to have happen, even if a labor-intensive way to get there. Yet.... Script Syntax Error.
Every. Time. I. Try.
I'm at wit's end, but so hopeful someone will be able to spot the error of my ways, the flaws in my logic/illogic, and won't mind pointing me in the right direction. Most obviously I am not a coder, though I do try to learn and extrapolate.
Many thanks to anyone who stuck with my lengthy description long enough to get this far. Anyone who can help gets gold stars!
Thanks,
L-E
Views
Replies
Total Likes
Are you able to post the form for people to look at? Would make things a lot easier.
You can't post forms to the forum so you'll need to use acrobat.com, dropbox.com or something like that to host the file.
Oof! Don't I know it! However... I apologize in advance! I've posted 2 versions. One is the form that DOES work -- but doesn't provide for a partial year:
https://files.acrobat.com/preview/807a07e3-1e43-44a0-aec8-4e60c062accc
The other is where I am totally stalled out and erroring my syntax. I am obviously in beginning stages with this one, but it includes where I was trying to solve my problem by having a 2-step workaround, and I added the 'secret boxes' numerical fields for yrs 2 and 3 (just to work out the problem).
https://files.acrobat.com/preview/843f7aa2-63b3-4d5a-b712-060c8cffe05b
Thanking you in advance for even looking. I'm stymied. It is so much work to be ignorant!!!
L-E
Views
Replies
Total Likes
I can get the first file but the second is generating a page not found error.
Views
Replies
Total Likes
https://workspaces.acrobat.com/?d=8WwLjFvudrUXEE44CkvPJQ
Jono, thanks! Hopefully this one will work?????
Views
Replies
Total Likes
Not working either. You have to share the file and publish it - after you share from the menu the pop-up should ask you to publish the file as well.
I don't know why they don't make that a one-click share...
Views
Replies
Total Likes
You can see my ignorance! I just ‘published’ it…..
https://workspaces.acrobat.com/?d=8WwLjFvudrUXEE44CkvPJQ
L-E
Views
Replies
Total Likes
That one worked!
Views
Replies
Total Likes
Now if only … IT WORKED… as a form ☺
L-E
Views
Replies
Total Likes
Ok, so you've got a lot of syntax problems to start with.
If you have the console turned on in Acrobat (CTRL-J to open the console
window) it will show you the errors. It's good to set Acrobat to pop up the
console on encountering errors - go to Edit>Preferences>JavaScript and turn
on "Enable interactive console" and "Show console on errors and message".
The last setting will automatically open the console and show errors when
encountering them (like when opening the file).
The error messages will point you to where a problem is but it's not
necessarily all that clear what the problem is. You can also try using the
Check Script Syntax button in the Script Editor (the book icon with the
green checkmark), it's not very smart though but will help you find missing
brackets and other errors but you still need to figure out what's wrong.
You're mixing JavaScript and FormCalc syntax together but it's mostly
misplaced brackets and punctuation. These won't hurt but when using
FormCalc you don't need to use semicolons at the end of lines or .rawValue
to access field values, makes for cleaner script.
The following documents are good reference:
FormCalc User Reference
http://help.adobe.com/en_US/livecycle/9.0/FormCalc.pdf
LiveCycle Designer Scripting Basics
http://help.adobe.com/en_US/livecycle/9.0/LiveCycle_Designer_Scripting_Basics.pdf
LiveCycle Designer Scripting Reference
http://help.adobe.com/en_US/livecycle/9.0/lcdesigner_scripting_reference.pdf
So, on first opening the file I get two errors:
Script failed (language is formcalc; context is
xfa[0].form[0].form1[0].TopPosition[0].AllYearsSForm[0].Year2[0].Rent2[0])
script=if(Assumpt.Term.rawValue >1; and Assumpt.Partial.rawValue >0.00;
and Year3.TEC3.rawValue =0.00); then
$ = Step2.StepRent2 * Assumpt.Partial;
elseif(Assumpt.Partial.rawValue =0 and Assumpt.Term.rawValue > 1)then
$.rawValue = (Year1.Rent1.rawValue * Terms.RentEsc.rawValue) +
Year1.Rent1.rawValue;
else
$.rawValue = 0;
endif
This is just a general script fail. There are a bunch of syntax problems.
You're mixing some JavaScript in with your FormCalc and have some other
problems. A big one that goes for JavaScript and FormCalc is assigning a
value vs testing a value - one equals sign is for assigning a value
(fieldName = 1) - two equals signs are for testing a value (if (fieldName
== 5)). And don't forget the "endif" at the end of a FormCalc if statement.
The script should look like:
if (Assumpt.Term > 1 and Assumpt.Partial > 0 and Year3.TEC3 == 0) then
$ = Step2.StepRent2 * Assumpt.Partial
elseif (Assumpt.Partial == 0 and Assumpt.Term > 1) then
$ = Year1.Rent1 * Terms.RentEsc + Year1.Rent1
//brackets not needed for math if you follow Order of Operation rules but
they don't hurt
else
$ = 0;
endif
Error: syntax error near token '$' on line 2, column 2.
Script failed (language is formcalc; context is
xfa[0].form[0].form1[0].TopPosition[0].Step2[0].StepRent2[0])
script=if(Assumpt.Term.rawValue >1; and Assumpt.Partial.rawValue >0.00;
and Year3.TEC3.rawValue =0.00); then
Step2.StepRent2.rawValue = (Year1.Rent1.rawValue *
Terms.RentEsc.rawValue) + Year1.Rent1.rawValue
Error: syntax error near token 'Step2' on line 2, column 6.
Another non-specific error, because of syntax errors on the first line it
doesn't know what's happening on the second line. It's saying "error near
token '$'" when there is no $ is because it's referencing the field the
script is on (Step2.StepRent2). $ is shortcut for the current field which
it says a little more clearly in the Error message on the last line.
if (Assumpt.Term > 1 and Assumpt.Partial > 0 and Year3.TEC3 == 0) then
$ = Year1.Rent1 * Terms.RentEsc + Year1.Rent1
endif
But on fixing that we get:
Script failed (language is formcalc; context is
xfa[0].form[0].form1[0].TopPosition[0].Step2[0].StepRent2[0])
script=if (Assumpt.Term > 1 and Assumpt.Partial > 0 and Year3.TEC3 == 0)
then
$ = Year1.Rent1 * Terms.RentEsc + Year1.Rent1
endif
Error: accessor 'Year3.TEC3' is unknown.
This means that the script can't find "Year3.TEC3". This is because
"Year3.TEC3" is under a different subform structure so it needs the path to
the subform it's under which would be "AllYearsSform.Year3.TEC3".
The easiest way to get the full path needed to other objects in the Script
Editor is to CTRL-click on the object in the Design View window. What you
need to do is scroll the display until you can see the object you want then
click in the Script Editor where you want the object reference then press
and hold the CTRL key and click on the object - when holding CTRL down and
moving over the Design Window the mouse cursor will change to a "V" when
you are over a valid object.
CTRL clicking will give you a Relative SOM path and CTRL-SHIFT clicking
will give you an Absolute SOM path:
in this case relative is "AllYearsSform.Year3.TEC3" and absolute is
"form1.TopPosition.AllYearsSForm.Year3.TEC3".
if (Assumpt.Term > 1 and Assumpt.Partial > 0 and AllYearsSForm.Year3.TEC3
== 0) then
$ = Year1.Rent1 * Terms.RentEsc + Year1.Rent1
endif
On that last fix there are no more errors on opening the form.
Hopefully that gives you something to work with!
Message was edited by: Jono Moore - email borked my nice formatting.
Views
Replies
Total Likes
Oh, my goodness!!! You are beyond exceptional!!! That will definitely give me the flashlight to shine on my (MANY) issues. That is also some of the best, clear explanation I have seen as I look (constantly!) for help that reads simply for me as a non-coder/ non-tech imagination person. Thank you for that, and thank you for your help and guidance!
I appreciate you SO very much!
L-E
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies