السلام عليكم ورحمة الله ارجو مساعدتى حيث اننى اعمل على برنامج POS وطلب ان اقوم بعمل Store Procedure تقوم بعمل تجميع للمبيعات فى كل ساعة بمعنى عند اختيار تاريخ معين من خلال تقرير يظهر فى كل ساعة من اليوم اجمالى مبيعات كل ساعة
طلب Store procedure تجمع المبيعات كل ساعة يوميا
السلام عليكم ورحمة الله شكرا على المقالة وكانت بالفعل جيدة ولكن المشكلة ان الهدف من عمل store procedure هو استخدامها لاحقا فى تقرير للبرنامج POS بحيث يتم استدعاء التقرير من البرنامج فعند اختيار تاريخ معين يظهر فى التقرير ساعات اليوم مجمع بيها المبيعات الخاصة بكل ساعة
مثلا يوم 1\1\2006
ساعة 1 الى الساعة 2 مبيعات 3000 جنيه وهكذا
فعلا سؤالك رائع جدا
أنا بعرف الأمر
Waitfor Time 'HH:MM:SS'
لكن صدقا عمل جدولة لإجراء معين خلال أيام معينه ما خطرت على بالي أبدا
إذا بدك ممكن تعمل إجراء يعمل كل ساعة
يقرأ مجموعة معينة من الجداول و يقوم بحساب
نسبة المبيعات لساعة معينة و هي ساعة
مناداة التابعة "ساعة جديدة"
و يقوم التابع بإضافة سطر إلى جدول
هذا الجدول يحتوى على
تاريخ اليوم + الساعة = مفتاح أساسي
و القيمة الإجمالية للبيع في هذه الساعة
و عندما تريد أي قيمة تقوم بعمل إستعلام صغير على هذا الجدول
أرجوا إني كون فدتك
سلام
السلام عليكم يا اخى Designen شكرا على اهتمامك برد على هذا التساؤل
ولكن هناك بعض المصطلحات غير مفهومة بسبب هنا فى مصر نستخدم مصطلحات لغة الانجليزية ولكن سوف اسرد لك ما فهمته
انت تقصد ان اقوم بعمل الاتى
اولا اقوم بعمل اجراء ( اعتقد انك تقصد store procedure) يعمل كل ساعة لذلك انا اقترح يكون هناك Trigger او باللغة العربية محفز يقوم بتنشيط الاجراء او Store procedure ليقوم بالعمل كل ساعة
يقوم الاجراء الذى يحتوى على جملة Select بقراءة اجمالى المبيعات المسجلة فى جدول INVOICE ولكن هناك مشكلة ان كل مرة يتم فيها هذا الاجراء يجمع مبيعات كلها من بداية العمل حتى ساعة التى عمل فيها الاجراء
فلابد ان يتم عمل شى ما او اضافة عمود معين فى جدول الفواتير البيع لكى يقوم بتجميع مبيعات كل ساعة بشكل مستقل بحيث لو تم تجميع كل الساعات اليوم يتم الحصول على اجمالى مبيعات اليوم
اعتقد بعد ذلك يتم تسجيل مبيعات كل ساعة فى جدول يحتوى على ساعة والتاريخ حل جيد جدا واقوم بعمل استعلام عنه بحيث لو تم عمل GROUPING لتاريخ معين تظهر فيه الساعات باجمالى مبيعات الخاصة بيها
شكرا للرد فى انتظار ردك ان شاء الله
يمر في رأسي حل لسؤالك باستعمال الدالة convert على التاريخ والوقت الحالي (أو المحدد من قبل المستخدم، والذي لن يكون الحالي طبعاً) والتاريخ والوقت المخزن مع المعامل 108 لاقتطاع جزء الوقت منهما، ومن ثم إجراء استعلام للحصول على السجلات ذات الوقت المحصور بينهما.
ولكن أولا بنية الجداول حتى أستطيع المضي قدما في مساعدتك
:)
فكر بطريقة أخرى
شكرا للاخ WALCOM على الرد
بالنسبة لبنية الجداول بالنسبة للمبيعات هناك جدول للاسماء وجدول للمبيعات
جدول المبيعات يحتوى على
ID
NAME_ID
SALE_DATE
JV_ID رقم فاتورة البيع
ITEM_ID
QUANTITY
PRICE
NOTE
TOTAL_SALE
شكرا لك
إنت عندك جدول مبيعات يحتوى على حركة المبيعات
أنا فكرتي إنشاء جدول له الأعمدة
Date , Time , SUM
حيث يقوم التابع عند زمن معين في كل ساعة بالعمل
ليقوم بتنفيذ نفسه و سيكون تقريبا
يحتوى على هذه الإستعلامات
Declare @Total Int Select @Total = Sum ( Total_Sale ) From X Where DatePart ( HH , Sale_Date ) = DatePart ( HH , GetDate () ) - 1 AND DateDiff ( DD , Sale_Date , GetDate () ) = 0 Group By Sale_Date Insert Into X Values ( Convert ( DateTime , GetDate () , 103 ) , DatePart ( HH , Convert ( DateTime , GetDate () , 8 ) ) - 1 , @Total )
طبعا في حال عرفنا كيف نضع إجراء موضع الجدولة
كل شي هيكون سهل
طبعا بدنا ناقش حالة آخر ساعة في اليوم
سلام
هذا الموضوع مغلق.