عدم تطابق نوع البيانات عند استرداد السجلات من قاعدة بيانات الوصول باستخدام datetimepicker

StackOverflow https://stackoverflow.com/questions/2499298

  •  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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top