تنسيق خدمات تقارير خادم SQL لساعات: دقائق
سؤال
أنا أكتب تقارير على خادم الإبلاغ عن خادم SQL الذي يحتوي على عدد من الساعات التي تم تجميعها بواسطة المستخدم ، على سبيل المثال ، والمحسب الكلي على أساس مجموع القيم.
يدير استعلامي حاليًا برنامجًا مخزنًا يعيد الساعات كما في تنسيق HH: MM ، بدلاً من ساعات العشرية ، حيث يجد مستخدمونا ذلك أكثر سهولة. تحدث المشكلة عندما أحاول إضافة العمود باستخدام تعبير SSRS ، لأن وظيفة SUM ليست ذكية بما يكفي للتعامل مع أوقات الإضافة في هذا التنسيق.
هل هناك أي طريقة ل:
- عرض فاصل زمني (في دقائق أو ساعات) بتنسيق HH: MM أثناء حسابه في شكل عشري؟
- أو تقسيم وحساب إجمالي قيم نص HH: MM للوصول إلى المجموع كتعبير؟
أود تجنب الاضطرار إلى كتابة/تشغيل استعلام ثان فقط للحصول على المجموع.
المحلول
الرد على بلدي رقم 1:
- اجعل استعلامك يعيد عدة دقائق (يدل عليها
TimeSpent
أقل). - اضبط تنسيق مربع النص الخاص بك على "عام" إذا لم يكن ذلك بالفعل
- استخدم التعبير التالي كقيمة:
=FLOOR(Fields!TimeSpent.Value / 60) & ":" & RIGHT("0" & (Fields!TimeSpent.Value MOD 60), 2)
- للحصول على مربع نص 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")
أتمنى أن يساعدك هذا