24‏/05‏/2016

Najla

عمل استعلام لاستخراج تاريخ معين بعد إجراء عدة عمليات (درس متقدم)

السلام عليكم ورحمة الله

عمل استعلام لاستخراج تاريخ معين بعد إضافة 30 يوم
درس متقدم

عمل استعلام لاستخراج تاريخ معين بعد إجراء عدة عمليات (درس متقدم)

قواعد بيانات - دروس4يو Dros4U
شرح تصميم مشروع "بنك دم" يختص بإدخال بيانات المتبرعين،
وحفظ وحدات الدم وتخزينها بقاعدة البيانات،
ومعرفة الوحدات المتوفرة والصالحة.
 باستخدام برمجة Asp.net + VB.net 
وقاعدة بيانات من نوع Sql
فاصل Blog4Prog

لنفترض أن هذه هي واجهة الموقع :)

تصميم موقع BloodBank - مدونة Blog4Prog

بعد تصميم المشروع طُلب منك الإنتباه إلى أن 
"الوحدات تبقى صالحة خلال فترة 35 يوم من تاريخ إدخالها فقط."

فما الحل؟

تابع معنا..

بداية نقوم بإنشاء جدول المتبرعين
جدول في قاعدة البيانات - مدونة Blog4Prog

بعد إنشاء الجدول قم بإدخال بيانات المتبرعين إليه
سواء عن طريق الداتا بيس مباشرة أو من خلال عمل شاشة إدخال كما في الصورة
DetailsView
جدول في قاعدة البيانات - مدونة Blog4Prog

ثم نقوم بإنشاء الجدول الثاني باسم BloodBank
ويحتوي على الحقول التالية:
جدول في قاعدة البيانات - مدونة Blog4Prog
رقم العملية No_op
نوع وحدة الدم BloodType
تاريخ الإضافة Date
حالة الوحدة Active
الكمية Quantity
رقم المتبرع IdDonor

المطلوب الآن هو فرز الوحدات المدخلة
والوحدة التي تجاوز تاريخ إدخالها 35 يوم يتم إتلاقها..

نقوم بعمل استعلام:
Server Explorer - Views - Add New View
نضيف جدول BloodBank إلى المكان المخصص للجداول
نختار الحقول التي نريد أن تظهر كما في الصورة
جدول في قاعدة البيانات - مدونة Blog4Prog

SELECT        No_op, BloodType, Date, Active, Quantity, IdDonor, DATEADD(day, 35, Date) AS After35, DATEDIFF(day, GETDATE(), DATEADD(day, 35, Date)) 
                         AS ExpirationDate
FROM            dbo.BloodBank

شرح الدوال الجديدة التي تم استخدامها في كود Sql 
دالة GETDATE للحصول على تاريخ اليوم (حسب تاريخ جهازك) وتكتب كالتالي
 GETDATE()

دالة DATEDIFF للحصول على الفارق بين تاريخين، وتكتب كالتالي
DATEDIFF(datepart,startdate,enddate)
حيث datepart هو سنة أو شهر أو يوم
التواريخ التي سيتم احتساب الفرق بينهما 
startdate التاريخ الأول
enddate التاريخ الثاني

مثال للتوضيح: 
SELECT DATEDIFF(day,'2014-06-05','2014-08-05') AS DiffDate
إيجاد الفارق بالأيام بين التاريخين في الأعلى 
الجواب 61 يوم

دالة DATEADD لإضافة قيمة للتاريخ بالأيام أو بالأشهر


وفي مثالنا قمنا بالتالي: 
DATEDIFF(day, GETDATE(), DATEADD(day, 35, Date)) 
أي إيجاد الفرق بين تاريخ اليوم والتاريخ الذي قمنا بإضافة 35 يوم له مسبقا

مع العلم أن تاريخ تطبيق المثال كان: 05/24/2016

النتيجة
استعلام Query - مدونة Blog4Prog
تاريخ إدخال العينات/الوحدات
التاريخ بعد إضافة له 35 يوم
تاريخ الصلاحية (ناتج دالة DATEDIFF)
السالب تجاوز 35 يوم

التعليقآت