2009-03-11 9 views
3

Cela semble être simple, mais je ne trouve rien pour le moment. Dans Reporting Services, j'ai une table avec jusqu'à 6 lignes qui ont toutes des valeurs calculées et une visibilité dynamique. Je voudrais résumer ces lignes. Fondamentalement, j'ai un certain nombre d'éléments de facture et je veux faire un total. Je ne peux rien changer du côté de la DB puisque mes procédures stockées sont utilisées ailleurs dans le système. Chaque ligne tire également des données d'un ensemble de données différent, donc je ne peux pas faire une somme de l'ensemble de données. Puis-je additionner toutes les lignes avec un pied de table? De même pour totaliser un nombre de lignes dans Excel? Il semble très redondant de mettre mon expression de visibilité de chaque rangée dans ma rangée de bas de page pour calculer la somme.Créer une somme de lignes calculées dans Microsoft Reporting Services

Répondre

13

Quelques façons dont vous pourriez y parvenir:

1. Faites le calcul dans le SQL et résumer ce domaine, comme ceci:

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

Ensuite, il suffit d'utiliser le champ TotalAmount dans votre détail rangée et la somme dans le pied de page.

2. Créer une deuxième série de données qui calcule le total pour vous et l'utiliser dans votre pied de page au lieu d'une somme:

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

3. Est-ce à l'aide d'un code personnalisé. Cliquez avec le bouton droit sur l'espace Disposition, choisissez Propriétés et cliquez sur l'onglet Code. Mettez dans le code suivant:

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 

Sur la bande de détail, faire la colonne où vous additionnez le champ cette expression:

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

Cela exécutera le code ci-dessus et faites votre calcul ainsi que le calcul de la somme totale dans le processus.

La bande de pied de page affiche la somme totale de sorte que la colonne a l'expression:

=Code.TotalAmount 

Et vous avez terminé. Faites attention car l'ordre dans lequel votre code s'exécute n'est pas garanti et pour certains rapports, il exécutera d'abord le pied de page (par exemple, si vous utilisez la somme des lignes dans la bande Détail) ce qui ferait le zéro total car les calculs de bande de détail ne se sont pas encore produits, mais pour le cas général cela devrait fonctionner.

+0

Merci de m'avoir informé que je ne suis pas certain d'avoir reçu une commande pour l'exécution du code, ce qui est plus logique pour expliquer pourquoi il est plus complexe de faire la somme des lignes. – kd7iwp

3

Vous pouvez modifier le db comme suit.

Saviez-vous que vous pouvez obtenir des résultats agrégés dans SQL sans agréger les données?

il suffit d'ajouter une colonne supplémentaire à l'ensemble de données comme suit: , SUM (OrderQty) OVER (PARTITION PAR SalesOrderID) AS 'Total'

Dans l'exemple ci-dessus: OrderQty est la valeur que vous souhaitez résumer SalerOrderID est l'équivalent de «GROUP BY

Vous pouvez utiliser la même technique avec COUNT, AVG et ainsi de suite

Plus d'informations ici http://msdn.microsoft.com/en-us/library/ms189461(SQL.90).aspx

-2

En cas de problème avec l'ordre d'exécution, ajoutez une zone de texte sous la table et affichez TotalAmount dans cette zone.

+1

Pourriez-vous être un peu plus précis. -1 pour le flou absolu – cjds

Questions connexes