السلام عليكم ورحمة الله
عمل استعلام لاستخراج تاريخ معين بعد إضافة 30 يوم
درس متقدم
عمل استعلام لاستخراج تاريخ معين بعد إجراء عدة عمليات (درس متقدم)
شرح تصميم مشروع "بنك دم" يختص بإدخال بيانات المتبرعين،
وحفظ وحدات الدم وتخزينها بقاعدة البيانات،
ومعرفة الوحدات المتوفرة والصالحة.
باستخدام برمجة Asp.net + VB.net
وقاعدة بيانات من نوع Sql
لنفترض أن هذه هي واجهة الموقع :)
بعد تصميم المشروع طُلب منك الإنتباه إلى أن
"الوحدات تبقى صالحة خلال فترة 35 يوم من تاريخ إدخالها فقط."
فما الحل؟
تابع معنا..
بداية نقوم بإنشاء جدول المتبرعين
بعد إنشاء الجدول قم بإدخال بيانات المتبرعين إليه
سواء عن طريق الداتا بيس مباشرة أو من خلال عمل شاشة إدخال كما في الصورة
DetailsView
ثم نقوم بإنشاء الجدول الثاني باسم BloodBank
ويحتوي على الحقول التالية:
رقم العملية No_op
نوع وحدة الدم BloodType
تاريخ الإضافة Date
حالة الوحدة Active
الكمية Quantity
رقم المتبرع IdDonor
المطلوب الآن هو فرز الوحدات المدخلة
والوحدة التي تجاوز تاريخ إدخالها 35 يوم يتم إتلاقها..
نقوم بعمل استعلام:
Server Explorer - Views - Add New View
نضيف جدول BloodBank إلى المكان المخصص للجداول
نختار الحقول التي نريد أن تظهر كما في الصورة
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
النتيجة
تاريخ إدخال العينات/الوحدات
التاريخ بعد إضافة له 35 يوم
تاريخ الصلاحية (ناتج دالة DATEDIFF)
السالب تجاوز 35 يوم
التعليقآت