Here's a test db I put together that may help. There are four fields: latest -- the latest score, an integer total -- the cummulative score, an integer count -- a count of the number of scores that have been added into total scores -- a list of the scores as a comma separated string When a score is entered into field "latest" and the the field is closed, the code attached to field "latest" does several things: 1. it accumulates itself into field "total" 2. it increments field "count" 3. it appends itself to the list field "scores", and 4. it clears itself so it will be ready for the next score Here's the code with some comments: /* first add the latest score into the total */ e.total := e.total+e.latest; /* note that we've added another score */ e.count := e.count + 1; /* Tack the score onto the string list of scores */ /* Allow for the fact that you only need a*/ /* separator when there's already something there */ if StrFilled(e.scores) then e.scores := e.scores & "," & e.latest else e.scores := "" & e.latest; /* clear the latest score to make ready for the next */ e.latest := 0 And here's the actual export text file. I can email this or put it on our ftp site if you like. == DBNAME == _fields [ [ '|soupName|, '|string| ], [ '|fieldName|, '|string| ], [ '|fieldType|, '|string| ], [ '|indexed|, '|boolean| ], [ '|table|, '|string| ], [ '|linkSoup|, '|string| ], [ '|linkField|, '|string| ], [ '|linkCondition|, '|code| ], [ '|fieldWidth|, '|int| ], [ '|fieldFlags|, '|int| ], [ '|defaultValue|, '|string| ], [ '|code|, '|code| ], [ '|decimals|, '|int| ], [ '|pKey|, '|boolean| ], [ '|fieldPath|, '|string| ] ] test latest int 0 e.total := e.total+e.latest;\ne.count := e.count + 1;\nif StrFilled(e.scores) then\n\te.scores := e.scores & "," & e.latest\nelse\n\te.scores := "" & e.latest;\ne.latest := 0 test total int 2 test count int 1 test scores string 1 == EOD == == DBNAME == test [ [ '|latest|, '|int| ], [ '|total|, '|int| ], [ '|count|, '|int| ], [ '|scores|, '|string| ] ] 0 25 3 10,8,7 == EOD == == EOD ==