المشاركات : 244
المواضيع 94
الإنتساب : Dec 2016
السمعة :
8
الشكر: 809
تم شكره 246 مرات في 156 مشاركات
السلام عليكم ورحمة الله وبركاته
إخواني أنا جالس أقوم بعملية حفظ سجل في قاعدة بيانات SQL وكانت عملية الحفظ تتم بكل سهولة ولكن فجأة بدأ يظهر لي هذا الخطأ
Operand type clash: date is incompatible with time
مع العلم أن الوقت يتم أخذه من datetimepicker3 بعد أن تم تحويل القيمة فيه إلى Time
وهذا هو الكود المستخدم
Dim sqlq5 As String = "insert into Details_Table3 values(@Job,@Note2,@Day,@official_Time,@Khoroj_Time,@Emp_State1,@Details,@Note1,@Note3)"
Dim sqlcmd5 As New SqlCommand(sqlq5, Sqlcon)
sqlcmd5.Parameters.Add(New SqlParameter("@Note2", SqlDbType.NVarChar, 80) With {.Value = ComboBox2.Text})
sqlcmd5.Parameters.Add(New SqlParameter("@Job", SqlDbType.NVarChar, 25) With {.Value = DataGridView2.CurrentRow.Cells(15).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Day", SqlDbType.NVarChar, 50) With {.Value = DataGridView2.CurrentRow.Cells(3).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@official_Time", SqlDbType.NVarChar, 10) With {.Value = DataGridView2.CurrentRow.Cells(22).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Khoroj_Time", SqlDbType.NVarChar, 10) With {.Value = DataGridView2.CurrentRow.Cells(57).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Emp_State1", SqlDbType.NVarChar, 25) With {.Value = "متأخر"})
sqlcmd5.Parameters.Add(New SqlParameter("@Details", SqlDbType.NVarChar, 50) With {.Value = ""})
''sqlcmd5.Parameters.Add(New SqlParameter("@Note3", SqlDbType.Time) With {.Value = DateTimePicker3.Value.ToShortTimeString})
Sqlcon.Open()
sqlcmd5.ExecuteNonQuery()
Sqlcon.Close()
لكم جزيل الشكر
دمتم بود
المشاركات : 164
المواضيع 0
الإنتساب : Sep 2015
الشكر: 282
تم شكره 1089 مرات في 225 مشاركات
(15-05-22, 11:22 AM)جيولوجي مبتدئ كتب : السلام عليكم ورحمة الله وبركاته
إخواني أنا جالس أقوم بعملية حفظ سجل في قاعدة بيانات SQL وكانت عملية الحفظ تتم بكل سهولة ولكن فجأة بدأ يظهر لي هذا الخطأ
Operand type clash: date is incompatible with time
مع العلم أن الوقت يتم أخذه من datetimepicker3 بعد أن تم تحويل القيمة فيه إلى Time
وهذا هو الكود المستخدم
Dim sqlq5 As String = "insert into Details_Table3 values(@Job,@Note2,@Day,@official_Time,@Khoroj_Time,@Emp_State1,@Details,@Note1,@Note3)"
Dim sqlcmd5 As New SqlCommand(sqlq5, Sqlcon)
sqlcmd5.Parameters.Add(New SqlParameter("@Note2", SqlDbType.NVarChar, 80) With {.Value = ComboBox2.Text})
sqlcmd5.Parameters.Add(New SqlParameter("@Job", SqlDbType.NVarChar, 25) With {.Value = DataGridView2.CurrentRow.Cells(15).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Day", SqlDbType.NVarChar, 50) With {.Value = DataGridView2.CurrentRow.Cells(3).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@official_Time", SqlDbType.NVarChar, 10) With {.Value = DataGridView2.CurrentRow.Cells(22).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Khoroj_Time", SqlDbType.NVarChar, 10) With {.Value = DataGridView2.CurrentRow.Cells(57).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Emp_State1", SqlDbType.NVarChar, 25) With {.Value = "متأخر"})
sqlcmd5.Parameters.Add(New SqlParameter("@Details", SqlDbType.NVarChar, 50) With {.Value = ""})
''sqlcmd5.Parameters.Add(New SqlParameter("@Note3", SqlDbType.Time) With {.Value = DateTimePicker3.Value.ToShortTimeString})
Sqlcon.Open()
sqlcmd5.ExecuteNonQuery()
Sqlcon.Close()
لكم جزيل الشكر
دمتم بود
أخى جيولوجي مبتدئ
ياريت تضع المشروع أو الجزء الخاص بهذه المشكلة لفحصه .. تقبل تحياتى
المشاركات : 244
المواضيع 94
الإنتساب : Dec 2016
السمعة :
8
الشكر: 809
تم شكره 246 مرات في 156 مشاركات
16-05-22, 10:54 AM
(آخر تعديل لهذه المشاركة : 16-05-22, 11:10 AM {2} بواسطة جيولوجي مبتدئ.)
السلام عليكم ورحمة الله وبركاته
شكراً لك أخي الدكتور ياسر
أولاً أعتذر عن تأخري في الرد عليك
ثانياً حاولت رفع الملف ولكن يظهر لي خطأ يرفض رفع الملف عموماُ هذه صورة للجدول الذي أريد أن أحفظ فيه البيانات وللمعلومية كل البيانات التي أريد حفظها في هذا الجدول من الداتاقريد فيو عبارة Nvarchar ماعدا ثلاث سجلات أحدها يأخذ قيمته من DateTimepicker1 والثاني يأخذ قيتمه من DateTimepicker2 وهما عبارة عن تاريخ فقط أما الثالث فيأخذ قيمته من DateTiempicker3 وهو عبار عن وقت
آسف لكون طريقة السؤال غير جيدة وذلك بسبب عدم قدرتي على رفع الملف
والصورة المرفقه هي عبارة عن تركيبة للجدول Details_Table المراد الحفظ بداخله
لك جزيل الشكر
دمت بود
هذه هي صورة مبسطة للواجهة
المشاركات : 164
المواضيع 0
الإنتساب : Sep 2015
الشكر: 282
تم شكره 1089 مرات في 225 مشاركات
أخى الفاضل جيولوجي مبتدئ
خالص تحياتى
توجد أكثر من نقطة أود ذكرها :
أولا : المشكلة لديك تكمن فى Operand type clash: date is incompatible with time
أى أن نوع الـ Data Type فى الـ DB غير متوافق و لا يتناسب مع المدخل اليه من سجل وقتى زمنى
و ضرورى أن تلاحظ أن التعامل بين السجلات المدخلة الى قواعد بيانات SqlServer لابد أن تكون متوافقة و منسجمة معها 100%
و أنا تعرضت لسنوات مع هذه المشكلة الى أن وفقنى الله عز وجل فى التعامل معها لاسيما مع برامج صممتها للشركات للحضور و الانصراف
فالأمر يا أخى ليس كالأكسيس الذى يمشى على هوانا برمجيا فقواعد بيانات SqlServer قوية و محترمة و سريعة و لكنها تعلن غضبها للمبرمج اذا غفل عن احترام الـ polices الخاصة بها ..
ثانيا : مشكلتك واجهها العديد و ميكروسوفت ناقشتها و يمكنك رؤية ذلك لنفس مشكلتك فى الرابط التالى :
Operand type clash
ثالثا : الحل هو :
كود :
[ActiveDateFrom] ,
[ActiveDateTo] ,
You need to use the same datatype for your parameters,
@ActiveDateFrom Time =NULL,
@ActiveDateTo Time =NULL,
رابعا و أخيرا و ليس آخرا : جرب الحل الذى وضعته و هو من ميكروسوفت كما ذكرت و ان لم يجدى فهناك ضرورة لرفع ملف mdf , ldf و جزء المشروع الموجود به المشكلة حتى لو على أى سيرفر ووضع الرابط أو ارساله لى فى رسالة لتركيبه لدى على السيرفر عندى و حل المشكلة ان شاء الله
تقبل تحياتى و بالتوفيق
و اسمح لى أستعير كلماتك الرقيقة :
لكم جزيل الشكر
دمتم بود
المشاركات : 244
المواضيع 94
الإنتساب : Dec 2016
السمعة :
8
الشكر: 809
تم شكره 246 مرات في 156 مشاركات
السلام عليكم ورحمة الله وبركاته
دكتور ياسر سرعة ردك تذهلني وتخجلني
بالنسبة لنوع البيانات بالتأكيد هذا شيء مهم وأنواع البيانات متطابقة مع البيانات المدخلة وقد راعيت هذا الموضوع وكانت عملية الحفظ بهذا الكود تتم 100\100 ولكن فجأة ظهر هذا الخطأ بدون سابق إنذار
وسأقوم بمراجعة الحل الذي وضعته وأعطيك النتيجة
لك جزيل الشكر
دمت بود
المشاركات : 7
المواضيع 0
الإنتساب : Apr 2022
السمعة :
1
الشكر: 32
تم شكره 7 مرات في 7 مشاركات
بعد اذن اخي الدكتور ياسر
جرب هذا الكود
كود :
Dim sqlq5 As String = "insert into Details_Table3(Job,@Note2,Day,official_Time,Khoroj_Time,Emp_State1,Details,Note1,Note3)values(@Job,@Note2,@Day,@official_Time,@Khoroj_Time,@Emp_State1,@Details,@Note1,@Note3)"
Dim sqlcmd5 As New SqlCommand(sqlq5, Sqlcon)
sqlcmd5.Parameters.AddWithValue("@Note2",ComboBox2.Text)
sqlcmd5.Parameters.AddWithValue("@Job",DataGridView2.CurrentRow.Cells(15).Value.ToString)
sqlcmd5.Parameters.AddWithValue("@Day",DataGridView2.CurrentRow.Cells(3).Value.ToString)
sqlcmd5.Parameters.AddWithValue("@official_Time",DataGridView2.CurrentRow.Cells(22).Value.ToString)
sqlcmd5.Parameters.AddWithValue("@Khoroj_Time",DataGridView2.CurrentRow.Cells(57).Value.ToString)
sqlcmd5.Parameters.AddWithValue("@Emp_State1","متأخر")
sqlcmd5.Parameters.AddWithValue("@Details","")
sqlcmd5.Parameters.AddWithValue("@Note3",DateTimePicker3.Value)
المشاركات : 342
المواضيع 20
الإنتساب : May 2018
السمعة :
75
الشكر: 32
تم شكره 857 مرات في 338 مشاركات
17-05-22, 12:02 AM
(آخر تعديل لهذه المشاركة : 17-05-22, 12:08 AM {2} بواسطة aljzazy.)
sqlcmd5.Parameters.AddWithValue("@Note3",DateTimePicker3.Value.ToString("hh:mm"))
كود :
Dim sqlq5 As String = "insert into Details_Table3 values(@Job,@Note2,@Day,@official_Time,@Khoroj_Time,@Emp_State1,@Details,@Note1,@Note3)"
Dim sqlcmd5 As New SqlCommand(sqlq5, Sqlcon)
sqlcmd5.Parameters.Add(New SqlParameter("@Note2", SqlDbType.NVarChar, 80) With {.Value = ComboBox2.Text})
sqlcmd5.Parameters.Add(New SqlParameter("@Job", SqlDbType.NVarChar, 25) With {.Value = DataGridView2.CurrentRow.Cells(15).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Day", SqlDbType.NVarChar, 50) With {.Value = DataGridView2.CurrentRow.Cells(3).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@official_Time", SqlDbType.NVarChar, 10) With {.Value = DataGridView2.CurrentRow.Cells(22).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Khoroj_Time", SqlDbType.NVarChar, 10) With {.Value = DataGridView2.CurrentRow.Cells(57).Value.ToString})
sqlcmd5.Parameters.Add(New SqlParameter("@Emp_State1", SqlDbType.NVarChar, 25) With {.Value = "متأخر"})
sqlcmd5.Parameters.Add(New SqlParameter("@Details", SqlDbType.NVarChar, 50) With {.Value = ""})
sqlcmd5.Parameters.Add(New SqlParameter("@Note3", SqlDbType.Time) With {.Value = DateTimePicker3.Value.ToString("hh:mm")})
Sqlcon.Open()
sqlcmd5.ExecuteNonQuery()
Sqlcon.Close()
المشاركات : 244
المواضيع 94
الإنتساب : Dec 2016
السمعة :
8
الشكر: 809
تم شكره 246 مرات في 156 مشاركات
السلام عليكم ورحمة الله وبركاته
الشكر لكم فرداً فرداً على تفاعلكم في الرد وقد استفدت من ردودكم وتعلمت منها أشياء جدبدة
الخطأ كان في جملة Insert حيث كانت البارمترات نفس Data Tybe ولكني وجدت البارامترات غير مرتبة حسب تسلسل قاعدة البيانات وعندما قمت بترتيبها تم المطلوب على أكمل وجه
أكرر شكري على مروركم وتفاعلكم جعلها الله في ميزان حسناتكم
لكم جزيل الشكر
دمتم بود
|