Got a LiveCode personal license? Are you a beginner, hobbyist or educator that's new to LiveCode? This forum is the place to go for help getting started. Welcome!
Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller
-
stoavio
- Posts: 43
- Joined: Sun Jun 30, 2013 2:09 am
Post
by stoavio » Sun Jun 30, 2013 3:25 am
Hi all,
It's hard for me to ask for help. I love to intuit things on my own but admittedly, I am a huge beginner and have reached an impasse after spending what seems like an inordinate amount of time trying to solve a seemingly simple problem.
I am writing a tiny program that reads the contents of transaction files and isolates the dollar amount to a field. Although it is exceedingly simple, an application like this is very useful in my department. Anyway....
The program is successfully reading the files and reporting the dollar amounts to a field named "Total" but NOW I'm trying to add up all of these amounts to get a total sum. I keep striking out. When using the sum function it keeps telling me the numbers I'm trying to add up aren't numbers (which I know is because of the decimal). I've tried removing the decimal and using the sum of fld "Total" but it still errors out. Maybe I can't use the sum function on a field or variable?
Code: Select all
on mouseUp
local tFileName
local tFileCount
local tOutput
local tTxntotal
answer files "Choose your TRANS files:"
put it into fld "Files"
put number of lines in fld "Files" into tFileCount //get number of transactions selected
put "Transactions Processed:"&&tFileCount into fld "Processed"
repeat for number of lines in fld "Files" // loop to open and parse each file
put line tFileCount in fld "Files" into tFileName //starting with last file first
open file tFileName for read //open transaction
read from file tFileName at 1 until EOF //read entire transaction
put it into tOutput //store output
put offset ("BATCHAMT", tOutput) into tTxnTotal //start search for check total
read from file tFileName at tTxnTotal for 7 characters //isolate total
put it into tTxnTotal
replace space with empty in tTxntotal //strip whitespace
put tTxnTotal after field "Total" //write the total of each transaction to field Total
subtract 1 from tFileCount //decrement filename each time loop runs
end repeat
end mouseUp
Can someone please help?
-
Attachments
-

- Application screenshot
-
stoavio
- Posts: 43
- Joined: Sun Jun 30, 2013 2:09 am
Post
by stoavio » Sun Jun 30, 2013 3:58 am
I think I might've figured it out. I haven't tried it yet but I think my numbers need to be comma delimited to be processed by the sum function. I think I was wrong about the decimal messing it up. Going to try it now.
-
stoavio
- Posts: 43
- Joined: Sun Jun 30, 2013 2:09 am
Post
by stoavio » Sun Jun 30, 2013 4:08 am
Yep, that was it. I just had to take the contents of the field and put them into a variable, make them comma delimited and run the sum function.

-
Attachments
-

-
Dixie
- Livecode Opensource Backer

- Posts: 1336
- Joined: Sun Jul 12, 2009 10:53 am
Post
by Dixie » Sun Jun 30, 2013 9:36 am
The 'add' command would also arrive at the total for you...
Code: Select all
on mouseUp
put empty into total
repeat with count = 1 to the number of lines of fld 1
add line count of fld 1 to total
end repeat
put total
end mouseUp
-
Klaus
- Posts: 14199
- Joined: Sat Apr 08, 2006 8:41 am
-
Contact:
Post
by Klaus » Sun Jun 30, 2013 12:26 pm
Hi stoavio,
some hints:
1. you are not closing all the files that you "open..." in the repeat loop!
Not good
2. Maybe you would like the shorter URL syntax, which reduces files access to a one-liner

And no need to CLOSE the file later, too!
Maybe something like this:
Code: Select all
on mouseUp
local tFileName
local tFileCount
local tOutput
local tTxntotal
answer files "Choose your TRANS files:"
put it into fld "Files"
put number of lines of fld "Files" into tFileCount //get number of transactions selected
put "Transactions Processed:"&&tFileCount into fld "Processed"
## Accessing FIELDS is much slower than putting their content into a variable first!
put fld "Files" into tFileList
## Never access a field in a repeat loop, see above and below:
put empty into tFieldTotal
repeat with i = tFileCount down to 1
put line tFileCount of tFileList into tFileName //starting with last file first
## The one liner to put a file into a variable!
put url("file:" & tFileName) into tOutput
put offset ("BATCHAMT", tOutput) into tTxnTotal //start search for check total
## This one might need a little adjustment ;-)
put char tTxnTotal to (tTxnTotal + 7) of tOutput into tTxnTotal
replace space with empty in tTxntotal //strip whitespace
## Write to variable first...
put tTxnTotal after tFieldTotal
end repeat
## ...then to field!
put tFieldTotal after field "Total" //write the total of each transaction to field Total
end mouseUp
Best
Klaus
-
dunbarx
- VIP Livecode Opensource Backer

- Posts: 10331
- Joined: Wed May 06, 2009 2:28 pm
Post
by dunbarx » Sun Jun 30, 2013 2:59 pm
This completely stumped me until I saw that the comma fixed it. I am frequently thrown by the fact that this forum is international, and that many posts are all about mobile.
Craig Newman
-
stoavio
- Posts: 43
- Joined: Sun Jun 30, 2013 2:09 am
Post
by stoavio » Wed Jul 17, 2013 7:50 pm
Klaus wrote:Hi stoavio,
some hints:
1. you are not closing all the files that you "open..." in the repeat loop!
Not good
2. Maybe you would like the shorter URL syntax, which reduces files access to a one-liner

And no need to CLOSE the file later, too!
Maybe something like this:
Code: Select all
on mouseUp
local tFileName
local tFileCount
local tOutput
local tTxntotal
answer files "Choose your TRANS files:"
put it into fld "Files"
put number of lines of fld "Files" into tFileCount //get number of transactions selected
put "Transactions Processed:"&&tFileCount into fld "Processed"
## Accessing FIELDS is much slower than putting their content into a variable first!
put fld "Files" into tFileList
## Never access a field in a repeat loop, see above and below:
put empty into tFieldTotal
repeat with i = tFileCount down to 1
put line tFileCount of tFileList into tFileName //starting with last file first
## The one liner to put a file into a variable!
put url("file:" & tFileName) into tOutput
put offset ("BATCHAMT", tOutput) into tTxnTotal //start search for check total
## This one might need a little adjustment ;-)
put char tTxnTotal to (tTxnTotal + 7) of tOutput into tTxnTotal
replace space with empty in tTxntotal //strip whitespace
## Write to variable first...
put tTxnTotal after tFieldTotal
end repeat
## ...then to field!
put tFieldTotal after field "Total" //write the total of each transaction to field Total
end mouseUp
Best
Klaus
Hey Klaus!
I just saw this. Thank you so much for your helpful response. I have implemented your suggestions. You have been a great resource.