23-03-20, 12:43 PM
(آخر تعديل لهذه المشاركة : 23-03-20, 01:17 PM {2} بواسطة ZaerAllail.)
(23-03-20, 10:42 AM)kiki كتب : السلام عليكم ورحمة الله وبركاته
بخصوص الخطاء فالامر بسيط وواضح جداً وهذا ما يقع به الجميع
لتبسيط الامر ... هل ينفع وضع قيمة نص فى قيمة مطلوب ان تكون رقم او تاريخ ؟؟؟
هذا ما تفعله عندما قمت بتعريف كلاً من D1 و D2 كونه من نوع نص وليس تاريخ
فى Sql عندما تضع # تعنى ان المحتوى يجب ان تكون من قيمة تاريخ ولكن ما وضعته هو تاريخ على نمط نص
كل ما عليك فعله هو التالى
اما تغيير هذا السطر
كود :
Dim d1, d2 As String
الى
كود :
Dim d1, d2 As Date
عند تنفيذ هذا الخيار يحدث الخطأ التالي :
System.Data.SqlClient.SqlException: 'Conversion failed when converting date and/or time from character string.'
-----------------------------
أو هذا السطر
كود :
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)
وعند تنفيذ هذا الخيار ينتج عنه الخطأ التالي :
System.Data.SqlClient.SqlException: 'Incorrect syntax near '#'.'
-------------------------------------
لتبسيط الامر اكثر انظر الى الكود بشكل الذى استخدمته سيقوم بحل الامر
PHP كود :
DTPDate1.Value = Date.Today.AddDays(-10)
Dim d1, d2 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)
لعل الان الصورة واضحة لديك ومعرفة السبب لمذا كان يظهر الخطاء
ولماذا عند تغيير # الى ' كان لا يوجد خطاء ولكن بلا نتيجة
# = تاريخ
' = نص
بدون = رقم
بالتوفيق
جميل جدا تجاوبك حفظك الله ولكن للأسف لازالت المشكلة قائمة
وزيادة في توضيح المطلوب هو فقط طلب جلب السجلات التي تحمل تواريخ تقع بين D1 , D2
والتي من خلالها يتم معرفة السجلات التي تم تسجيلها خلال العشرة الأيام السابقه
.
.
قبل لحظات وضع أحد الأخوه رد على السؤال
فقد وضع الجملة التالية
PHP كود :
DTPDate1.Value = Date.Today.AddDays(-10)
Dim d1, d2 As String
da = New SqlDataAdapter("select * from MovTable where MovAddedDate Between @d1 AND @d2", sqlcon)
da.SelectCommand.Parameters.AddWithValue("@d1", DTPDate.Value.Date)
da.SelectCommand.Parameters.AddWithValue("@d2", DTPDate1.Value.Date)
وبعد أن قمت بتجربتها لم أجد بها أخطاء ولكنها لم ترجع أي نتيجة للكومبو فقمت بتعديل ترتيب الداتا في الأسطر الأخيرة
وجعلت D
d1", DTPDate1.Value.Date
و
d2", DTPDate.Value.Date
فتم الأمر وتم جلب السجلات الأخيرة بشكل صحيح
وفعلا شكرا لصاحب المشاركة
وشكرا لكل من تفضل بتفعيل السؤال والمساهمه في حله
تحياتي لكم حفظكم الله