Anything beyond the basics in using the LiveCode language. Share your handlers, functions and magic here.
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller, robinmiller
-
karmacomposer
- Posts: 361
- Joined: Wed Apr 27, 2011 2:12 pm
Post
by karmacomposer » Fri Jul 20, 2018 5:45 am
I have four text fields for the user to enter dollar amounts - hopefully no $ (do we use the delimiter to parse out a possible "$" - must be only numbers
Here is what I wrote (I KNOW it's wrong):
Code: Select all
--Premium Subtotal Calculation
put the value of field "fldBiWeekPrem1" into varPrem1Add
put the value of field "fldBiWeekPrem2" into varPrem2Add
put the value of field "fldBiWeekPrem3" into varPrem3Add
put the value of field "fldBiWeekPrem4" into varPrem4Add
put the value of varPrem1Add+varPrem2Add+varPrem3Add+varPrem4Add into varSubtotal
set the text of field "fldPremSubTotal" to it
How do I add up fields into a subtotal field?
Mike
Last edited by
karmacomposer on Fri Jul 20, 2018 4:53 pm, edited 1 time in total.
-
ClipArtGuy
- Posts: 253
- Joined: Wed Aug 19, 2015 4:29 pm
Post
by ClipArtGuy » Fri Jul 20, 2018 5:54 am
Code: Select all
repeat with x=1 to 4
add fld ("fldBiWeekPrem"&x) to tCount
put tCount into field "fldPremSubTotal"
end repeat
-
karmacomposer
- Posts: 361
- Joined: Wed Apr 27, 2011 2:12 pm
Post
by karmacomposer » Fri Jul 20, 2018 6:02 am
That threw an error in the line:
Code: Select all
add fld ("fldBiWeekPrem"&x) to tCount
The field names are the same, so fldBiWeekPrem1 and so on is correct.
Did I do something wrong?
Mike
-
Klaus
- Posts: 14206
- Joined: Sat Apr 08, 2006 8:41 am
-
Contact:
Post
by Klaus » Fri Jul 20, 2018 8:59 am
Hi Mike,
another hint which saves a lot of typing:
"the value of fld xyz" is not neccessary, only in seldom cases, just do:
Code: Select all
...
put fld "my field" into tFieldContent
...
## And
## put the value of varPrem1Add+varPrem2Add+varPrem3Add+varPrem4Add into varSubtotal
put varPrem1Add + varPrem2Add + varPrem3Add + varPrem4Add into varSubtotal
...
And SPACES do not hurt, but make the scripts more readable!
Best
Klaus
-
karmacomposer
- Posts: 361
- Joined: Wed Apr 27, 2011 2:12 pm
Post
by karmacomposer » Fri Jul 20, 2018 1:02 pm
The second one:
Code: Select all
put varPrem1Add + varPrem2Add + varPrem3Add + varPrem4Add into varSubtotal
set the text of field "fldPremSubTotal" to it
Gives me the error:
Code: Select all
(Operators +: error in left operand
Any other suggestions?
-
Klaus
- Posts: 14206
- Joined: Sat Apr 08, 2006 8:41 am
-
Contact:
Post
by Klaus » Fri Jul 20, 2018 1:05 pm
Hm, sound like there could be non-numeric content in one of the fields.
Did you double-check their values (in the debugger)?
-
dunbarx
- VIP Livecode Opensource Backer

- Posts: 10344
- Joined: Wed May 06, 2009 2:28 pm
Post
by dunbarx » Fri Jul 20, 2018 1:10 pm
Clearly someone left a "$" in one of the fields.
LC cannot add '3" to "$7"
I have had this in my library since 1990:
Code: Select all
function goodNumber tText
repeat for each char theChar in tText
if theChar is in ".0123456789" then put theChar after temp
end repeat
return temp
end goodNumberr
So you would want to:
Code: Select all
put goodnumber(field "fldBiWeekPrem1") into varPrem1Add
But it would be even better to validate the input text when the user is working. Do you know how to do this?
Craig Newman
-
karmacomposer
- Posts: 361
- Joined: Wed Apr 27, 2011 2:12 pm
Post
by karmacomposer » Fri Jul 20, 2018 1:39 pm
I forgot to mention that all four fields have the following code to ensure digits only:
Code: Select all
# Allow only digits - no letters or symbols
on keyDown pKey
if pKey is not a number then
## If the parameter is not 0-9
## prevent text entry
else
## Allow text entry by passing the keyDown message
pass keyDown
end if
end keyDown
Could this change things?
Mike
-
Klaus
- Posts: 14206
- Joined: Sat Apr 08, 2006 8:41 am
-
Contact:
Post
by Klaus » Fri Jul 20, 2018 2:01 pm
Hi Mike,
this is VERY strange!?
I can offer to take look at your (stripped down) stack, if you like, just send it to my email address.
And here another typing-saving advice:
Code: Select all
on keyDown pKey
if pKey is a number then
## Allow text entry by passing the keyDown message
pass keyDown
end if
end keyDown
Best
Klaus
-
karmacomposer
- Posts: 361
- Joined: Wed Apr 27, 2011 2:12 pm
Post
by karmacomposer » Fri Jul 20, 2018 4:53 pm
All figured out. I found my error - and it was a biggie.
Thanks for the help guys.
Mike
-
dunbarx
- VIP Livecode Opensource Backer

- Posts: 10344
- Joined: Wed May 06, 2009 2:28 pm
Post
by dunbarx » Sat Jul 21, 2018 10:50 pm
Glad to hear you worked it out.
But just to close this properly, limiting text entry only to digits rarely works, unless only integers are desired.
What about the poor decimal point?
Craig