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

SQL و التتاريخ الهجري

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

السلام عليكم

أستخدم Visual Basic 6.0 والمحرك Microsoft.Jet.OLEDB.4.0 للاتصال بقاعدة بيانات Access. أكتب عبارات SQL في Visual Basic.

مشاكل كثيرة جداً تواجهني في عبارات SQL المتعلقة بالتاريخ سواء استخدمت التقويم الهجري أو الميلادي لا سيما حينما يكون اليوم من 1 إلى 12 حينها تحدث أخطاء كثيرة جداً في الاستعلام.

مثال: التاريخ اليوم يوافق 3 سبتمبر 2006 أي 3/9/2006. ولدينا قاعدة بيانات فيها الجدول Attend الذي يحتوي الحقل Date.

الرجاء معاينة الكود التالي:

Private Sub Form_Load()
Dim conn As ADODB.Connection
Dim rec As ADODB.Recordset
Dim sql As String
sql = "select * from Attend  where Date =#" & Date & "#"
Set conn = New ADODB.Connection
Set rec = New ADODB.Recordset
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DB.mdb;Persist Security Info=False"
conn.Open
rec.Open sql, conn, adOpenKeyset, adLockOptimistic
If rec.RecordCount > 0 Then
MsgBox "FOUND"
Else
MsgBox "NOT FOUND"
End If
End Sub

على الرغم من أن الجدول Attend به سجل بتاريخ 3 سبتمبر إلا أن الاستعلام الماضي لم يجده وأرسل الرسالة الثانية!

لو كان تاريخ 18 سبتمبر مثلاً لوجد السجل.

الآن سنغير في عبارة Sql الماضية ونجعلها:

sql = "select * from Attend  where Date =#" & Format(Date, "mm/dd/yyyy") & "#"

نجح الاستعلام ووجد السجل.

السؤال الأول: لماذا يجب أن نصرح بالفورمات DD/MM/YYYY على الرغم من أنه هو الافتراضي لمحرك SQL؟

-------------------

حتى وإن رضيت بهذا الحل. أريد أن أستخدم التاريخ الهجري الآن حيث إنني مجبر عليه في مشروعي.

أضيف هذا السطر كأول سطر في الحدث FORM_LOAD:

Calendar = vbCalHijri

عند التنفيذ لم يعثر على السجل! حاولت تغيير إعدادات قاعدة البيانات في Access إلى استخدام التقويم الهجري. ولم ينفع ذلك.

غيرت جملة SQL كتجربة إلى:

sql = "select * from Attend  where Date =#" & Format(#8/10/1427#, "mm/dd/yyyy") & "#"

حيث إن 3 سبتمبر توافق 10 شعبان. ولم ينفع ذلك ولم يجد السجل.

السؤال الثاني: ما هو الحل وكيف أستعلم باستخدام تواريخ هجرية؟

In order to understand recursion, one must first understand recursion

alawfiadel@yahoo.com

#2

لقد عثرت على جواب السؤال الأول بقليل من التحليل. وأظنه يكمن في دالة Date نفسها.

ولكن بحاجة إلى جواب السؤال الثاني.

In order to understand recursion, one must first understand recursion

alawfiadel@yahoo.com

#3

السلام عليكم

مسألة التاريخ الهجري خصوصا عند التعامل مع جمل الSQL كثيرة واعتقد انه يجب ان نناقش المشكلة بشكل موسع وان يطرح الاخوة الذين لديهم حلول لمساعدة المبرمج العربي في التغلب على هذه المشكلة بشكل نهائي وواضحوعملي.

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