تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] دالة datediff
#1
لسلام عليكم
ممكن طريقة لمعرفة لطفل المتسرب عن اللقاح بداله date diff بين تاريخ اللقاح القادم والتاريح الحالي today
حيث لكل طفل 8 جرع تلقيحية
ويكون التسرب اذا كانت المقلرنه اكثر من 30 يوم يكون متسرب واذا كان اقل من 30 يوم  يكون غير متسرب
 وهل يمكن ان يظهر التسرب بفورم البحث بلون احمر
الرد }}}
تم الشكر بواسطة:
#2
كود :
   Friend Function CheckVaccinationPeriod(currentDate As DateTime, vaccinationDate As DateTime, period As Integer) As Boolean
       If vaccinationDate.Subtract(currentDate).TotalDays > period Then
           Return True
       End If
       Return False
   End Function

   Friend Function CheckVaccinationPeriod(vaccinationDate As DateTime) As Boolean
       Return CheckVaccinationPeriod(DateTime.Now, vaccinationDate, 30)
   End Function
الدالة اعلاه تسترجع قيمة عبارة عن Boolean  عليك فقط ان تمرر تاريخ التطغيم الي الدالة و ايضا تستخدم جملة شرطية للتاكد من أن الدالة قد تحققت قيمتها و بناء علي تلك القيمة تقوم بتغيير لون التكست او العكس صحيح

أو يمكنك استخدام الدالتان أعلاه ب أسلوب أخر حيث اننا نعرف أن وقت التطعيم يجب أن يكون أكبر من الوقت الحالي ب ثلاثون يوما


كود :
   Friend Function CheckVaccinationPeriod(currentDate As DateTime, vaccinationDate As DateTime, period As Integer) As Boolean
       If vaccinationDate.Subtract(currentDate).TotalDays > period Then
           Return True
       End If
       Return False
   End Function

   Friend Function CheckVaccinationPeriod(period As Integer) As Boolean
       Dim vaccinationDuration As TimeSpan = New System.TimeSpan(period, 0, 0, 0)
       Dim vaccinationDate As DateTime = DateTime.Now.AddDays(vaccinationDuration.Days)
       Return CheckVaccinationPeriod(DateTime.Now, vaccinationDate, vaccinationDuration.Days)
   End Function



عليك ان تمرر المدة الزمنية للتطعيم و في حالتك هنا هي 30 يوما

كود :
       If CheckVaccinationPeriod(30) Then
           ' do something
       End If
الرد }}}
تم الشكر بواسطة: Sajad , مبرمج بلا حدود , sphinx
#3
اشكرك اخي جزيل الشكر انا عامل ربط بين البرنامج بالاكسيس قصدك انه اعما حقل للتسرب
الرد }}}
تم الشكر بواسطة:
#4
لماذا تريد إنشاء حقل للتسرب من التطعيم .... عموما القرار لك و اعتذر لأنني لا اعمل في الدات بيز إطلاقا
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود
#5
Dim strDate As Date
Dim strate As Date
Dim next1 As Date
next1 = DtpBCG.Value
Me.Dtpnext1.Value = next1.AddMonths(2)
strate = Dtpnext1.Value
strDate = Today
TextBox2.Text = DateDiff(DateInterval.Day, strate, strDate)
هذا كود الاظافة addmonthوالمقارنه بدالة datediff لكن ينقصني شرط لدالة المقارنه datediff اذا كان كبر من 30 يوم يكون الطفل متسرب واذا كان اقل من 30 يكون غير متسرب
اشكرك جدا على مواصلة الاجابة معي
حاولت ان اارفق البرنامج لكن حجمه كبير
الرد }}}
تم الشكر بواسطة:
#6
رجاء أن تصحح لي إن كنت انا مخطئا ..... ما أفهمه من الكود الخاص بك ان هناك تاريخ معين يتم قراءته من الداتا بيز و هو علي ما أعتقد المتغير Next1

أما بقيية التواريخ فليس لها اي اهمية خاصة انك تحتاج فقط الي تاريخ التلقيح الذي نحتاج ان نقارنه هو فقط ب الوقت الراهن ثم نطرح الفارق بين التاريخين و نظهر النتائح في التكست بوكس
الرد }}}
تم الشكر بواسطة:
#7
دعني اوضح لك اكثر
مثلا لدي طفل لقح بتاريخ 20/7/2015  وهو تاريخ اخذ  اللقاح ويحددة اليوزر
ويكون موعد اللقاح القادم  (next1) بعد شهرين من تاريخ اخذ اللقاح
Dim next1 As Date
next1 = DtpBCG.Value
Me.Dtpnext1.Value = next1.AddMonths(2
DtpBCG= داتا تايم بيكر لتاريخ اخذ اللقاح وهو تاريخ لقاح اسمه البي سي جي
ولذلك يكون تاريخ اللقاح القادم    20/9/2015
اما التسرب  فيكون  المقارنه بين تاريخ اللقاح القادم والتاريخ الحالي  today   فيقارن  التاريخ الحالي  today  وتاريخ اللقاح القادم  ويحسب اذا كانت اكثر من 30 يوم يكون الطفل متسرب واذا قل يكون غير متسرب
وهذا مااقصدة بكودالمقارنه
Dim strDate As Date
       Dim strate As Date
strate = Dtpnext1.Value
       strDate = Today
       TextBox2.Text = DateDiff(DateInterval.Day, strate, strDate)

ارفقت صورة  لواجهة المشروع واشكرك جدا


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#8
ما هو ده اللي أنا كتبته في الكود السابق قمت بمقارنة تاريخ اللقاح الجديد مع الناريخ الحالي فقط انا كتبت الكود ليسترجع Boolean
حيث من الدالة يمكن معرفة هل الطفل قد تأخر عن وقت التلقيح ام لا مثلا لو الطفل لم يتاخر عن وقت التلقيح فإن الدالة تسترجع قيمة عبارة عن False أما لو تأخر فإن قيمة الدالة تكون True

لذلك انت لديك حالتان :

الأولي أن تستخدم الدالة التي انا كتبتها سابقا و تمرر لها المتغيرات الني لديك مثل وقت التلقيج الجديد و وقت التلقيح القديم و الفارق بينهما هنا يجب أن يكون 60 يوما و لتنسي تماما التوقيت الحالي فإن تحققت الدالة فهنا يعتبر الطفل قد فاته وقت التلقيح

الثانية الفارق الزمني بين الوقت الحالي و وقت التلقيح الجديد و هو ما تقوم انت بحساب قيمته لتظهر في التكست بوكس وهنا ليس شرطا ان يكون الفارق بين وقت التلقيح الجديد و الوقت الحالي ان يكون 30 يوما فقط لكن ما يهمك هنا هو أن الفارق بين التوقيت الحالي و التلقيح الجيد يجب ان يكون لا يساوي صفرا او اقل من صفر لأنه و في تلك الحالة يعتبر الطقل تأخر عن ميعاد التلقيح أيضا
الرد }}}
تم الشكر بواسطة:
#9
اشكرك جدا اخي وبارك الله بيك لكن ما ارجوا منك هو ان توضح لي ما اغيرة وماهي القيم التي ابدلها بالكود الذ ي وضعته انت وشكرا لك
مع الملاحظه ان الحالة الثانية قد اكون اسهل واوضح لي
الرد }}}
تم الشكر بواسطة:
#10
اولا دعنا نحسب الفارق بين وقت التلقيح و الوقت الحالي
وقت التلقيح الجديد معلوم لديك بالفعل و هو متغير عبارة عن Next1 و اسمح لي أن أطلق عليه vaccinationDate

وهذا سوف يمثل الفارق في الايام و هو الذي انت في حاجة ان يظهر ف التكست بوكس

كود :
Dim dateDiff As Integer = vaccinationDate.Subtract(DateTime.Now).TotalDays

لنضع القيمة الناتجة في التكست بوكس


كود :
 TextBox2.text = dateDiff


الأن لنتأكد من شرط التهرب من التطعيم و بناء علي ذلك نغير لون الخط في التكست بوكس


كود :
Dim clr As Color = TextBox2.ForeColor
       If dateDiff < 0 Then
           TextBox2.ForeColor = Color.Red
       End If
       TextBox2.ForeColor = clr

تقريبا ده كل الكود لكن المشكلة انك كنت محتاجة بطريقتك و بأسلوبك أنت
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود , Sajad



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم