Я использую Crystal Reports 2016. Я не много работаю с ним, и большую часть того, чем я занимаюсь, я справляюсь, но столкнулся с проблемой, которую, похоже, не могу найти решение.
Как организация, у нас есть клиенты, которые обязуются жертвовать определенную сумму каждый месяц. У меня есть отчет, который мне нужно написать, который показывает, сколько из этих клиентов дают больше, равно или меньше их объявленной суммы.
Мне удалось обойти проблемы с неработающими промежуточными итогами из-за «Суммы »Или« Отдельные значения »с помощью общих переменных для создания промежуточных итогов. Однако теперь я обнаружил, что все формулы работают так, как я хочу, за исключением того, что переменная добавляет последнюю строку данных дважды в нижний колонтитул отчета.
Я провел различные поиски в Google и попытался ряд предложений, включая переключение с «WhilePrintingRecords» на «EvaluateAfter» для некоторых формул, но, кажется, ничто из того, что я делаю, не меняет окончательные значения.
Вот примеры моих формул и их расположение в отчете , Обратите внимание, что они не сбрасываются, поэтому я получаю итоговые итоги.
Расположен в нижнем колонтитуле группы 1a)
@ Залог против фактического:
WhilePrintingRecords;
If (Shared CurrencyVar Amount) = {Pledge.field} then ToNumber ("1") // 1 is where pledge and payments are "Equal"
else if (Shared CurrencyVar Amount) > {Pledge.field} then ToNumber ("2") // 2 is where payments are "More" than pledge
else if (Shared CurrencyVar Amount) < {Pledge.field} then ToNumber ("3") // 3 is where payments are "Less" then pledge
Эта формула просто для того, чтобы определить, дал ли кто-то больше, равно или меньше своего залога, чтобы я мог затем оценить данные на основе этих критериев. У меня те же формулы, что и в приведенных ниже примерах для критериев «Больше» и «Меньше».
@ EqualAmount1:
WhilePrintingRecords;
Shared CurrencyVar EqualValue1;
EqualValue1 := If {@Pledge vs Actual} = 1 then Shared CurrencyVar Amount;
Эта формула даст значение, скажем, 50 фунтов стерлингов, если сумма, пожертвованная соответствующим клиентом за указанный период времени, суммируется с этой суммой (суммируется по формуле Сумма общей валюты в сумме по записи клиента, которой является Группа 1).
Расположен в нижнем колонтитуле группы 1b)
@ EqualAmount2:
WhilePrintingRecords;
Shared CurrencyVar EqualValue2;
EqualValue2 := EqualValue2 + {@EqualValue1};
Это дает промежуточный итог всех сумм клиентов, указанных на данный момент, например, £ 50 £ 100 £ 100 £ 100 £ 150 £ 150 £ 200 £ 250
Расположен в нижнем колонтитуле отчета
@ EqualAmount3:
Shared CurrencyVar EqualValue3;
EqualValue3 := {@EqualValue2};
Я думал, что тогда будет просто отображаться итоговая сумма, достигнутая с помощью приведенных выше формул, то есть 250 фунтов стерлингов, если это была последняя строка, но он снова добавляет последнюю строку, например, 300 фунтов стерлингов.
Это первый раз, когда я работал с переменными, так что я почти определен Может быть, что-то очень, очень просто. Таким образом, любые рекомендации будут с благодарностью.
Обновление: ОК, так что, выполнив то, что предложил Герингер, все это работает замечательно; Я смог использовать ту же формулу для получения промежуточных итогов для сумм залога, но теперь я снова застрял, потому что не могу создать промежуточную сумму для общей суммы пожертвований.
Я имею в виду, что В нижней части отчета мне нужно указать что-то вроде:
10 клиентов дали больше, чем обещали - они пообещали 100 фунтов стерлингов и дали 200 фунтов стерлингов. 50 клиентов дали именно свое обещание - они дали обещание и дали 500 фунтов стерлингов. 5 клиентов дали меньше, чем обещали - они обещали 200 фунтов стерлингов и дали 100 фунтов стерлингов.
Итак, я могу блестяще использовать промежуточные итоги для первых двух частей этих предложений, но последний бит - сумма их пожертвований - не может быть выполнена с использованием одной и той же формулы промежуточных итогов, поскольку у клиента может быть несколько строк заказа, которые суммируются, чтобы показать общую сумму, указанную клиентом.
Так выглядит мой отчет far:
Так, например, если клиент {Sum of @Gross} равен £ 100, он может состоять из 3 строк, 1 из 50 фунтов стерлингов и 2 из 25 фунтов стерлингов каждый. При использовании промежуточного итога используется только верхняя строка заказа. Извините, мои знания о том, действительно ли Crystal весьма ограничен, поскольку я использую его не очень часто, а знаю только, как сделать основы. (