SSRS - добавление значения из предыдущих строк на основе значения, начинающегося с ~ - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю над сложным сценарием, где мне нужно показывать сумму в долларах предыдущих строк, пока не появится тильда. Вот пример:

пример изображения

Согласно приведенному выше примеру, если строка начинается с ~ [тильда], она должна показать свою собственную розничную сумму в ' Розничная торговля на котировочном поле. Если строка не начинается с ~, тогда «Retail on quote» должна быть пустой, но промежуточный итог на заднем плане, чтобы он отображался в строке с ~ добавлением суммы тильды. Любой вклад будет высоко ценится.

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Вы можете создать следующую хранимую процедуру в БД и вызвать эту процедуру в SSRS: (Примечание: я использовал сервер MS SQL в качестве БД и создал таблицу в БД, подобную той, что показана на примере изображения, кроме столбца " Retail_On_QUOTE ")

create or alter procedure test_sproc 
as
begin
create table #tbl1 (col1 char(10), Retail int, Retail_On_QUOTE int)
insert into #tbl1 select Col1, retail, 0 from tbl1
declare c1 cursor for select Col1, retail from #tbl1
declare @total int=0, @col1 char(10), @retail int, @total2 int=0
open c1
fetch next from c1 into @col1, @retail
WHILE @@FETCH_STATUS = 0 
begin
    if  left(@col1,1) = '~' 
        begin

            set @total = @retail+@total2
            set @total2 = 0
        end
    else
        begin
            set @total2 = @total2+@retail
            set @total = 0
        end
    print @total
    update #tbl1 set Retail_On_QUOTE = @total where col1 = @col1
    fetch next from c1 into @col1, @retail
end
close c1
deallocate c1
select col1, Retail, Retail_On_QUOTE from #tbl1
end
0 голосов
/ 05 февраля 2020

Вы можете сделать это в функции VB (раздел кода отчета) и вызвать функцию с именем строки и $ Amount. Добавьте к сумме и верните значение, чтобы отобразить его. Во второй функции вы можете вернуть сумму и установить ее на 0.

Не уверен, что это все правильный VB, но это будет выглядеть примерно так:

Public Function SumUp(line As String, value As Double) As Double
        sum = sum + value
        Return value
End Function

Public Function GetSum() As Double
        Dim v = sum
        sum = 0
        Return sum
End Function

В вашем Value- В поле вызывайте функцию следующим образом:

=Code!SumUp(Fields!Line, Fields!Value)

В вашем Sum-Field вызовите функцию GetSum в выражении IIF, например

=IIF(pseudo:Fields starts with~, "", Code!GetSum())
...