It would be more efficient to do this on the database as a View or Stored Procedure as opposed to within Crystal.
Also in lieu of an array, you can create 12 Running Totals and simply place the criteria within the Evaluate->Use a Formula and keep it simple.
An example would be:
month({table.field}) = 1
where 1 would be returning the sums for January.
Or you can Group by the month and place the field to sum in the details and right click it and select insert->summary->sum for each group, and Crystal will handle it all.
Since you insist upon using an array, which will be less efficent and require more code, you could create something like:
whileprintingrecords;
numbervar array MyMonths[12];
numbervar Counter;
For Counter := 1 to 12 do(
if month({table.field}) = counter then
MyMonths[counter] := MyMonths[counter]+{table.fieldtosum}
);
Now you can reference each month using:
whileprintingrecords;
numbervar array MyMonths[12];
MyMonths[1]
where [1] would be January.
Also you probably want a parameter to indicate the months being returned, so create a date parameter of type range and in the Report->Edit Selection Formula->Record place:
{table.datefield} = {?MyDateParameter}
I suspect that you didn't really need an array, so in future posts try to state requirements rather than specifying architecture.
-k