إنشاء مجموع الصفوف المحسوبة في Microsoft Reporting Services

StackOverflow https://stackoverflow.com/questions/636573

  •  10-07-2019
  •  | 
  •  

سؤال

يبدو أن هذا يجب أن يكون بسيطًا ولكن لا يمكنني العثور على أي شيء حتى الآن.في خدمات التقارير لدي جدول يحتوي على ما يصل إلى 6 صفوف تحتوي جميعها على قيم محسوبة ورؤية ديناميكية.أود أن ألخص هذه الصفوف.لدي في الأساس عدد من عناصر الفاتورة وأريد جمعها بالكامل.لا يمكنني تغيير أي شيء من جانب قاعدة البيانات نظرًا لأن إجراءاتي المخزنة تُستخدم في مكان آخر في النظام.يسحب كل صف البيانات من مجموعة بيانات مختلفة أيضًا، لذلك لا يمكنني جمع مجموعة البيانات.هل يمكنني جمع كل الصفوف باستخدام تذييل الجدول؟على نحو مماثل لإجمالي عدد من الصفوف في إكسيل؟يبدو أنه من غير الضروري جدًا وضع تعبير الرؤية الخاص بي من كل صف في صف التذييل الخاص بي لحساب المجموع.

هل كانت مفيدة؟

المحلول

بعض الطرق التي يمكنك من خلالها تحقيق ذلك:

1. قم بإجراء الحساب في SQL وقم بجمع هذا الحقل، كما يلي:

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

ثم استخدم حقل TotalAmount في صف التفاصيل الخاص بك وقم بجمعه في التذييل.

2. قم بإنشاء مجموعة بيانات ثانية تحسب الإجمالي لك واستخدمها في تذييل الصفحة بدلاً من المجموع:

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

3. افعل ذلك باستخدام رمز مخصص.انقر بزر الماوس الأيمن على مساحة التخطيط، ثم اختر خصائص وانقر على علامة التبويب التعليمات البرمجية.ضع الكود التالي :

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

في شريط التفاصيل، اجعل العمود الذي تقوم بجمع الحقل فيه يحتوي على هذا التعبير:

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

سيؤدي هذا إلى تنفيذ الكود أعلاه وإجراء العمليات الحسابية الخاصة بك بالإضافة إلى حساب المبلغ الإجمالي في هذه العملية.

يعرض شريط التذييل المجموع الإجمالي بحيث يحتوي العمود على التعبير:

=Code.TotalAmount

إنتهيت.فقط كن حذرًا لأنك لا تضمن الترتيب الذي سيتم تنفيذ التعليمات البرمجية الخاصة بك به، وبالنسبة لبعض التقارير، سيتم تنفيذ التذييل أولاً (على سبيل المثال، إذا كنت تستخدم مجموع الصفوف في شريط التفاصيل) مما يجعل المجموع صفرًا نظرًا لأن حسابات نطاق التفاصيل لم تحدث بعد، ولكن في الحالة العامة، يجب أن ينجح هذا.

نصائح أخرى

يمكنك تغيير ديسيبل على النحو التالي.

هل تعلم أنه يمكنك الحصول على نتائج مجمعة في SQL بدون تجميع البيانات؟

ما عليك سوى إضافة عمود إضافي إلى مجموعة البيانات كما يلي:، SUM(OrderQty) OVER(PARTITION BY SalesOrderID) كـ "الإجمالي"

في العينة أعلاه:OrderQty هي القيمة التي ترغب في جمعها Salerorderid هي ما يعادل "المجموعة بواسطة"

يمكنك استخدام نفس الأسلوب مع COUNT وAVG وما إلى ذلك

مزيد من المعلومات هناhttp://msdn.microsoft.com/en-us/library/ms189461(SQL.90).aspx

في حال كان لديك مشكلة مع النظام التنفيذ، إضافة مربع النص أدناه الجدول وعرض TotalAmount في هذا المربع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top