Коротко суть проблемы. В событии объекта отчёта BeginRender() пишем:
Код: Выделить всё
qrMain.Connect(); -- коннект к БД Oracle
bool isDemandVoucher = (qrMain.N_TOTAL_SUM == 0);
Пока мы прописали во всех отчётах такой код вместо Sum:
Код: Выделить всё
decimal nTotalSum = 0;
foreach (Stimulsoft.Report.Dictionary.StiRow row in qrMain.Rows)
nTotalSum += (decimal)row["N_TOTAL_SUM"];
Пожалуйста, почините функцию Totals.Sum().
Выяснился ещё один неприятный нюанс. Когда в запросе возвращается одна строка, то foreach() не срабатывает ни разу, поэтому workaround выглядит так:
Код: Выделить всё
decimal nTotalSum = (qrMain.Rows.Count == 1) ? (decimal)qrMain.Rows[0]["N_TOTAL_SUM"] : 0;
foreach (Stimulsoft.Report.Dictionary.StiRow row in qrMain.Rows)
nTotalSum += (decimal)row["N_TOTAL_SUM"];