Hi Alan Yes it only seems to be when summing to variables. Changing it to an array would necessitate further changes elsewhere. I have changed the code to allow a maximum of 32 and if it exceeds 32 I construct another second command to deal with the rest of the fields/variables.
Paul -----Original Message----- From: ProfoxTech <profoxtech-boun...@leafe.com> On Behalf Of Alan Bourke Sent: 22 November 2019 13:49 To: profoxt...@leafe.com Subject: Re: Fatal error issuing CALCULATE command Sent by an external sender ------------------------------ There definitely seems to be a limit of 32 as you say. Summing into an array as per below works for > 32 fields but I don't know if that would help. #DEFINE _fields 35 #DEFINE _rows 100 Clear =RAND(-1) CREATE CURSOR crsTest (id i) cCalcCmd = [CALCULATE ] cCalcCmd2 = [ SUM ] cCalcCmd3 = "" cTemp = "" cInsertFields = [] cInsertValues = [] cVariables = [] FOR x = 1 TO _fields cField = "Field"+TRANSFORM(x) ALTER table crsTest ADD COLUMN (cField) I cCalcCmd = cCalcCmd + "SUM("+cField+")," cCalcCmd2 = cCalcCmd2 + cField + "," cTemp = cTemp + cField + "," cInsertFields = cInsertFields + ","+cField cInsertValues = cInsertValues + ","+TRANS(INT(RAND()*100)) cVariables = cVariables + "lc"+cField+"," NEXT cInsertCmd = [INSERT INTO crsTest (ID ] + cInsertFields +[) VALUES (0]+cInsertValues+')' FOR X = 1 TO _rows &cInsertCmd Next lcVars = Left(cVariables,Len(cVariables)-1) cCalcCmd = Left(cCalcCmd,Len(cCalcCmd)-1) + " To " + Left(cVariables,Len(cVariables)-1) &&+ "AVG(Field1)" cCalcCmd2 = Left(cCalcCmd2,Len(cCalcCmd2)-1) + " To " + Left(cVariables,Len(cVariables)-1) cTemp = Left(cTemp,Len(cTemp)-1) *? cCalcCmd *? cCalcCmd2 ? cTemp ? lcVars =StrToFile(cCalcCmd + Chr(13) + Chr(13) + cCalcCmd2, "c:\temp\cmd.txt") ? Len(cCalcCmd2) *&cCalcCmd *&cCalcCmd2 Sum &cTemp to array laTots List Memory like laTots Return -- Alan Bourke alanpbourke (at) fastmail (dot) fm On Fri, 22 Nov 2019, at 12:59 PM, Paul Newton wrote: > No Alan - the following code (adapted from Eric) demonstrates exactly > what I am doing: > > #DEFINE _fields 35 > #DEFINE _rows 100 > =RAND(-1) > CREATE CURSOR crsTest (id i) > cCalcCmd = [CALCULATE ] > cInsertFields = [] > cInsertValues = [] > cVariables = [] > FOR x = 1 TO _fields > cField = "Field"+TRANSFORM(x) > ALTER table crsTest ADD COLUMN (cField) I > cCalcCmd = cCalcCmd + "SUM("+cField+")," > cInsertFields = cInsertFields + ","+cField > cInsertValues = cInsertValues + ","+TRANS(INT(RAND()*100)) > cVariables = cVariables + "lc"+cField+"," > NEXT > cInsertCmd = [INSERT INTO crsTest (ID ] + cInsertFields +[) VALUES > (0]+cInsertValues+')' > FOR X = 1 TO _rows > &cInsertCmd > NEXT > cCalcCmd = Left(cCalcCmd,Len(cCalcCmd)-1) + " To " + > Left(cVariables,Len(cVariables)-1) &&+ "AVG(Field1)" > ? cCalcCmd > &cCalcCmd > Return > > Paul > > -----Original Message----- > From: ProfoxTech <profoxtech-boun...@leafe.com> On Behalf Of Alan > Bourke > Sent: 22 November 2019 12:55 > To: profoxt...@leafe.com > Subject: Re: Fatal error issuing CALCULATE command > > Sent by an external sender > ------------------------------ > > Paul > > Do you mean you are doing this? > > calculate sum(field1 + field2 + ... + field32) to lnTotal > > > > -- > Alan Bourke > alanpbourke (at) fastmail (dot) fm > [excessive quoting removed by server] _______________________________________________ Post Messages to: ProFox@leafe.com Subscription Maintenance: https://mail.leafe.com/mailman/listinfo/profox OT-free version of this list: https://mail.leafe.com/mailman/listinfo/profoxtech Searchable Archive: https://leafe.com/archives This message: https://leafe.com/archives/byMID/by5pr02mb68528f9b6b1e73a4b2517fd9a1...@by5pr02mb6852.namprd02.prod.outlook.com ** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.