منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : رسالة خطأ عن تعديل بيانات في قاعدة بيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله
اخواني انا عندي قاعدة بيانات على اكسس  مربوطة في الفيجوال  بيزك 2017 .. واكسس 2016 . اضفت ازرار اضافه وحفظ وحذف وكلها شغاله تمام

لكن زر التعديل .. لما اعدل اي شي بالبيانات يظهر لي هذا الخطأ


هذا كود التعديل
كود :
Public Sub Update_tbl1(ByVal emp_name AS String,ByVal emp_ID AS Long,ByVal job_nmbr AS String,ByVal job_type AS String,ByVal job_level AS String,ByVal case_due AS String,ByVal s_from AS String,ByVal s_number AS String,ByVal s_date AS String,ByVal ts_from AS String,ByVal ts_number AS String,ByVal ts_date AS String,ByVal for_what AS String,ByVal punsh_type AS String,ByVal punsh_detail AS String,ByVal IDW AS Long)
Dim Cmd As New OledbCommand
With Cmd
.Connection = Con
.CommandType = CommandType.Text
.CommandText = "Update tbl1 Set emp_name = @emp_name,emp_ID = @emp_ID,job_nmbr = @job_nmbr,job_type = @job_type,job_level = @job_level,case_due = @case_due,s_from = @s_from,s_number = @s_number,s_date = @s_date,ts_from = @ts_from,ts_number = @ts_number,ts_date = @ts_date,for_what = @for_what,punsh_type = @punsh_type,punsh_detail = @punsh_detail Where ID = @ID"
.Parameters.Clear()
.Parameters.AddWithValue("@emp_name", OleDbType.VarWChar ).Value = emp_name
.Parameters.AddWithValue("@emp_ID", OleDbType.Integer ).Value = emp_ID
.Parameters.AddWithValue("@job_nmbr", OleDbType.VarWChar ).Value = job_nmbr
.Parameters.AddWithValue("@job_type", OleDbType.VarWChar ).Value = job_type
.Parameters.AddWithValue("@job_level", OleDbType.VarWChar ).Value = job_level
.Parameters.AddWithValue("@case_due", OleDbType.VarWChar ).Value = case_due
.Parameters.AddWithValue("@s_from", OleDbType.VarWChar ).Value = s_from
.Parameters.AddWithValue("@s_number", OleDbType.VarWChar ).Value = s_number
.Parameters.AddWithValue("@s_date", OleDbType.VarWChar ).Value = s_date
.Parameters.AddWithValue("@ts_from", OleDbType.VarWChar ).Value = ts_from
.Parameters.AddWithValue("@ts_number", OleDbType.VarWChar ).Value = ts_number
.Parameters.AddWithValue("@ts_date", OleDbType.VarWChar ).Value = ts_date
.Parameters.AddWithValue("@for_what", OleDbType.VarWChar ).Value = for_what
.Parameters.AddWithValue("@punsh_type", OleDbType.VarWChar ).Value = punsh_type
.Parameters.AddWithValue("@punsh_detail", OleDbType.VarWChar ).Value = punsh_detail
.Parameters.AddWithValue("@ID", OleDbType.Integer ).Value = IDW
End With
If Con.State = 1 Then Con.Close()
Con.Open()
Cmd.ExecuteNonQuery()
Con.Close()
MsgBox("تم تعديل السجل بنجاح", MsgBoxStyle.Information, "تعديل")
Cmd = Nothing
End Sub


وهذا كود الزر  
كود :
Update_tbl1(emp_name.Text,emp_ID.Text,job_nmbr.Text,job_type.Text,job_level.Text,case_due.Text,s_from.Text,s_number.Text,s_date.Text,ts_from.Text,ts_number.Text,ts_date.Text,for_what.Text,punsh_type.Text,punsh_detail.Text,ID.Text)

وهذا الخطأ لمن اضغط على زر تعديل

PHP كود :
System.InvalidCastException'Conversion from string "فيصل الاحمد" to type 'Long' is not valid.' 


علما ان التعديل كان على رقم الوظيفه وليس الاسم
والحقل المذكور بالخطأ  انا معطيه نص وليس رقم  . تعريفه بالقاعده نص.. وهنا بالكود @emp_name", OleDbType.VarWChar

اتمنى  الافادة منكم يا ساده .. ولكم جزيل الشكر
وعليكم السلام...

الخطأ: يتم استقبال الأرقام الطويلة فقط!

           مثال/ 100000000

           أما القيمة المدخلة فهي من نوع "نص".



ملحوظة: لا يمكن ادخال "نص" مكان (رقم).



الحل:-

يتم تحويل من: ByVal IDW AS Long

                   إلى: ByVal IDW AS String

*إذا كان التحديث بناءً على "الاسم" أما لو رقم فراجع ترتيب الحقول.



من: .Parameters.AddWithValue("@ID", OleDbType.Integer ).Value = IDW
إلى: .Parameters.AddWithValue("@ID", OleDbType.String).Value = IDW





وإن بقيت نفس المشكلة ولم تستطيع حلها يمكنك مراسلتي أو إخبارنا هنا, دمتم بخير.