как вычесть группу вложенных отчетов из основной группы отчетов в Crystal Report

Формула подотчета

whileprintingrecords;
shared numbervar exp_credit:= Sum ({Exp_credit.amount}, {Exp_credit.date}, "monthly"

Значение подотчета

04/2014    1500
05/2014    2000
06/2014    1500
07/2014    1000
08/2014    3000
09/2014    4000
10/2014    3500
11/2014    2800
12/2014    2600
01/2015    2800
02/2015    2800
03/2015    2600

Формула основного отчета

whileprintingrecords;
shared numbervar exp_debit:= Sum ({Exp_debit.amount}, {Exp_debit.date}, "monthly"

Основное значение отчета

04/2014    3500
05/2014    3500
06/2014    3000
07/2014    4000
08/2014    3900
09/2014    3900
10/2014    4000
11/2014    5000
12/2014    2800
01/2015    3500
02/2015    3700
03/2015    3700

Чистая формула

whileprintingrecords; 
shared numbervar exp_credit;
shared numbervar exp_debit; 
shared numbervar net:= (exp_debit-exp_credit);

Я получаю чистое значение формулы

04/2014    900
05/2014    900
06/2014    400
07/2014   1400
08/2014   1300
09/2014   1300
10/2014   1400
11/2014   2400
12/2014    200
01/2015    900
02/2015   1100
03/2015   1100

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


person Anand R    schedule 14.11.2015    source источник
comment
Где вы разместили дополнительный отчет и где вы разместили основной отчет? В каком разделе?   -  person Siva    schedule 15.11.2015
comment
Формула подотчета @exp_credit размещается в разделе заголовка группы подотчета №1, а подотчет размещается в основном отчете в разделе заголовка отчета. Все значения рассчитаны правильно. Последнее значение вспомогательного отчета 2600 вычитается за каждый месяц, и мне нужно значение каждого месяца отдельно. Пожалуйста, помогите мне как можно скорее. заранее спасибо   -  person Anand R    schedule 16.11.2015
comment
Пожалуйста, ответьте на мой вопрос, жду вашего ответа, пожалуйста.....   -  person Anand R    schedule 16.11.2015
comment
Ваша реализация очень сбивает с толку... лучше использовать массивы... пробовали ли вы их использовать... дайте мне знать... снова в основном отчете, где вы разместили основные значения отчета   -  person Siva    schedule 16.11.2015
comment
Почему вы используете подотчет... я не вижу смысла... из скольких таблиц вы получаете значения дебета и кредита   -  person Siva    schedule 16.11.2015
comment
Около 30-40 столов. Если применить прямую формулу, я не могу получить правильный результат. пожалуйста, предложите, если у вас есть какие-либо идеи.   -  person Anand R    schedule 16.11.2015
comment
В основном отчете я поместил значение основного отчета в заголовок группы № 1, и это примерно от 30 до 40 таблиц. Если применить прямую формулу, я не могу получить правильный результат. пожалуйста, предложите, если у вас есть какие-либо идеи.   -  person Anand R    schedule 16.11.2015
comment
Все, что вы делаете в подотчете ... сделайте в основном отчете и проверьте значения ... если вы можете опубликовать снимок экрана отчета и скриншот таблиц, это поможет   -  person Siva    schedule 16.11.2015
comment
Я не могу использовать в отдельном отчете и нуждаюсь в дополнительном отчете, тогда дайте мне знать   -  person Siva    schedule 16.11.2015
comment
Скриншоты прикрепить не могу, как это сделать.   -  person Anand R    schedule 16.11.2015
comment
Существует возможность прикрепить изображение, используя это .... если это недоступно, вы можете опубликовать ссылку, ведущую к изображению.   -  person Siva    schedule 16.11.2015


Ответы (1)


Вы можете попробовать следующий подход:

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

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

Shared StringVar array store;

store:=store+ (Date&"-"&ToText(Value)); 
//append date and value to retrieve correctly in main report
1

Создайте одну и ту же формулу в обоих подотчетах с разными общими переменными

В основном отчете

Shared Stringvar Store //assume debit value
Shared stringvar store1 //assume credit

//now split and convert to number and subtract the values

Tonumber( Split(Store[1],"-")[2]) - Tonumber(Split(Store1[1],"-")[2] )

Позаботьтесь о том, чтобы вычесть похожие даты

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

person Siva    schedule 16.11.2015
comment
Шива, спасибо за вашу своевременную поддержку. Если я использую эту формулу, я получаю сообщение об ошибке, результат формулы не может быть массивом. Как это решить. Извините за задержку с ответом. - person Anand R; 17.11.2015
comment
Есть две формулы, о какой формуле вы говорите... также я проверил, что эта ошибка не должна появляться - person Siva; 17.11.2015
comment
исходная формула --› хранилище массивов Shared StringVar; store:=store+ (Дата&-&ToText(Значение)); моя прикладная формула ---> Общее хранилище массивов StringVar; store:=store+ (GroupName ({Exp_debit.date}, ежемесячно)&-&ToText(Sum ({Exp_debit.amount}, {Exp_debit.date}, ежемесячно))); пожалуйста, дайте мне, если у меня есть какие-либо ошибки - person Anand R; 17.11.2015
comment
Вы добавили 1 после точки с запятой... добавьте ее, а также немного отредактируйте решение - person Siva; 17.11.2015
comment
Я применил основную формулу отчета как ---› Shared Stringvar Store Shared stringvar store1 Tonumber( Split(Store,[1]-)[2]) - Tonumber(Split(Store1[1],-)[2] ) но получил ошибку сообщение Оставшийся текст не является частью формулы. - person Anand R; 17.11.2015
comment
Да, вы правы, если я исправил ---›сообщение об ошибке [отсутствует )] с выбором на - . Как это решить. - person Anand R; 17.11.2015
comment
Отредактированный ответ проверьте и дайте мне знать - person Siva; 17.11.2015
comment
Я получил сообщение об ошибке, когда отчет о запуске помещается в раздел сведений --> [Нижний индекс должен быть между 1 и размером массива] с выбором ( Split(Store[1],-)[1] ). - person Anand R; 17.11.2015
comment
В каждом значении дата и значение объединены или есть только одно значение - person Siva; 17.11.2015
comment
Опубликуйте формат ваших значений в массиве... как они выглядят - person Siva; 17.11.2015
comment
Пожалуйста, найдите ниже мой выходной формат 900 03/2015 1100 - person Anand R; 17.11.2015
comment
- должно быть между каждым значением, которое составляет 04/2014-2000, должно быть одно значение в массиве, как и все значения, и в обоих подотчетах, где вы разместили формулу конкатенации. - person Siva; 17.11.2015
comment
Теперь это работает, большое спасибо, нет слов, чтобы объяснить мое выражение лица, вы спасаете мою работу, вы действительно гений. Вы делаете отличную работу, спасибо за вашу ценную поддержку, и мне нужно, чтобы все 12 или более значений были напечатаны на основе введенных дат. Как можно вывести все данные построчно. - person Anand R; 17.11.2015
comment
Вы можете создать 12 формул или использовать разрыв строки в одной формуле и отображать 12 значений... разрыва строки можно добиться с помощью chrW(13) - person Siva; 17.11.2015
comment
Подскажите, пожалуйста, как использовать разрыв строки в формуле. - person Anand R; 17.11.2015
comment
Дорогой Шива, подскажи, пожалуйста, как использовать разрыв строки в формуле. Если я получаю только сообщение об ошибке. жду ответа пожалуйста... - person Anand R; 17.11.2015
comment
Конечно, дайте мне знать, если вы получите сообщение об ошибке ... опубликую решение - person Siva; 17.11.2015
comment
Моя выходная формула: --> Shared Stringvar array Store; Общий массив строковых переменных store1; Tonumber( Split(Store[1],-)[2]) - Tonumber(Split(Store1[1],-)[2] )+ chrw(13)+ Tonumber( Split(Store[2],-)[3 ]) - Tonumber(Split(Store1[2],-)[3] ), если я его сохраню (здесь требуется число, сумма в валюте, дата, время или дата-время с выбором на chrw(13). - person Anand R; 17.11.2015
comment
Я сделал это при запуске отчета об ошибке --> Нижний индекс должен быть между 1 и размером массива. - person Anand R; 17.11.2015
comment
Это общая ошибка .... не видя точного кода, трудно сказать, но он расскажет вам, как решить проблему. - person Siva; 17.11.2015
comment
Подсчитайте все строки в массиве. Теперь массив начинается с 1, теперь позаботьтесь о своем коде в индексе массива, ваше значение никогда не должно превышать количество массивов... например, если общее количество элементов в массиве равно 10, то если ваш индекс равен 11, это вызовет ошибку - person Siva; 17.11.2015
comment
Первая формула --> Общее хранилище массивов StringVar; store:=store+ (GroupName ({Exp_debit.date}, ежемесячно)&-&ToText(Sum ({Exp_debit.amount}, {Exp_debit.date}, ежемесячно))); 1 Вторая формула--› Shared StringVar array store1; store1:=store1+ (GroupName ({Exp_credit.date}, ежемесячно)&-&ToText(Sum ({Exp_credit.amount}, {Exp_credit.date}, ежемесячно))); 1 выходная формула --> Общий массив Stringvar Store; Общий массив строковых переменных store1; Tonumber( Split(Store[1],-)[2]) - Tonumber(Split(Store1[1],-)[2]) &chrw(13)& Tonumber( Split(Store[2],-)[3] ) - Tonumber(Split(Store1[2],-)[3]) - person Anand R; 17.11.2015
comment
Tonumber( Split(Store[2],-)[3]) - Tonumber(Split(Store1[2],-)[3] это неправильно - person Siva; 17.11.2015
comment
Tonumber( Split(Store[2],-)[2]) - Tonumber(Split(Store1[2],-)[2]...это правильно.....store subscript будет увеличиваться, а не другое - person Siva; 17.11.2015
comment
Если я использую формулу --- › Shared Stringvar array Store; Общий массив строковых переменных store1; Tonumber( Split(Store[1],-)[2]) - Tonumber(Split(Store1[1],-)[2]) &chrw(13)& Tonumber( Split(Store[2],-)[2] ) - Tonumber(Split(Store1[2],-)[2]) &chrw(13)& Tonumber( Split(Store[3],-)[3]) - Tonumber(Split(Store1[3],-)[ 3]) я получаю ту же ошибку при запуске отчета --› Нижний индекс должен быть между 1 и размером массива - person Anand R; 17.11.2015
comment
Не следуйте слепо, попытайтесь понять логику. [4],-)[2]) - Tonumber(Split(Store1[4],-)[2] - person Siva; 17.11.2015
comment
извини бро .... теперь я исправил это. Но я получаю первое значение 04/2014 2000 только без других позиций. - person Anand R; 17.11.2015
comment
Да, значения в массиве печатаются горизонтально, а не построчно. - person Anand R; 17.11.2015
comment
Привет Сива, спасибо за вашу поддержку, это работает хорошо. Пожалуйста, дайте решение для следующего: 1) Можно ли сделать диаграмму на основе приведенной выше формулы, потому что опция диаграммы отключена для этой формулы. 2) Как увеличить более 12 значений массива, пожалуйста... - person Anand R; 18.11.2015
comment
Мы не определяли размер массива, поэтому массив будет вмещать любое количество значений для начала диаграммы с нового вопроса... комментарии стали очень длинными.. - person Siva; 18.11.2015