سؤال

لديّ تقرير يعمل على أساس كل ساعة من التحقق من الطلبات الجديدة. ومع ذلك ، فإنه يعمل بشكل رائع ، أود فقط إرسال التقرير إذا كان هناك طلب واحد على الأقل. إذا كان التقرير فارغًا - لا أريد إرسال التقرير على الإطلاق.

لتمديد هذا ، أود فقط إرسال التقرير إذا كانت هناك أوامر جديدة.

أفكار؟

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

المحلول

فقط أضف شرطًا في استعلام DDS الخاص بك للتحقق من وقت الطلب. إذا كان هناك أي أوامر في الساعة الماضية ، فيجب أن تقوم استعلامك بإرجاع مجموعة النتائج الخاصة بك وإلا بأي شيء.

على سبيل المثال ، في استعلامك ، أضف المنطق التالي

 DECLARE @HoursAgo int
 SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime) 
 FROM Orders 
 ORDER BY OrderTime DESC  

في استفسارك ، أضف البند التالي

 WHERE @HoursAgo > 0

قد ترغب أيضًا في إضافة شيكات إضافية للتأكد من أن الطلب من اليوم الحالي.

نصائح أخرى

هناك خاصية لمجموعة بيانات RDL تسمى "Norows" يمكنها عرض رسالة مخصصة إذا لم يتم إرجاع مجموعة البيانات أي صفوف. سيظل يرسل التقرير الفارغ ، فقط مع رسالة خاصة.

إذا كنت ترغب في عدم إطلاق الاشتراك عن التقرير ، فإن الطريقة الوحيدة التي أعرفها بذلك هي التحقق من عدد الصفوف من عبارة SELECT إذا كان الإجراء المخزن ورمي خطأ إذا كان عدد الصفوف صفرًا. ليست طريقة أنيقة لسحب هذا ولكنها لن ترسل التقرير لأن الخطأ يحدث على جانب T-SQL ولن يتمكن SSRs من تقديم التقرير.

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top