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

مشكلة فى التاريخ مع جملة الاسيكول

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

مرفق مثال به جدول يحتوى على رقم id وتاريخ عند مقارنة تاريخ احد هذه السجلات بتاريخ معين فانه لايعطى نتيجة صحيحة فى المثال المرفق مثلا اريد مقارنة التاريخ فى السجلات مع التاريخ الحالى +27 يوم فى المثال المفروض انه يعطى النتيجة عدد 1 سجل ولكن يعطى عدد 2 سجل المشكلة باختصار فى التاريخ وشكرا

date.rar

#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

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#3

شكرا اخى جعله الله فى ميزان حسناتك ان شاء الله

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