0

Я отредактировал свой вопрос и заменил предыдущее объяснение новым. Я думаю, что раньше я не мог объяснить свою проблему. вот мой сценарий:можем ли мы получить значение выше ячейки того же столбца таблицы в ssrs report builder? Как?

Col1 |Col2 |Col3 |Col4 |Col5 | Col6 
------|------|------|-------|------| 3333.00 (Table 1) 
------|------|------| 15.00| 0.00| 3348.00 (Table 2) 
------|------|------| 0.00|550.00| 2798.00 (Table 2) 
    Sub ToTal:-----| 15.00|550.00| 2798.00 (Table 3) 

В этом отчете значение (3,333.00) таблицы 1 является начальным балансом. Для таблиц 2 и таблицы 3 кол-во депозита и Col5 выведен. Последний столбец Таблицы 2 и Таблицы 3 закрывает баланс. Таким образом, правило состоит в том, что баланс закрытия первой строки таблицы 2 должен быть рассчитан как (ClosingBalance = OpeningBalance + Deposit - Withdrawal). и баланс закрытия 1-й строки должен начинаться с баланса для второго ряда. Таблица 3 не имеет к ним никакого отношения.

Теперь проблема в том, что 3333.00 исходит из запроса, поэтому мы можем легко вычислить 3348,00, но я не знаю, как рассчитать 2798.00, поскольку это требует значения выше ячейки, которая составляет 3348,00. аналогично, если в Таблице 2 генерируется 10 строк, чем 1-е значение последнего столбца, должно быть рассчитано от 3333.00, а оставшиеся строки будут вычислять их значения из ячейки выше i.e 2798.00 зависит от 3348.00, а если есть следующий ряд, это будет зависеть от 2798.00. так что я сделал это:

IIf(RowNumber(DatasetName) = 1, value of Table1(3333.00) + and remaining values to calculate 3348.00, Previous(ReportItems!MyTextBoxName.Value) + other values) 

Теперь он дает мне ошибку:

The Value expression for the textrun 'Amount8.Paragraphs[0].TextRuns[0]' uses an aggregate function on a report item. Aggregate functions can be used only on report items contained in page headers and footers.

я искал через различные форумы и узнал, что я не могу использовать ReportItems в этом сценарии. И что же мне делать?

Я знаю, что мой сценарий сложный и его сложнее объяснить, но я старался изо всех сил. Скажите, пожалуйста, любое решение, которое у вас есть.

+0

Какая версия сервера SQL вы используете –

+0

я использую SQL сервера 2014 – Hamza

+0

я только что прошли тему о ReportItems. в теме упоминается, что для получения значения текстового поля используйте «ReportItems! TextboxName.Value». поэтому я сделал так: «Предыдущий (ReportItems! MyTextboxName.Value)», но он дает мне ошибку: «Функции агрегата могут использоваться только для элементов отчета, содержащихся в верхних и нижних колонтитулах страниц». есть ли способ справиться с этим? – Hamza

ответ

0

Попробуйте Предыдущее (Скопировать выражение, используемое в вашем MyTextboxName)

+0

Я уже пробовал этот код. это дает мне неправильный ответ или говорит, давая мне правильный ответ всего за два ряда. если Table2 имеет более 2 строк, чем дает неправильные результаты. – Hamza

0

Вы можете использовать Lag функцию в SQL заявление, чтобы получить к предыдущему значению.

SELECT Field1, Lag(Field1,1,NULL) OVER(PARTITION BY .... ORDER BY ....) 
FROM Table1..... 

Вот несколько статей, которые помогут вам понять Отставание в деталях

Intro to Lead and Lag By Pinal Dave

Lead and Lag function article in DatabaseJournal