مرفق مثال به جدول يحتوى على رقم id وتاريخ عند مقارنة تاريخ احد هذه السجلات بتاريخ معين فانه لايعطى نتيجة صحيحة فى المثال المرفق مثلا اريد مقارنة التاريخ فى السجلات مع التاريخ الحالى +27 يوم فى المثال المفروض انه يعطى النتيجة عدد 1 سجل ولكن يعطى عدد 2 سجل المشكلة باختصار فى التاريخ وشكرا
مشكلة فى التاريخ مع جملة الاسيكول
السلام عليكم...
الخطأ مضاعف!!
أولا: الحقل MDate هو حقل Date/Time و تريد مقارنته بقيمة Date (المتغير x) و لذلك لا داعي لتحويله إلى String داخل جملة SELECT. إن مقارنة التواريخ تختلف كلياً عن مقارنة النصوص، مثلاً إذا عاملنا القيمتين "2008/05/30" و "2008/06/10" كـ String فإن القيمة الأولى أكبر من الثانية لأن الثانية تبدأ بـ 1 و الأولى تبدأ بـ 3 !! بينما كتاريخين فإن الأولى أصغر من الثانية بالتأكيد.
ثانياً: محركات قواعد البيانات تتعامل داخلياً مع التواريخ بالصيغة الأمريكية و هي الشهر قبل اليوم (mm/dd/yyyy) و لذلك يجب وضع التاريخ في هذه الصيغة عند إرساله في جملة SELECT و مايشبهها، باستعمال الدالة Format و ليس تحويله مباشرة إلى String بالدالة Str.
و عليه فالكود الصحيح هو:
Private Sub Command1_Click() Dim x As Date x = Date + 27 If rs.State = 1 Then rs.Close rs.Open " select * from XDate where MDate > #" & Format(x, "mm/dd/yyyy") & "#", db, adOpenStatic, adLockOptimistic If rs.EOF = False Then MsgBox (rs.RecordCount) End If End Sub
نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
شكرا اخى جعله الله فى ميزان حسناتك ان شاء الله