الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يكون 30 1 2008 اكبر من 1 6 2008

مغلق
بدأه ok_freee في 6 يناير 2008 · 7 رد · 632 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اين الخطأ بالله عليكم

Private Sub Command1_Click()

Dim noww As Date

noww = Format$(#1/30/2008#, "mm-dd-yyyy")

If Format$(Date, "mm-dd-yyyy") > noww Then

MsgBox (noww & " > " & Date)

End If

End Sub

#2
Private Sub Command1_Click()
Dim noww As Date
noww = Format$(#1/30/2008#, "mm-dd-yyyy")
If DateDiff("d", Format$(Date, "mm-dd-yyyy"), noww) Then
   MsgBox (noww & " > " & Date)
End If
End Sub

لا يجوز علي حد علمي استخدام معاملات < , > علي قيم تاريخ

لإن معاملات المقارنة ستقارن قيم عددية ..

أي ستكون 30 أكبر من 1 دائما مع اختلاف الشهر والسنة للاثنين

ولذلك يفضل استخدام دوال التعامل مع التاريخ .. مثل دالة DateDiff لحساب الفرق بين تاريخين وإرجاعه بالأيام d

تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 6 يناير 2008 في 16:23

#3

الاخ Pharaonic_Guy اكون شاكر لو مثال باستخدام هذه الدالة يحل محل الكود السابق اكون شاكرولن انسى لك هذا المعروف بارك الله فيك لاننى لم اتعامل مع هذه الدالة من قبل وهى DateDiff

#4

اخى الكريم بفضل الله وبفضلك تم حل المشكلة التى كانت تؤرقنى منذ اشهر بسبب هذا التعليق

"لا يجوز علي حد علمي استخدام معاملات < , > علي قيم تاريخ"

عملية المقارنة لم اكن ادرى انها غير ممكنة اشكرك جدا جدا جزاك الله خير

#5

لقد قمت بوضع الكود لك علي استخدام هذه الدالة .. يبدو أنك لم تنتبه إليه ..

المهم إن المشكلة قد حلت ..

#6

مقارنة التاريخ تجوز باستخدام معاملات الاصغر والاكبر

لكن المشكلة في التاريخ هو اعتماده على شكل التاريخ في الجهاز اي في الاعدادت الاقليمية

و Format$(Date, "mm-dd-yyyy") هذه تعني تاريخ اليوم اي السادس من كانون الاول وليس الاول من حزيران

وكان يكفي ان تكتب

if date >noww then

#7

شكرا اخى TareqVB ولى عدة تساؤالات

هل هناك فرق بين Format$(Date, "mm-dd-yyyy")

و

Format$(Date, "m-d-yyyy")

هل المقارنات بين تاريخين مباشرة بدونFormat$

تعطى نتائج صحيحة دائما

مثل

if #1/30/2008# < #12/3/2008# then

دائما سببت لى مشاكل كثيرة جدا جدا وحتى بعد استعمال Format$ كما فى مثالى الاول ما هو الخطأ الكود سليم والخطأ فى استعمال المقارنة

تم تعديل هذه المشاركة بواسطة ok_freee في 7 يناير 2008 في 12:26

#8

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

المشكلة في التاريخ هي عند اعطاء القيمة للتاريخ وليس عند المقارنة اي ان المهم عند المقارنة ان تكون قيمة التاريخ صحيحة وليس الشكل لان الصيغة تتحكم بها كيف تشاء

جرب ما يلي لتفهم الصورة بشكل افضل

Dim d1 As Date, d2 As Date
d1 = Format(Date, "dd/MM/yyyy")

Debug.Print Month(d1)

d2 = Format(Date, "MM/dd/yyyy")
Debug.Print Month(d2)

لمقارنة التواريخ استعمل التاريخ بصيغة yyyy/mm/dd

Format(Date, "yyyy/mm/dd")

ايضا ابحث فهذا الموضوع تم مناقشته العديد من المرات

هذا الموضوع مغلق.

مواضيع مشابهة