سؤال

أنا أكتب تقارير على خادم الإبلاغ عن خادم SQL الذي يحتوي على عدد من الساعات التي تم تجميعها بواسطة المستخدم ، على سبيل المثال ، والمحسب الكلي على أساس مجموع القيم.

يدير استعلامي حاليًا برنامجًا مخزنًا يعيد الساعات كما في تنسيق HH: MM ، بدلاً من ساعات العشرية ، حيث يجد مستخدمونا ذلك أكثر سهولة. تحدث المشكلة عندما أحاول إضافة العمود باستخدام تعبير SSRS ، لأن وظيفة SUM ليست ذكية بما يكفي للتعامل مع أوقات الإضافة في هذا التنسيق.

هل هناك أي طريقة ل:

  1. عرض فاصل زمني (في دقائق أو ساعات) بتنسيق HH: MM أثناء حسابه في شكل عشري؟
  2. أو تقسيم وحساب إجمالي قيم نص HH: MM للوصول إلى المجموع كتعبير؟

أود تجنب الاضطرار إلى كتابة/تشغيل استعلام ثان فقط للحصول على المجموع.

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

المحلول

الرد على بلدي رقم 1:

  1. اجعل استعلامك يعيد عدة دقائق (يدل عليها TimeSpent أقل).
  2. اضبط تنسيق مربع النص الخاص بك على "عام" إذا لم يكن ذلك بالفعل
  3. استخدم التعبير التالي كقيمة:=FLOOR(Fields!TimeSpent.Value / 60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
  4. للحصول على مربع نص SUM ، استخدم التعبير التالي: =FLOOR(Sum(Fields!TimeSpent.Value) / 60) & ":" & RIGHT("0" & (Sum(Fields!TimeSpent.Value) MOD 60), 2)

نصائح أخرى

يمكنك أيضًا محاولة وضع هذه الوظيفة في الرمز المخصص لتقريرك.

Function secondsToString(seconds As int64) As String
Dim myTS As New TimeSpan(seconds * 10000000)
Return String.Format("{0:00}:{1:00}:{2:00}",myTS.Hours, myTS.Minutes, myTS.Seconds)
End Function

يعود SPS الخاص بي عمومًا في ثوانٍ وهذا يمنعني من الاضطرار إلى التفكير بشدة إذا اضطررت إلى إعادة HH: MM: SS في أكثر من مكان واحد. بالإضافة إلى ذلك ، يمكنك القيام بجميع مجموعاتك بشكل طبيعي ولفها في هذا للحصول على تنسيق جميل.

لا يمكنني الحصول على الفضل في هذا الأمر لأنني أعلم أنني تعثرت على الويب منذ بعض الوقت ، لكن لا يمكنني تذكر أين.

لذا في حالتك ، فإنك تحتاج إلى تحويلها إلى ثوانٍ ، يمكنك محاولة استخدام الرمز أدناه:

= Format (dateadd ("S" ، (المعلمات! ReportParameter1.value * 60) ، "00:00:00") ، "HH: MM: SS")

أتمنى أن يساعدك هذا

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