الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

خطأ بالكود المتعلق بالتعديل

بدأه kafi في 8 يوليو 2013 · 5 رد · 646 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

 

عند الضغط على زر تعديل .........احصل على شاشة فيها الحقول المختلفة المتعلقة بداتية زبون

 

وبعد تعديل بيانات عدد من الحقول

 

وعند الضغط على زر حفظ ....... احصل على رسالة مفادها

syntax error in update statment

 

وفيما يلي نص الكود المتعلق بحفظ التعديل

  Dim cmd As New OleDb.OleDbCommand
        Dim n As String

        Try
            n = Val(Me.txt_Zatea_id.Text)
            DataConnection()

            cmd.Connection = Conn
            cmd.CommandType = CommandType.Text

            cmd.CommandText = "UPDATE Zatea SET Customer = '" & Trim(txt_Customer.Text) & "' , Area = '" & Trim(Area_Combobox.Text) & "', bayan = '" & Trim(lbox_Bayan.Text) & "' , Phone1= '" & Trim(txt_Phone1.Text) & "' , Phone2= '" & Trim(txt_Phone2.Text) & "', Mobile= '" & Trim(txt_Mobile.Text) & "', Fax= '" & Trim(txt_fax.Text) & "', Email= '" & Trim(txt_Email.Text) & "', Note= '" & Trim(txt_Note.Text) & "' WHERE Zatea_id ='" & n & "'"

            cmd.ExecuteNonQuery()
            Conn.Close()
            MsgBox("1 Record has been Updated correctly")

            'اصطياد الاخطاء
        Catch ex As Exception
            'عرض الخطا فى رساله
            MsgBox(ex.Message, 16, "خطأ")

        End Try

لدي سؤالين

1- اصلاح الكود، والاشارة الى مكمن الخطأ

2 - كما تلاحظون اخوتي ، طول سطر المتعلق ب Update ......( هنا لدي عدة 9 حقول ...... فما بالكم لو كان هناك 20 حقل )، وهنا اطمح الى ان يتم كتابة الكود بصيغة مختلفة على عدة اسطر مثلا ///// من اجل التسهيل على المراجعة والكتابة ولتجنب الاخطاء المحتمل بشدة ان تحدث

 

ارجو تعديل المثال المرفق

والف الف شكر

والسلام عليكم

 

 

 

Edit_Problem.rar

#2

فيما يتعلق بكتابة جملة التعديل علي أكثر من سطر

تفضل الكود بعد التعديل

 Dim cmd As New OleDb.OleDbCommand
        Dim n As String


        Try
            n = Val(Me.txt_Zatea_id.Text)
            DataConnection()


            cmd.Connection = Conn
            cmd.CommandType = CommandType.Text


            cmd.CommandText = "UPDATE Zatea SET Customer = '" & Trim(txt_Customer.Text) & _
            "' , Area = '" & Trim(Area_Combobox.Text) & _
            "', bayan = '" & Trim(lbox_Bayan.Text) & "' , Phone1= '" & _
            Trim(txt_Phone1.Text) & "' , Phone2= '" & Trim(txt_Phone2.Text) & "', Mobile= '" & _
            Trim(txt_Mobile.Text) & "', Fax= '" & Trim(txt_fax.Text) & "', Email= '" & Trim(txt_Email.Text) & _
            "', Note= '" & Trim(txt_Note.Text) & "' WHERE Zatea_id ='" & n & "'"

            cmd.ExecuteNonQuery()
            Conn.Close()
            MsgBox("1 Record has been Updated correctly")

            'اصطياد الاخطاء
        Catch ex As Exception
            'عرض الخطا فى رساله
            MsgBox(ex.Message, 16, "خطأ")

        End Try

هنااك طريقة أخري أفضل لاختصار الكود بشكل أفضل وهي ان تصمم اجراء مخزن داخل قاعده البيانات ويحتوي علي الباراميترات المطلوبة ثم المناداه عليها من داخل VB.Net

 

بخصوص الخطأ الذي يظهر لك برجاء ارسال الخطأ لنا ومثال حتي يتم فحصة

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

السلام عليكم

 

شكرا اخي / فؤاد على اجابتك

 

اقتباس

هنااك طريقة أخري أفضل لاختصار الكود بشكل أفضل وهي ان تصمم اجراء مخزن داخل قاعده البيانات ويحتوي علي الباراميترات المطلوبة ثم المناداه عليها من داخل VB.Net

 

 

 

لم افهم ما قصدته حضرتك، وهل بالامكان تطبيق ما تفضلت به حضرتك على مثالي

 

اقتباس
بخصوص الخطأ الذي يظهر لك برجاء ارسال الخطأ لنا ومثال حتي يتم فحصة

 

 

سبق لي ان ارسلت مثال  !!!

 

ملاحظة :

تم مراجعة الكود من جديد، وتبين لي  ان هناك خطأ بالكود فيجب ، استبدال كلمة Note ب Notes

وبعد الاستبدال ، اختفت رسالة الخطأ السابقة

واصبحت تظهر رسالة

Data Type mismatch Criteria expresion

ارفق من جديد المثال بعد ان عدلته

 

ارجو حل الاشكال الجديد

 

والسلام عليكم

Edit_Problam A.rar

تم تعديل هذه المشاركة بواسطة kafi في 8 يوليو 2013 في 16:54

#4

السلام عليكم

اخي / فؤاد

بعد البحث ......وجدت طريقة الباراميرات التي اشرت اليها...( وهدا ما قصدته في سؤالي السابق ..بان يتم كتابة جملة التعديل على عدة اسطر )

 

المهم فيما يلي الكود

  '2nd way
         Dim cmd As New OleDbCommand("update Zatea set Customer=@txt_Customer,Area=@Area_Combobox, Bayan=@lbox_Bayan, Phone1=@txt_Phone1, Phone2=@txt_Phone2, Mobile=@txt_mobile, Fax=@txt_Fax, Email=@txt_Email,Notes=@txt_Note where zatea_id=@txt_Zatea_id", Conn)


        cmd.Parameters.AddWithValue("@Customer", OleDbType.VarChar).Value = txt_Customer.Text

        cmd.Parameters.AddWithValue("@Area", OleDbType.VarChar).Value = Area_Combobox.Text
        cmd.Parameters.AddWithValue("@bayan", OleDbType.VarChar).Value = lbox_Bayan.SelectedItem

        cmd.Parameters.AddWithValue("@Phone1", OleDbType.VarChar).Value = txt_Phone2.Text
        cmd.Parameters.AddWithValue("@Phone2", OleDbType.VarChar).Value = txt_Phone1.Text
        cmd.Parameters.AddWithValue("@Mobile", OleDbType.VarChar).Value = txt_Mobile.Text
        cmd.Parameters.AddWithValue("@Fax", OleDbType.VarChar).Value = txt_fax.Text

        cmd.Parameters.AddWithValue("@Email", OleDbType.VarChar).Value = txt_Email.Text
        cmd.Parameters.AddWithValue("@Notes", OleDbType.VarChar).Value = txt_Note.Text


        DataConnection()

        Try
            cmd.ExecuteNonQuery()
            MsgBox("تم التعديل بنجاح", MsgBoxStyle.Information, "")
        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical, "")
        End Try

الا انني احصل على رسالة خطأ مفادها

No Value given for one or more required Parameters

 

وفيما يلي مثالي / بالبارامترات

 

ارجو الدلالة الى مكمن الخطأ بالكود

 

والف شكر

Edit_Problam Parameter.rar

تم تعديل هذه المشاركة بواسطة kafi في 8 يوليو 2013 في 22:19

#5

السلام عليكم

 

الحمد لله وجدت حل مشكة البارامترات، بعد مساعدة احد الاخوة لي من منتدى / فيجوال بيسك جزاه الله خيرا

واحببت ان اضع الحل، حتى يستفيد منه اخوتي في  هذا المنتدى الغالي على قلبي

 

وفيما يلي تصويدب لكود البارامترات

وهو يعمل بنجاح

 Dim cmd As New OleDbCommand("update Zatea set Customer=@Customer,Area=@Area, bayan=@bayan, Phone1=@Phone1, Phone2=@Phone2, Mobile=@mobile, Fax=@Fax, Email=@Email,Notes=@Notes where zatea_id=@Zatea_id", Conn)


        cmd.Parameters.AddWithValue("@Customer", OleDbType.VarChar).Value = txt_Customer.Text

        cmd.Parameters.AddWithValue("@Area", OleDbType.VarChar).Value = Area_Combobox.Text
        cmd.Parameters.AddWithValue("@bayan", OleDbType.VarChar).Value = lbox_Bayan.SelectedItem

        cmd.Parameters.AddWithValue("@Phone1", OleDbType.VarChar).Value = txt_Phone1.Text
        cmd.Parameters.AddWithValue("@Phone2", OleDbType.VarChar).Value = txt_Phone2.Text
        cmd.Parameters.AddWithValue("@Mobile", OleDbType.VarChar).Value = txt_Mobile.Text
        cmd.Parameters.AddWithValue("@Fax", OleDbType.VarChar).Value = txt_fax.Text

        cmd.Parameters.AddWithValue("@Email", OleDbType.VarChar).Value = txt_Email.Text
        cmd.Parameters.AddWithValue("@Notes", OleDbType.VarChar).Value = txt_Note.Text
        cmd.Parameters.AddWithValue("@zatia_id", OleDbType.Integer).Value = Val(txt_Zatea_id.Text)



        Try
            DataConnection()
            cmd.ExecuteNonQuery()
            MsgBox("تم التعديل بنجاح", MsgBoxStyle.Information, "")
        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical, "")
        End Try

تم تعديل هذه المشاركة بواسطة kafi في 12 يوليو 2013 في 14:49

#6

هذا السطر مهم

cmd.Parameters.AddWithValue("@zatia_id", OleDbType.Integer).Value = Val(txt_Zatea_id.Text)

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…