Pergunta

Este parece que deve ser simples, mas não consigo encontrar nada ainda. No Reporting Services Eu tenho uma tabela com até 6 linhas que todos têm valores calculados e visibilidade dinâmica. Gostaria de resumir essas linhas. Basicamente, eu tenho um número de itens da fatura e quiser fazer uma total. Eu não posso mudar nada no lado do DB desde meus procedimentos armazenados são utilizados em outras partes do sistema. Cada linha extrai dados de um conjunto de dados diferente, bem, então eu não posso fazer uma soma do conjunto de dados. Posso resumir todas as linhas com um rodapé da tabela? De forma semelhante ao totalizando um número de linhas no Excel? Parece muito redundante a colocar minha expressão visibilidade de cada linha em minha linha de rodapé para calcular a soma.

Foi útil?

Solução

Algumas maneiras que você pode conseguir isso:

1 Faça o cálculo no SQL e soma nesse campo, assim:.

SELECT Quantity, Amount, Quantity * Amount As TotalAmount FROM MyTable

Em seguida, basta usar o campo TotalAmount em sua linha de detalhes e somá-la no rodapé.

2 Crie um segundo conjunto de dados que calcula o total para você e usar isso em seu rodapé, em vez de uma soma:.

=Sum(Fields!TotalAmount.Value, "MyTotalingDataset")

3. Faça isso usando código personalizado. Botão direito do mouse sobre o espaço de layout, escolha Propriedades e clique na guia Código. Coloque o código a seguir:

Public Dim TotalAmount As Double = 0

Public Function CalculateRowTotal(ThisValue As Double, ThatValue As Double) As Double
    TotalAmount = TotalAmount + (ThisValue * ThatValue)
    Return ThisValue * ThatValue
End Function

Na banda de detalhes, verifique a coluna onde você somar o campo tem esta expressão:

=Code.CalculateRowTotal(Fields!Quantity.Value, Fields!Amount.Value)

Isto irá executar o código acima e fazer o seu cálculo além de calcular a soma total no processo.

A banda rodapé exibe a soma total de modo que a coluna tem a expressão:

=Code.TotalAmount

E você está feito. Só tome cuidado porque você não está garantida a ordem em que seu código será executado e para alguns relatórios que irá executar o rodapé primeiro (por exemplo, se você usar a soma das linhas na faixa de detalhe) o que tornaria a zero, total de como os cálculos banda de detalhes ainda não aconteceu, mas para o caso geral isso deve funcionar.

Outras dicas

Você poderia mudar o db como segue.

Você sabia que você pode obter resultados agregados em SQL sem agregar os dados?

Basta adicionar uma coluna extra para o conjunto de dados da seguinte forma: , SUM (OrderQty) OVER (PARTITION BY SalesOrderID) AS 'Total'

No exemplo acima: OrderQty é o valor que você deseja soma SalerOrderID é o equivalente a 'GROUP BY'

Você pode usar a mesma técnica com COUNT, AVG e assim por diante

Mais informações aqui http://msdn.microsoft.com/en-us /library/ms189461(SQL.90).aspx

No caso de você ter um problema com a ordem de execução, adicionar uma caixa de texto abaixo da tabela e exibição TotalAmount nesta caixa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top