تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
رسالة خاصة بالإتصال ولا أدرى ما المشكلة ؟؟؟
#1
السلام عليكم ورحمة الله وبركاته

لدى مشروع ويعمل والحمد الله على أكمل وجه وعند فحص المشروع بالكود اناليزر وجدت هذا التحذير ولا ادرى كيف السبيل لمعالجته

[HTML]CA2202 Do not dispose objects multiple times Object 'cn1' can be disposed more than once in method 'add_mo_sa_to_all.btn_save_Click(Object, EventArgs)'. To avoid generating a System.ObjectDisposedException you should not call Dispose more than one time on an object.: Lines: 323 Sayadla add_mo_sa_to_all.vb 323
[/HTML]

الكود المستخدم داخل هذا النموذج والذى يتم الإشارة الى تحذير به هو ( الجزء الملون باللون الأحمر )
.
كود :
' تأكيد حفظ البيانات
        Dim y As DialogResult = MessageBox.Show("هل تريد حفظ بيانات الشهر", "تنبيه", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If y = DialogResult.Yes Then
            Dim cn1 As New SqlConnection(Con_STR)
            For i As Integer = 0 To DGV1.RowCount - 1
                Dim cm As New SqlCommand("add_sa_m_data", cn1)
                cm.CommandType = CommandType.StoredProcedure
                cm.Parameters.Add("@mo_nm", SqlDbType.NVarChar, 50).Value = mo_nm_com.SelectedItem.ToString
                cm.Parameters.Add("@e_id", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_id_col").Value.ToString
                cm.Parameters.Add("@e_class_no", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_class_no_col").Value.ToString
                cm.Parameters.Add("@e_nm", SqlDbType.NVarChar, 50).Value = DGV1.Rows(i).Cells("e_nm_col").Value.ToString
                cm.Parameters.Add("@e_bran", SqlDbType.NVarChar, 50).Value = e_bran_com.SelectedItem.ToString
                cm.Parameters.Add("@e_asasy", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_asasy_col").Value.ToString
                cm.Parameters.Add("@e_omal", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_omal_col").Value.ToString
                cm.Parameters.Add("@e_edafy_1_per", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_edafy_1_per_col").Value.ToString
                cm.Parameters.Add("@e_edafy_1", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_edafy_1_col").Value.ToString
                cm.Parameters.Add("@e_edafy_2_per", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_edafy_2_per_col").Value.ToString
                cm.Parameters.Add("@e_edafy_2", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_edafy_2_col").Value.ToString
                cm.Parameters.Add("@e_edafy", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_edafy_col").Value.ToString
                cm.Parameters.Add("@e_bdl_entkal", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_entkal_col").Value.ToString
                cm.Parameters.Add("@e_bdl_tmsel", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_tmsel_col").Value.ToString
                cm.Parameters.Add("@e_bdl_estkbal", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_estkbal_col").Value.ToString
                cm.Parameters.Add("@e_bdl_tfrogh", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_tfrogh_col").Value.ToString
                cm.Parameters.Add("@e_bdl_raha", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_raha_col").Value.ToString
                cm.Parameters.Add("@e_bdl_computer", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_computer_col").Value.ToString
                cm.Parameters.Add("@e_bdl_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_bdl_tot_col").Value.ToString
                cm.Parameters.Add("@e_day_edafy", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_day_edafy_no_col").Value.ToString
                cm.Parameters.Add("@e_day_edafy_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_day_edafy_tot_col").Value.ToString
                cm.Parameters.Add("@e_hour_edafy", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_hour_edafy_col").Value.ToString
                cm.Parameters.Add("@e_tamen_per_1_26", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_per_1_26_col").Value.ToString
                cm.Parameters.Add("@e_asay_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_asay_tot_col").Value.ToString
                cm.Parameters.Add("@e_elawa_1", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_elawa_1_col").Value.ToString
                cm.Parameters.Add("@e_elawa_2", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_elawa_2_col").Value.ToString
                cm.Parameters.Add("@e_elawa_3", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_elawa_3_col").Value.ToString
                cm.Parameters.Add("@e_elawa_4", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_elawa_4_col").Value.ToString
                cm.Parameters.Add("@e_elawa_5", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_elawa_5_col").Value.ToString
                cm.Parameters.Add("@e_change", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_change_tot_col").Value.ToString
                cm.Parameters.Add("@e_tamen_per_1_24", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_per_1_24_col").Value.ToString
                cm.Parameters.Add("@e_tamenat", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamenat_col").Value.ToString
                cm.Parameters.Add("@e_change_all", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_change_all_col").Value.ToString
                cm.Parameters.Add("@e_mosthk_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_mosthk_tot_col").Value.ToString
                cm.Parameters.Add("@e_tamen_per_2_26", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_per_2_26_col").Value.ToString
                cm.Parameters.Add("@e_tamen_per_14", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_per_14_col").Value.ToString
                cm.Parameters.Add("@e_tamen_per_2_24", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_per_2_24_col").Value.ToString
                cm.Parameters.Add("@e_tamen_per_11", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_per_11_col").Value.ToString
                cm.Parameters.Add("@e_tamnen_egtmaey", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamnen_egtmaey_col").Value.ToString
                cm.Parameters.Add("@e_day_no_mortb", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_day_no_mortb_col").Value.ToString
                cm.Parameters.Add("@e_total_day_no_mortb", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_total_day_no_mortb_col").Value.ToString
                cm.Parameters.Add("@e_tamen_ghyab_asasy_per_26", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_ghyab_asasy_per_26_col").Value.ToString
                cm.Parameters.Add("@e_tamen_ghyab_change_per_24", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_tamen_ghyab_change_per_24_col").Value.ToString
                cm.Parameters.Add("@e_day_geza_no", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_day_geza_no_col").Value.ToString
                cm.Parameters.Add("@e_day_geza_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_day_geza_tot_col").Value.ToString
                cm.Parameters.Add("@e_mortb_tax", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_mortb_tax_col").Value.ToString
                cm.Parameters.Add("@e_day_ghyab_no", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_day_ghyab_no_col").Value.ToString
                cm.Parameters.Add("@e_day_ghyab_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_day_ghyab_tot_col").Value.ToString
                cm.Parameters.Add("@e_day_ghyab_mrdy_no", SqlDbType.Int).Value = DGV1.Rows(i).Cells("e_ghyab_mrdy_col").Value.ToString
                cm.Parameters.Add("@e_day_ghyab_mrdy_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_ghyab_mrdy_tot_col").Value.ToString
                cm.Parameters.Add("@e_moda_tamen", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_moda_tamen_col").Value.ToString
                cm.Parameters.Add("@e_alex_bank", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_alex_bank_col").Value.ToString
                cm.Parameters.Add("@e_estktaat_tot", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_estktaat_tot_col").Value.ToString
                cm.Parameters.Add("@e_safy_all", SqlDbType.Float).Value = DGV1.Rows(i).Cells("e_safy_all_col").Value.ToString
                cn1.Open()
                cm.ExecuteNonQuery()
               [color=#FF0000][b] cn1.Close()[/b][/color]
            Next
            MessageBox.Show("تم حفظ البيانات", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e_bran_com.Enabled = True
            mo_nm_com.Enabled = True
            e_bran_com.SelectedIndex = -1
            mo_nm_com.SelectedIndex = -1
            DGV1.DataSource = Nothing
        Else
            Exit Sub
        End If

طبعا الكود على وضعه السابق يعمل ولكنى قلق من التحذير وحابب انى افهمه

مع العلم اننى عندما نقلت جزء [HTML]cn1.Close()[/HTML] ليكون اسفل Next لا يظهر الكود اناليزر اى تحذير ولكن عند الحفظ تأتينى رسالة وهى

[HTML]The connection was not closed. The connection's current state is open.[/HTML]

فهل من توضيحات بارك الله فيكم
الرد }}}
تم الشكر بواسطة:
#2
عزيزى ال code analyzer ليس معيار قياسى للكود لذلك لا تتعامل معه على أنه ما دونه خطأ ولكن في الجزئيه التى ذكرتها هو محق حيث أنك قمت بغلق الإتصال طيب ماذا لو كان الإتصال أصلا مفلق سوف يظهر exception
وبالتالى قم بكتابة هذا الكود عند فتح الإتصال

PHP كود :
if con1.state=connection.closed then
con1
.open

end 
if 
كما أن لديك خطأ كيف تقوم باستدعاء فتح الإتصال وغلقه داخل ال loop ؟؟؟؟؟؟؟؟؟؟؟؟
ايضا قم باضافة البارميتر خارج ال loop واسناد القيمة له داخل ال loop
الرد }}}
تم الشكر بواسطة:
#3
amgadtamer كتب :عزيزى ال code analyzer ليس معيار قياسى للكود لذلك لا تتعامل معه على أنه ما دونه خطأ ولكن في الجزئيه التى ذكرتها هو محق حيث أنك قمت بغلق الإتصال طيب ماذا لو كان الإتصال أصلا مفلق سوف يظهر exception
وبالتالى قم بكتابة هذا الكود عند فتح الإتصال

PHP كود :
if con1.state=connection.closed then
con1
.open

end 
if 
كما أن لديك خطأ كيف تقوم باستدعاء فتح الإتصال وغلقه داخل ال loop ؟؟؟؟؟؟؟؟؟؟؟؟
ايضا قم باضافة البارميتر خارج ال loop واسناد القيمة له داخل ال loop

تم عمل اللازم بالنسبة للجزء الخاص بالإتصال بارك الله فيك

ولكن هناك جزء لم افهمه وارغب فى إيضاحه منك وهو " ايضا قم باضافة البارميتر خارج ال loop واسناد القيمة له داخل ال loop " فهل ممكن توضيح ذلك ولو بكتابة جزء من الكود للتوضيح ومن ثم سأقوم بإكمال الباقى
الرد }}}
تم الشكر بواسطة:
#4
PHP كود :
هكذا

        
' تأكيد حفظ البيانات
        Dim y As DialogResult = MessageBox.Show("هل تريد حفظ بيانات الشهر", "تنبيه", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If y = DialogResult.Yes Then
            Dim cn1 As New SqlConnection(Con_STR)

            Dim cm As New SqlCommand("add_sa_m_data", cn1)
            cm.CommandType = CommandType.StoredProcedure
            cm.Parameters.Add("@mo_nm", SqlDbType.NVarChar, 50)
            cm.Parameters.Add("@e_class_no", SqlDbType.Int)
            If cn1.State = ConnectionState.Closed Then
                cn1.Open()
            End If
            For i As Integer = 0 To DGV1.RowCount - 1
                cm.Parameters("@mo_nm").Value = mo_nm_com.SelectedItem.ToString
                cm.Parameters("@e_class_no").Value = DGV1.Rows(i).Cells("e_class_no_col").Value.ToString
                cm.ExecuteNonQuery()
            Next
            MessageBox.Show("تم حفظ البيانات", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e_bran_com.Enabled = True
            mo_nm_com.Enabled = True
            e_bran_com.SelectedIndex = -1
            mo_nm_com.SelectedIndex = -1
            DGV1.DataSource = Nothing
        Else
            Exit Sub
        End If 
الرد }}}
تم الشكر بواسطة:
#5
amgadtamer كتب :
PHP كود :
هكذا

        
' تأكيد حفظ البيانات
        Dim y As DialogResult = MessageBox.Show("هل تريد حفظ بيانات الشهر", "تنبيه", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If y = DialogResult.Yes Then
            Dim cn1 As New SqlConnection(Con_STR)

            Dim cm As New SqlCommand("add_sa_m_data", cn1)
            cm.CommandType = CommandType.StoredProcedure
            cm.Parameters.Add("@mo_nm", SqlDbType.NVarChar, 50)
            cm.Parameters.Add("@e_class_no", SqlDbType.Int)
            If cn1.State = ConnectionState.Closed Then
                cn1.Open()
            End If
            For i As Integer = 0 To DGV1.RowCount - 1
                cm.Parameters("@mo_nm").Value = mo_nm_com.SelectedItem.ToString
                cm.Parameters("@e_class_no").Value = DGV1.Rows(i).Cells("e_class_no_col").Value.ToString
                cm.ExecuteNonQuery()
            Next
            MessageBox.Show("تم حفظ البيانات", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)
            e_bran_com.Enabled = True
            mo_nm_com.Enabled = True
            e_bran_com.SelectedIndex = -1
            mo_nm_com.SelectedIndex = -1
            DGV1.DataSource = Nothing
        Else
            Exit Sub
        End If 

بارك الله فيك ولكن ما الغرض من كتابة الكود بتلك الطريقة ؟؟ وهل اذا كان هناك اى ستوردبروسيدجر اخر فيفضل كتابة الاكواد بالطريقة السابقة ( اضافة البارامتر اولا ) بالرغم من التصريح عنهم فى ستورد بروسيدجر سابقا - ثم ( اسناد قيمة له ثانيا ؟؟ )
الرد }}}
تم الشكر بواسطة:
#6
الفرق هو ال program performance
وهو توفير الذاكرة بمعنى هل من المعقول أن تقوم بعمل loop وليكن 200 تقوم باضافة ال parameter الى sqlparametercollection
200 مره وتفتح الاتصال وتغلقه 200 مره
فانت قمت بالتصريح عن البارميتر فى stored procedure لكن لابد من إضافة هذه البارميتر الى sqlcollectionparameters
فالفكرة ليست كتابة كود والسلام ولكن هو فهم كل سطر تقوم بكتابته

تحياتى
الرد }}}
تم الشكر بواسطة:
#7
amgadtamer كتب :الفرق هو ال program performance
وهو توفير الذاكرة بمعنى هل من المعقول أن تقوم بعمل loop وليكن 200 تقوم باضافة ال parameter الى sqlparametercollection
200 مره وتفتح الاتصال وتغلقه 200 مره
فانت قمت بالتصريح عن البارميتر فى stored procedure لكن لابد من إضافة هذه البارميتر الى sqlcollectionparameters
فالفكرة ليست كتابة كود والسلام ولكن هو فهم كل سطر تقوم بكتابته

تحياتى

اشكرك اخى امجد وكما اوضحت لك انا فى طور البدء والحمد لله

ما اقصده هنا هو اننى استخدم تلك الطريقة فى جميع اكوادى

كود :
cm.Parameters.Add("@e_elawa_1", SqlDbType.Float).Value = e_elawa_1_tx.Text.Trim.ToString

وما كنت استفسر عنه وفهمته منك ان هذا افضل لكى يكون اداء البرنامج كما يجب - فهل يجب تقسيم الكود الخاص بالبارمتر كما اوضحت ( اضافتهم ثم اسناد قيمة لهم ) فى جميع الحالات ام اننا هنا نتحدث عن حالة loop فقط ؟
الرد }}}
تم الشكر بواسطة:
#8
ما أقصده يتم في حالة ال loop
أما إضافة واحدة فقط يتم الإضافة والإسناد في سطر واحد
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] رسالة خطأ عند الحذف أو تعديل بيانات جديدة #concurrency violation# sniperjawadino 11 4,032 28-05-19, 10:50 PM
آخر رد: sniperjawadino
  [سؤال] رسالة خطأ لم افهمها محمد بن عطية 0 1,636 09-11-17, 06:52 PM
آخر رد: محمد بن عطية
  طلب كود رسالة تبين أن هذه البيانات موجودة من قبل ولا يسمح بتكررها waelalmsry75 2 2,190 19-07-17, 03:24 PM
آخر رد: waelalmsry75
  [كود] المساعدة في كود بحث برقم التسلسل اذا كان الرقم غير موجود داخل قاعدة بيانات تخرج رسالة وادي العوضي 3 2,703 14-07-17, 09:43 AM
آخر رد: وادي العوضي
  [VB.NET] تظهر رسالة توقف البرنامج dr_amr82 3 2,234 14-06-17, 03:12 AM
آخر رد: boudyonline
  رسالة تجنن محمد بن عطية 3 2,436 10-07-16, 10:40 PM
آخر رد: محمد بن عطية
  ازاى اظهر مسج بوكس بدل رسالة ال duplicate فى الاكسس araxis 2 2,446 09-06-16, 04:07 PM
آخر رد: hassan
  رسالة خطأ djelloul 2 2,139 21-08-15, 04:24 AM
آخر رد: الطالب
Question رسالة خطأ عند حفظ صورة مصطفى_ظيمة 7 4,326 02-06-15, 09:46 PM
آخر رد: مصطفى_ظيمة
  [Acces2007] ظهور رسالة Could not find installable ISAM. momiana1 4 4,466 14-12-14, 08:07 AM
آخر رد: momiana1

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


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