2013-08-06 4 views
0

Я создал хрустальный отчет, который группирует продукты на основе номера заказа.Crystal Reports - Formula Workshop

Я создал формулу, которая отображает текст «Частично завершен» или «Полностью завершен» в зависимости от того, является ли поле на каждом произведении «Разница» равным 0 или нет. Если «Разница» равна 0, отображается «Полностью завершено» и наоборот.

Что мне нужно сделать, это отобразить соответствующее сообщение для общего номера заказа (то есть, если какой-либо из продуктов для заказа имеет разницу! = 0, тогда отобразите «Частично завершено». Если все продукты имеют разницу == 0 для того, чтобы затем отображать «Полностью завершено»

Это код, который я пытался до сих пор:.

StringVar ouputText; 

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then 
    ouputText := 'Full' 
else 
    ouputText := 'Partial'; 

ouputText; 

Я полагаю, мне нужно какое-то для петли к петле через все продукты для заказа и проверьте, имеет ли какой-либо из заказов разницу! = 0, а затем обновить сообщение, основанное на том, что все продукты имеют разницу == 0 или один из продуктов нарушает условие с разницей! = 0.

+1

Есть ли причина, по которой вы не используете агрегат? Такие как Sum() или Max(). Тогда вам не нужно перебирать все строки, просто сделайте сводку для этой группы. – tgolisch

ответ

1

Looping - это процесс длительности, вместо этого вы группируете свой отчет в соответствии с «Заказ», а затем размещаете продукт в деталях. Это автоматически закроет все продукты в заказе.

  1. Создайте формулу с сбросом имени и поместите ее в заголовок группы. Код ниже.

    Общая строкаVar array y;

    y:=" "; 
    
    join(y); 
    
  2. Создайте формулу и поместите ее в подробный раздел. Это приведет к результату и сохранит его в массиве для будущего использования. Используйте ниже код.

StringVar ouputText;

Общая строкаVar array y;

если {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0, то у: = у + 'Full' еще у: = у + 'Partial';

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then 
    ouputText := 'Full' 
else 
    ouputText := 'Partial'; 

ouputText; 
  1. В сноске группы создать еще одну формулу для отображения, является ли результат полного или частичного порядка.

    Общая строкаVar array y;

    если «Частичный» в y Затем «частичный» еще «Полный»;

+0

Эй, спасибо за ответ, это отлично работает. Можно ли получить результат для отображения в заголовке группы, а не в нижнем колонтитуле группы? – samb90

+0

Я боюсь, что он не работает должным образом, если он помещен в заголовок группы. Если заголовок группы препятствует вашему дизайну, подавите его. – Siva

Смежные вопросы