Question

Cela semble être simple mais je ne trouve rien pour le moment. Dans Reporting Services, j'ai une table avec un maximum de 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 en faire un total. Je ne peux rien changer du côté de la base de données car mes procédures stockées sont utilisées ailleurs dans le système. Chaque ligne extrait également des données d'un jeu de données différent, je ne peux donc pas faire la somme de ce dernier. Puis-je additionner toutes les lignes avec un pied de table? De manière similaire à la totalisation d'un nombre de lignes dans Excel? Il semble très redondant de placer l'expression de visibilité de chaque ligne dans la ligne de bas de page pour calculer la somme.

Était-ce utile?

La solution

Quelques façons d’y parvenir:

1. Faites le calcul dans le code SQL et faites la somme de ce champ, comme suit:

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

Ensuite, utilisez simplement le champ TotalAmount dans votre ligne Détails et faites la somme dans le pied de page.

2. Créez un deuxième jeu de données qui calcule le total pour vous et utilisez-le dans votre pied de page au lieu d'une somme:

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

3. Utilisez un code personnalisé. Cliquez avec le bouton droit sur l'espace de mise en page, choisissez Propriétés et cliquez sur l'onglet Code. Mettez 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

Dans la bande Détail, indiquez dans la colonne où vous faites la somme du champ:

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

Ceci exécutera le code ci-dessus et fera votre calcul plus calculer la somme totale dans le processus.

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

=Code.TotalAmount

Et vous avez terminé. Faites simplement attention car l'ordre dans lequel votre code sera exécuté 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 de la bande Detail), ce qui rendrait le zéro total. les calculs de la bande de détail n’ayant pas encore eu lieu, mais cela devrait fonctionner dans le cas général.

Autres conseils

Vous pouvez modifier la base de données comme suit.

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

Ajoutez simplement une colonne supplémentaire à l'ensemble de données comme suit:  , SOMME (Quantité commandée) OVER (PARTITION BY SalesOrderID) COMME 'Total'

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

Vous pouvez utiliser la même technique avec COUNT, AVG, etc.

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

Si vous rencontrez un problème d'ordre d'ordre, ajoutez une zone de texte en dessous du tableau et affichez TotalAmount dans cette zone.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top