تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] لدي مشكلة مع كود التعديل
#1
السلام عليكم

هذا الكود سليم 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)
واذا سمحتم اريد كود اذا اقوم اضيف او احذف او اعدل يقوم بعميلية قراءة البيانات الجديدة بدل استخدامي لكود
كود :
Form2_Load(e, e)
او كود افضل منه
الرد }}}
تم الشكر بواسطة:
#2
مع UPDATE يجب في sql أن تضيف WHERE مع تحديد ID الذي تريد تطبيق التعديل في بياناته
الا إذا قصدت فعلا تحديث جميع البيانات
الرد }}}
تم الشكر بواسطة:
#3
اذا اضفت 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)
وجربت اضيف بدل :
كود :
Cus_ID

كود :
Cus_Private_Number

ومثل الشيء
الرد }}}
تم الشكر بواسطة:
#4
لازم تضيف Parameters الخاص به مثل ما فعلت في كل Parameters الاخرى
الرد }}}
تم الشكر بواسطة:
#5
مثل الخطأ

كود :
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)

الخطأ في الكود لكن اين لا أعلم اخي الفاضل
الرد }}}
تم الشكر بواسطة:
#6
المشروع اخوي مفيد لكن معقد انا ابحث عن اكواد تعطيني مثل الخدمة ولكن مبسطة جدا
الرد }}}
تم الشكر بواسطة:
#7
رتب اسطر Parameters مثل ترتيبها في sql
الاول فالاول
الرد }}}
تم الشكر بواسطة: سعود
#8
على العموم اشكر الشخص الى ساعدني والى حاول يساعدني

واشكر الاخ الغالي الى قام بإرسال لي الكود الصحيح على ايميلي الخاص

وهذا ماقام بإرساله لي :

والنتيجة سليمة والحمدالله


كود :
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)
قمت بوضعه لكم ليستفيد كل من يريده
الرد }}}
تم الشكر بواسطة:
#9
اوك اذا ستسبب اخطاء او اشخاء اخرى فهل تستطيع التعديل او اعطائي كود شغال بدون مشاكل ؟؟
الرد }}}
تم الشكر بواسطة:
#10
انت كنت ماشي صح باستخدام Parameters لكن عندك خطأ في ترتيب اسطرها
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم