لدي مشكلة مع كود التعديل - 0theghost0 - 09-09-17
السلام عليكم
هذا الكود سليم 100% ولكن اثناء استخدامه التفت لشغلة بسيطة وهي :
اثناء عملية التعديل يقوم بتعديل كل من في كومبو بكس الى نفس البيانات التي قمت بالتعديل عليها .
كود :
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb;Persist Security Info=False;")
Dim sql As String =
" update [Customer] set " &
" Cus_Name=@Cus_Name, Cus_Address=@Cus_Address, Cus_Region=@Cus_Region, Cus_Telephone_Number=@Cus_Telephone_Number "
Dim cmd As New OleDbCommand(sql, conn)
cmd.Parameters.AddWithValue("@Cus_Name", TextBox1.Text)
cmd.Parameters.AddWithValue("@Cus_Address", TextBox3.Text)
cmd.Parameters.AddWithValue("@Cus_Region", TextBox4.Text)
cmd.Parameters.AddWithValue("@Cus_Telephone_Number", TextBox5.Text)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
MessageBox.Show("We have been successfully Update", "Congratulations", MessageBoxButtons.OK, MessageBoxIcon.Information)
Form2_Load(e, e)
واذا سمحتم اريد كود اذا اقوم اضيف او احذف او اعدل يقوم بعميلية قراءة البيانات الجديدة بدل استخدامي لكود
او كود افضل منه
RE: لدي مشكلة مع كود التعديل - ola - 09-09-17
مع UPDATE يجب في sql أن تضيف WHERE مع تحديد ID الذي تريد تطبيق التعديل في بياناته
الا إذا قصدت فعلا تحديث جميع البيانات
RE: لدي مشكلة مع كود التعديل - 0theghost0 - 09-09-17
اذا اضفت where
كود :
System.Data.OleDb.OleDbException occurred
HResult=0x80040E14
Message=Syntax error in UPDATE statement.
Source=Microsoft Access Database Engine
StackTrace:
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
at Rent_Schedule.Form2.Button3_Click(Object sender, EventArgs e) in D:\my project\Complete Project\Rent Schedule\Rent Schedule\Form2.vb:line 77
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at Rent_Schedule.My.MyApplication.Main(String[] Args) in :line 81
الكود
كود :
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb;Persist Security Info=False;")
Dim sql As String =
" update [Customer] set " &
" ( Cus_Name=@Cus_Name, Cus_Address=@Cus_Address, Cus_Region=@Cus_Region, Cus_Telephone_Number=@Cus_Telephone_Number )" &
" where " &
"( Cus_ID=@Cus_ID )"
Dim cmd As New OleDbCommand(sql, conn)
cmd.Parameters.AddWithValue("@Cus_Name", TextBox1.Text)
cmd.Parameters.AddWithValue("@Cus_Address", TextBox3.Text)
cmd.Parameters.AddWithValue("@Cus_Region", TextBox4.Text)
cmd.Parameters.AddWithValue("@Cus_Telephone_Number", TextBox5.Text)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
MessageBox.Show("We have been successfully Update", "Congratulations", MessageBoxButtons.OK, MessageBoxIcon.Information)
Form2_Load(e, e)
وجربت اضيف بدل :
ومثل الشيء
RE: لدي مشكلة مع كود التعديل - ola - 09-09-17
لازم تضيف Parameters الخاص به مثل ما فعلت في كل Parameters الاخرى
RE: لدي مشكلة مع كود التعديل - 0theghost0 - 09-09-17
مثل الخطأ
كود :
System.Data.OleDb.OleDbException occurred
HResult=0x80040E14
Message=Syntax error in UPDATE statement.
Source=Microsoft Access Database Engine
StackTrace:
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
at Rent_Schedule.Form2.Button3_Click(Object sender, EventArgs e) in D:\my project\Complete Project\Rent Schedule\Rent Schedule\Form2.vb:line 78
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at Rent_Schedule.My.MyApplication.Main(String[] Args) in :line 81
الكود
كود :
Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb;Persist Security Info=False;")
Dim sql As String =
" update [Customer] set " &
" ( Cus_Name=@Cus_Name, Cus_Address=@Cus_Address, Cus_Region=@Cus_Region, Cus_Telephone_Number=@Cus_Telephone_Number )" &
" where " &
"( Cus_ID=@Cus_ID )"
Dim cmd As New OleDbCommand(sql, conn)
cmd.Parameters.AddWithValue("@Cus_ID", Label7.Text)
cmd.Parameters.AddWithValue("@Cus_Name", TextBox1.Text)
cmd.Parameters.AddWithValue("@Cus_Address", TextBox3.Text)
cmd.Parameters.AddWithValue("@Cus_Region", TextBox4.Text)
cmd.Parameters.AddWithValue("@Cus_Telephone_Number", TextBox5.Text)
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
MessageBox.Show("We have been successfully Update", "Congratulations", MessageBoxButtons.OK, MessageBoxIcon.Information)
Form2_Load(e, e)
الخطأ في الكود لكن اين لا أعلم اخي الفاضل
RE: لدي مشكلة مع كود التعديل - 0theghost0 - 09-09-17
المشروع اخوي مفيد لكن معقد انا ابحث عن اكواد تعطيني مثل الخدمة ولكن مبسطة جدا
RE: لدي مشكلة مع كود التعديل - ola - 09-09-17
رتب اسطر Parameters مثل ترتيبها في sql
الاول فالاول
RE: لدي مشكلة مع كود التعديل - 0theghost0 - 09-09-17
على العموم اشكر الشخص الى ساعدني والى حاول يساعدني
واشكر الاخ الغالي الى قام بإرسال لي الكود الصحيح على ايميلي الخاص
وهذا ماقام بإرساله لي :
والنتيجة سليمة والحمدالله
كود :
Try
Dim n As String = ComboBox1.Text
Dim Savecommand As New OleDb.OleDbCommand
'الاتصال بمزود البيانات
Dim Connectionstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb;Persist Security Info=False;"
Dim newconnection As New OleDbConnection(Connectionstring)
Savecommand.Connection = newconnection
Savecommand.CommandType = CommandType.Text
'التعديل هنا ويكون ما تكتبه فى التكست بوكس
Savecommand.CommandText = "UPDATE Customer SET Cus_Name = '" & Trim(TextBox1.Text) & "' , Cus_Address = '" & Trim(TextBox3.Text) _
& "' , Cus_Region = '" & Trim(TextBox4.Text) & "' , Cus_Telephone_Number = '" & Trim(TextBox5.Text) & "' WHERE Cus_Private_Number like '" & n & "'"
'فتح الاتصال وعمل التعديل الذى قمت به وبعد ذلك اغلاق الاتصال وتظهر رساله للمستخدم بنجاح التعديل الذى قام به
newconnection.Open()
Savecommand.ExecuteNonQuery()
newconnection.Close()
MsgBox("تم التعديل", 64, "نجاح")
' Me.Close()
'اظهار الفورم الرئيسى بعد نجاح التعديل واغلاق فورم التعديل
' main.Show()
'اصطياد الاخطاء
Catch ex As Exception
'عرض الخطا فى رساله
MsgBox(ex.Message, 16, "خطأ")
End Try
Form2_Load(e, e)
قمت بوضعه لكم ليستفيد كل من يريده
RE: لدي مشكلة مع كود التعديل - 0theghost0 - 09-09-17
اوك اذا ستسبب اخطاء او اشخاء اخرى فهل تستطيع التعديل او اعطائي كود شغال بدون مشاكل ؟؟
RE: لدي مشكلة مع كود التعديل - ola - 09-09-17
انت كنت ماشي صح باستخدام Parameters لكن عندك خطأ في ترتيب اسطرها
|