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

مشكلة في كود تعديل بطريقة lnq Query

بدأه ورق خسرانه في 17 يوليو 2012 · 5 رد · 472 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي مشكلة في كود التعديل بطريقة linq

عندي جالة تقوم بارجاغ الايدي للحقل المراد تعديلة وهذه هي الدالة

  Public Function selectId_dept(ByVal id_depted As Integer) As dept
        Using db As New DataClassesDataContext()
            Dim dept_id As New dept
            dept_id = (From id_dept In db.depts
            Where (id_dept.id_dept = id_depted)
            Select id_dept).SingleOrDefault
            Return dept_id
        End Using
    End Function

وهذه هي دالة التي تقوم بعملية التعديل

 Public Function update_dept(ByVal id_depted As Integer, ByVal dept_Recoed As dept, ByVal panl As Panel, ByVal lit As Literal) As Boolean
        Try
            Using db As New DataClassesDataContext()
                Dim dept_data As New dept
                dept_data = selectId_dept(id_depted)
                dept_data.img_dept = dept_Recoed.img_dept
                dept_data.dept_name = dept_Recoed.dept_name
                dept_data.img_dept_back = dept_Recoed.img_dept_back
                dept_data.del_flag = dept_Recoed.del_flag
                dept_data.flag_type = dept_Recoed.flag_type
                db.SubmitChanges()
                MsgBox(dept_data.dept_name)
            End Using
            panl.Visible = True
            lit.Text = "تمت عملية التعديل بنجاح"
            Return True
        Catch ex As SqlException
            msg_cod = ex.Message.GetHashCode.ToString
            If msg_cod = 849483326 Then
                panl.Visible = True
                lit.Text = " يوجد اسم قسم بنفس الاسم المدخل يرجى تغير اسم القسم"
            End If
            Return False
        End Try
    End Function

وهذه الكود الموجود تحت زر الابديت

 Dim id_dept As Integer = DropDownList1.SelectedValue.ToString
                Dim updet_depts As New dept
                updet_depts.img_dept = filename
                updet_depts.dept_name = name
                updet_depts.img_dept_back = filename1
                updet_depts.del_flag = flag
                updet_depts.flag_type = 1
                obj.update_dept(id_dept, updet_depts, Panel2, Literal1)

في الكود الذي تحت زر الابديت اقوم بارسال رقم السجل المراد تعديلة عن طريق اختيارة من drop ثم ارسل الاوبجكيت الذي فيه البيانات الجديدة .. واقوم برسال بنل + ليتراء . تعرض الرسالة اذا تم التعديل .

وعند عملية التعديل تظهر لي الرسالة بان عملية التعديل تمت .. ولكنها بالفعل لم تعدل في الدتا بيز ؟ ماهوي المشكلة بريئكم اخواني . ولكم جزيل الشكر والتقدير ؟

#2

السلام عليكم أخي،

لقد مررت بنفس المشكلة، لا داعي للاستعانة بدالتين، ممكن كتابة دالة واحدة فقط كافية للابديت:

 Public Function update_dept(ByVal id_depted As Integer, ByVal dept_Recoed As dept, ByVal panl As Panel, ByVal lit As Literal) As Boolean
        Try
            Using db As New DataClassesDataContext()
                Dim dept_data As New dept
                dept_data = (From id_dept In db.depts
                Where (id_dept.id_dept = id_depted)
                Select id_dept).SingleOrDefault
                dept_data.img_dept = dept_Recoed.img_dept
                dept_data.dept_name = dept_Recoed.dept_name
                dept_data.img_dept_back = dept_Recoed.img_dept_back
                dept_data.del_flag = dept_Recoed.del_flag
                dept_data.flag_type = dept_Recoed.flag_type
                db.SubmitChanges()
                MsgBox(dept_data.dept_name)
            End Using
            panl.Visible = True
            lit.Text = "تمت عملية التعديل بنجاح"
            Return True
        Catch ex As SqlException
            msg_cod = ex.Message.GetHashCode.ToString
            If msg_cod = 849483326 Then
                panl.Visible = True
                lit.Text = " يوجد اسم قسم بنفس الاسم المدخل يرجى تغير اسم القسم"
            End If
            Return False
        End Try
    End Function

طبعاً يجب أن يكون id_dept هو مفتاح في الجدول id_dept وإلا لن يعمل كود التعديل

1
#3

مشكور خيو .. وهذه مافعلته انا .. سويته بنفس الدالة .. لكن انا اريد ان اعرف ماهو الخطاء .. وكيف احله .. اما الطريقة التي ذكرتها لقد قمت بنفسها .. وشكراُ لك مرة اخرى على مساعدتك لي

#4

أخي هذا أهم مافي الموضوع:

طبعاً يجب أن يكون id_dept هو مفتاح في الجدول id_dept وإلا لن يعمل كود التعديل

يعني لو لم تحدد primary key في الجدول فلن تعمل الدالة

بس ما عرفت، اشتغل الكود الحين او لا؟

#5

اكود اشتغل مية مية . اخي مشكور بس انا كنت اريد ان اعرف ماهو الخطاء في كودي السابق

#6

أخي العزيز،

في الكود السابق لم يكن dept_id متصل، الدالة الأولى ترجع متغير من نوع dept فقط، لذا فالتغييرات التي تجريها لا يتم حفظها في قاعدة البيانات.

بينما في الكود الجديد، فإن dept_data متصلة بقاعدة البيانات، فكل التغييرات سوف يتم حفظها بعد db.SubmitChanges()

أرجو أن يكون كل شيء واضح الآن

مع تمنياتي بالتوفيق في مشروعك

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