عدم تطابق نوع البيانات عند استرداد السجلات من قاعدة بيانات الوصول باستخدام datetimepicker
-
21-09-2019 - |
سؤال
أحصل على خطأ تعبير معايير عدم التوافق في نوع البيانات عندما أحاول استرداد السجلات من قاعدة بيانات الوصول بين تواريخين باستخدام DateTimePicker في C#.
هذا هو بيان الاختيار
else if (dtpDOBFrom.Value < dtpDOBTo.Value)
{
cmdSearch.CommandText = "SELECT [First Name], [Surname], [Contact Type], [Birthdate] FROM [Contacts] WHERE [Birthdate] >= '" + dtpDOBFrom.Value +"' AND [Birthdate] <= '" + dtpDOBTo.Value +"'";
}
المحلول
dtpDOBFrom.Value
هو وقت ، الذي تحاول لصقه في سلسلة. وبالتالي ، يتم تحويل وقت البيانات إلى سلسلة ، ولكن يبدو أن التنسيق مختلف عن التنسيق الذي يتوقعه الوصول. يمكنك اللعب مع معايير DateTime.ToString
(وأرفق التاريخ في #
بدلاً من '
, ، لأن هذا هو ما يريد الوصول) ، ولكن هذا سيفعل ليس كن الطريقة الصحيحة للقيام بذلك.
الطريق الصحي المعلمات:
في قضيتك ، سيبدو مثل هذا (لم يخبر):
cmdSearch.CommandText = "SELECT [First Name], [Surname], [Contact Type], [Birthdate] FROM [Contacts] WHERE [Birthdate] >= ? AND [Birthdate] <= ?";
cmdSearch.Parameters.AddWithValue("DOBFrom", dtpDOBFrom.Value);
cmdSearch.Parameters.AddWithValue("DOBTo", dtpDOBTo.Value);
مع OLEDB (الذي يتم استخدامه للوصول إلى قاعدة بيانات MS Access) ، فإن اسم المعلمات ("dobfrom") غير مهم ، ولكن يجب أن يتطابق الترتيب الذي تضيفه مع ترتيب علامات الأسئلة في SQL.
لا تنتمي إلى StackOverflow