تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] خطأ كود إستعلام بين تاريخين
#1
في المشروع عادة أستخدم الكود التالي مع قواعد بينات oledb لجلب السجلات بين تاريخين 
أحدهما تاريخ إنشاء السجل ويكون مسجل في القاعدة 
والأخر هو التاريخ الفعلي في المشروع وهو غير مسجل في القاعدة

ولكن يبدو أن الأمر مختلف مع قاعدة بينات sql 
كود :
       DTPDate1.Value = Date.Today.AddDays(-10)

       Dim d1, d2 As String
       d1 = Format(DTPDate.Value, "yyyy/MM/dd")
       d2 = Format(DTPDate1.Value, "yyyy/MM/dd")

       da = New SqlDataAdapter("select * from MovTable where MovAddedDate Between #" & d1 & "# AND #" & d2 & "#", sqlcon)
d1 d2 هي DateTimePicker

d1 هو تاريخ تسجيل السجل في قاعدة البيانات
d2 هو تاريخ الوقت الفعلي في المشروع 

أرجو تعديل الكود حتى يعمل مع قاعدة بينات sql
الرد
تم الشكر بواسطة:
#2
جرّب أخي الكريم استبدال العلامة # بالعلامة '

جرّب أخي الكريم استبدال العلامة # بالعلامة '
الرد
تم الشكر بواسطة: ZaerAllail , ZaerAllail
#3
(23-03-20, 02:50 AM)عبد العزيز البسكري كتب :
جرّب أخي الكريم استبدال العلامة # بالعلامة '

جرّب أخي الكريم استبدال العلامة # بالعلامة '

بعد التعديل الذي ذكرت الكود لا يوجد به أخطاء ولكن لا يرجع المعلومات للكومبو 

النتيجة صفر
الرد
تم الشكر بواسطة:
#4
سلام الله عليكم أخي العزيز ورحمة الله وبركاته
بما أنك تعتمد قواعد بيانات من نوع سيكوال فلماذا لا تضع جملة الإستعلام في Stored Procedure ثم استدعاءها في المشروع؟
واعبد ربك حتى يأتيك اليقين
الرد
تم الشكر بواسطة: ZaerAllail
#5
(23-03-20, 03:16 AM)khodor1985 كتب : سلام الله عليكم أخي العزيز ورحمة الله وبركاته
بما أنك تعتمد قواعد بيانات من نوع سيكوال فلماذا لا تضع جملة الإستعلام في Stored Procedure ثم استدعاءها في المشروع؟

إستخدامي لقواعد سيكوال حديث ولا أملك الخبره الكافيه بها ولكن الأكواد جميعها تم كتابتها بشكل جيد وتعمل بشكل وترجع المعلومات المطلوبة بشكل صحيح وسريع وجميل وتوقفت عند هذا الكود الخاص بالتاريخ فقط !
الرد
تم الشكر بواسطة:
#6
طيب شوف، عند برنامج تيم فيور
واعبد ربك حتى يأتيك اليقين
الرد
تم الشكر بواسطة:
#7
(23-03-20, 03:27 AM)khodor1985 كتب : طيب شوف، عند برنامج تيم فيور


ربما نجد الحل عند بعض الأخوان هنا 
ما يحتاج تيم فيور 

عموما شكرا جزيلا لك
الرد
تم الشكر بواسطة:
#8
ماشي مثل ما بدك
واعبد ربك حتى يأتيك اليقين
الرد
تم الشكر بواسطة: ZaerAllail
#9
(23-03-20, 05:57 AM)سعود كتب : ماهي رسالة الخطأ

عند تنفيذ الكود السابق رسالة الخطأ هي التالية 

System.Data.SqlClient.SqlException: 'Incorrect syntax near '#'.'

وقد قمت بإستبدال علامة الهاش ولا يوجد خطأ إلا أن الكود لا يرجع أي بيانات للكومبو
الرد
تم الشكر بواسطة:
#10
السلام عليكم ورحمة الله وبركاته
بخصوص الخطاء فالامر بسيط وواضح جداً وهذا ما يقع به الجميع
لتبسيط الامر ... هل ينفع وضع قيمة نص فى قيمة مطلوب ان تكون رقم او تاريخ ؟؟؟
هذا ما تفعله عندما قمت بتعريف كلاً من D1 و D2 كونه من نوع نص وليس تاريخ
فى Sql عندما تضع # تعنى ان المحتوى يجب ان تكون من قيمة تاريخ ولكن ما وضعته هو تاريخ على نمط نص

كل ما عليك فعله هو التالى
اما تغيير هذا السطر

كود :
Dim d1, d2 As String

الى

كود :
Dim d1, d2 As Date


أو هذا السطر

كود :
da = New SqlDataAdapter("select * from MovTable where MovAddedDate Between #" & d1 & "# AND #" & d2 & "#", sqlcon)

ليكون بهذا الشكل

كود :
da = New SqlDataAdapter("select * from MovTable where MovAddedDate Between #" & CDate(d1) & "# AND #" & CDate(d2) & "#", sqlcon)


لتبسيط الامر اكثر انظر الى الكود بشكل الذى استخدمته سيقوم بحل الامر
PHP كود :
      DTPDate1.Value Date.Today.AddDays(-10)

 
      Dim d1d2 As Date
       d1 
Format(DTPDate.Value"yyyy/MM/dd")
 
      d2 Format(DTPDate1.Value"yyyy/MM/dd")

 
      da = New SqlDataAdapter("select * from MovTable where MovAddedDate Between #" d1 "# AND #" d2 "#"sqlcon

لعل الان الصورة واضحة لديك ومعرفة السبب لمذا كان يظهر الخطاء
ولماذا عند تغيير # الى ' كان لا يوجد خطاء ولكن بلا نتيجة
# = تاريخ
' = نص
بدون = رقم
بالتوفيق
الرد
تم الشكر بواسطة: ZaerAllail , asemshahen5


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ابسط كود لمعرفة المدة بين تاريخين سعود 4 1,863 25-05-17, 09:15 AM
آخر رد: Buseiligm

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


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