Crystal Reports - Формула поля условия условного заявления о том, какие записи для суммирования - PullRequest
4 голосов
/ 11 ноября 2011

поле формулы Crystal Reports Добрый день, я делаю отчет о продажах Crystal Report - VS2010 c #

У меня есть это представление в MS SQL

vSales

OrderNo

OrderDate

Amount

PaymentType

Тип платежа: наличный или чек, который я выполнил, выберите все, потому что мне нужно оба в одном отчете

, как мне получить сумму Amount, где PaymentType равен наличным деньгам?

Я использовал Сумму для своей общей суммы, как чека, так и наличных, в мастерской по формуле

Sum ({vDailySales.Amount})

Я не могу изменить свою инструкцию SELECT, поскольку мне нужна вся запись с наличными и чеком

Ответы [ 3 ]

4 голосов
/ 11 ноября 2011

Создайте две формулы - CashAmount и CheckAmount, например, вторую:

if {vDailySales.PaymentType}="cheque" 
then {vDailySales.Amount}
else 0

В отчете используйте агрегаты указанных формул, например, Sum ({@ CashAmount}).

2 голосов
/ 11 ноября 2011

Третий вариант - использовать поле промежуточного итога.Из-за того, как они рассчитываются, они должны находиться в нижнем колонтитуле.

Чтобы создать его, выполните следующие действия:

  1. выберите поле {vDailySales.Amount} на холстещелкните правой кнопкой мыши, затем выберите Вставить, Итоговая сумма ...
  2. Установите соответствующее поле Имя промежуточной суммы, возможно, «Сумма наличных».
  3. Убедитесь, что в качестве типа сводки указано «сумма»'.
  4. Выберите параметр «Использовать формулу», нажмите кнопку условной формулы, а затем введите в качестве текста формулы следующее: {vDailySales.PaymentType} = «Наличные»
  5. Выбрать'Никогда »для параметра« Сброс »или« При изменении группы »(выбирая соответствующую группу), если это поле RT подсчитывает сумму по группам.
  6. Поместите поле в раздел нижнего колонтитула отчета.

Повторите процесс для второго промежуточного поля, в котором будут суммироваться чеки (вместо шага «Наличные» измените шаг 4, указав «Чек».

1 голос
/ 11 ноября 2011

Есть два способа, которыми я бы воспользовался; в зависимости от того, какой вывод я хотел.

Первым и самым простым способом будет группировка по типу платежа. Затем создайте сумму в нижнем колонтитуле группы. Вы можете использовать инструмент «Промежуточный итог» или использовать приведенный ниже код.

SUM({vDailySales.Amount}, {vDailySales.PaymentType})

Это покажет результат для каждого из типов платежей, так что в вашем случае дважды, один раз за наличные и один раз за чек.

Я думаю, что здесь вы можете использовать формулы в разделе "Оценить" промежуточного итога; где вы бы использовали утверждение истина / ложь для того, что вы хотели показать. Например, выписка «наличными»:

if {vDailySales.PaymentType}="Cash" then true else false

Другой метод, который был бы проще, если бы вы хотели получить общую сумму, заключался бы в использовании условной суммы.

Определите переменные в заголовке:

SHARED numbervar sumcash;
SHARED numbervar sumcheque;
sumcheque:=0;
sumcash:=0;

Тогда для каждой строки в отчете; добавить поле для условного суммирования сумм; используя формулу как:

SHARED numbervar sumcash;
SHARED numbervar sumcheque;

if {vDailySales.PaymentType}="cheque" then
     sumcheque = sumcheque + {vDailySales.Amount};
else
     sumcash = sumcash + {vDailySales.Amount};

Затем в нижней части отчета создайте формулу для отдельного отображения каждой из переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...