منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn (/showthread.php?tid=26955)



استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn - dubai.eig - 15-10-18

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

مشكله تعبتني 

عندي كود ينقل البينات من DataGridView   لانزلها في قاعدة البيانات

عن طريقه اختيار معلومات معينه بالضغط على CheckBoxColumn
[attachment=19847]

اختار الي اريده ان كان سطر واحد او اكثر

المهم الكود شغال ينقل وينزل في القاعدة

المشكله في حالت عدم الاشاره على CheckBoxColumn
يطلع لي مسج
كود :
    MessageBox.Show("Not Checked")


ولكن هذا المسج يطلع لي  على  عدد الاسطر الموجوده في DataGridView
[attachment=19847]

يعني ما يطلع مرة واحد فقط ويختفي لا اذا كانت عدد الاسطر في ال DataGridView  
4 يطلع لي المسج اربع مرات

هذا الكود 

كود :
       For r As Integer = 0 To DataGridView2.Rows.Count - 1
           Dim check As Boolean = CType(DataGridView2.Rows(r).Cells(0).Value, Boolean)

           If check = True Then

               itm2 = DataGridView2.Rows(r).Cells(2).Value
               itm3 = DataGridView2.Rows(r).Cells(3).Value
               itm4 = DataGridView2.Rows(r).Cells(4).Value
               itm5 = DataGridView2.Rows(r).Cells(5).Value
               itm6 = DataGridView2.Rows(r).Cells(6).Value
               itm7 = DataGridView2.Rows(r).Cells(7).Value
               itm8 = DataGridView2.Rows(r).Cells(8).Value


               cmdxa = New SQLiteCommand("INSERT INTO db (omcall ,qso_date ,timeutc ,bands ,modes ,rst_sent,rst_rcvd) Values (@omcall ,@qso_date ,@timeutc ,@bands ,@modes ,@rst_sent,@rst_rcvd)") With {
               .Connection = conxa
               }
               cmdxa.Parameters.Clear()
               cmdxa.Parameters.AddWithValue("@omcall", itm2.Trim())
               cmdxa.Parameters.AddWithValue("@qso_date", itm3.Trim())
               cmdxa.Parameters.AddWithValue("@timeutc", Trim(Convert.ToString(itm4)))
               cmdxa.Parameters.AddWithValue("@bands", itm5.Trim())
               cmdxa.Parameters.AddWithValue("@modes", itm6.Trim())
               cmdxa.Parameters.AddWithValue("@rst_sent", itm7.Trim())
               cmdxa.Parameters.AddWithValue("@rst_rcvd", itm8.Trim())
               If conxa.State <> ConnectionState.Open Then conxa.Open()
               cmdxa.ExecuteNonQuery()
               conxa.Close()
               Application.DoEvents()


           Else
               MessageBox.Show("Not Checked")

           End If
           Next

اتوقع اعادة ضهور المسج بسبب 
 Next

حاولت اغير مكانه بس ما ضبط 

بارك الله فيكم وشكرا على المساعده


RE: استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn - عبدالله الدوسري - 15-10-18

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



كود :
 Dim HasAnyCheck As Boolean = False
       ' لتسريع العملية تم إخراج إنشاء الأمر وفتح الإتصال خارج الإلتفاف
       ' SQLiteCommand لا تحتاج في كل مرة تعريف جملة الإستعلام لكائن
       ' هي مرة واحد في حياتة كلها
       cmdxa = New SQLiteCommand("INSERT INTO db (omcall ,qso_date ,timeutc ,bands ,modes ,rst_sent,rst_rcvd) Values (@omcall ,@qso_date ,@timeutc ,@bands ,@modes ,@rst_sent,@rst_rcvd)") With {
               .Connection = conxa
               }
       conxa.Open() ' الأفضل فتح الإتصال مرة واحدة فقط وليس في كل لفة

       For r As Integer = 0 To DataGridView2.Rows.Count - 1
           Dim check As Boolean = CType(DataGridView2.Rows(r).Cells(0).Value, Boolean)

           If check = True Then
               HasAnyCheck = True
               itm2 = DataGridView2.Rows(r).Cells(2).Value
               itm3 = DataGridView2.Rows(r).Cells(3).Value
               itm4 = DataGridView2.Rows(r).Cells(4).Value
               itm5 = DataGridView2.Rows(r).Cells(5).Value
               itm6 = DataGridView2.Rows(r).Cells(6).Value
               itm7 = DataGridView2.Rows(r).Cells(7).Value
               itm8 = DataGridView2.Rows(r).Cells(8).Value



               cmdxa.Parameters.Clear()
               cmdxa.Parameters.AddWithValue("@omcall", itm2.Trim())
               cmdxa.Parameters.AddWithValue("@qso_date", itm3.Trim())
               cmdxa.Parameters.AddWithValue("@timeutc", Trim(Convert.ToString(itm4)))
               cmdxa.Parameters.AddWithValue("@bands", itm5.Trim())
               cmdxa.Parameters.AddWithValue("@modes", itm6.Trim())
               cmdxa.Parameters.AddWithValue("@rst_sent", itm7.Trim())
               cmdxa.Parameters.AddWithValue("@rst_rcvd", itm8.Trim())

               cmdxa.ExecuteNonQuery()

               Application.DoEvents()

           End If
       Next

       conxa.Close() ' بعد الإنتهاء إغلاق الإتصال

       If Not HasAnyCheck Then
           MessageBox.Show("Not Checked")
       End If
تحياتي ...


RE: استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn - dubai.eig - 15-10-18

(15-10-18, 07:32 PM)عبدالله الدوسري كتب : وعليكم السلام ورحمة الله وبركاتة 



كود :
 Dim HasAnyCheck As Boolean = False
       ' لتسريع العملية تم إخراج إنشاء الأمر وفتح الإتصال خارج الإلتفاف
       ' SQLiteCommand لا تحتاج في كل مرة تعريف جملة الإستعلام لكائن
       ' هي مرة واحد في حياتة كلها
       cmdxa = New SQLiteCommand("INSERT INTO db (omcall ,qso_date ,timeutc ,bands ,modes ,rst_sent,rst_rcvd) Values (@omcall ,@qso_date ,@timeutc ,@bands ,@modes ,@rst_sent,@rst_rcvd)") With {
               .Connection = conxa
               }
       conxa.Open() ' الأفضل فتح الإتصال مرة واحدة فقط وليس في كل لفة

       For r As Integer = 0 To DataGridView2.Rows.Count - 1
           Dim check As Boolean = CType(DataGridView2.Rows(r).Cells(0).Value, Boolean)

           If check = True Then
               HasAnyCheck = True
               itm2 = DataGridView2.Rows(r).Cells(2).Value
               itm3 = DataGridView2.Rows(r).Cells(3).Value
               itm4 = DataGridView2.Rows(r).Cells(4).Value
               itm5 = DataGridView2.Rows(r).Cells(5).Value
               itm6 = DataGridView2.Rows(r).Cells(6).Value
               itm7 = DataGridView2.Rows(r).Cells(7).Value
               itm8 = DataGridView2.Rows(r).Cells(8).Value



               cmdxa.Parameters.Clear()
               cmdxa.Parameters.AddWithValue("@omcall", itm2.Trim())
               cmdxa.Parameters.AddWithValue("@qso_date", itm3.Trim())
               cmdxa.Parameters.AddWithValue("@timeutc", Trim(Convert.ToString(itm4)))
               cmdxa.Parameters.AddWithValue("@bands", itm5.Trim())
               cmdxa.Parameters.AddWithValue("@modes", itm6.Trim())
               cmdxa.Parameters.AddWithValue("@rst_sent", itm7.Trim())
               cmdxa.Parameters.AddWithValue("@rst_rcvd", itm8.Trim())

               cmdxa.ExecuteNonQuery()

               Application.DoEvents()

           End If
       Next

       conxa.Close() ' بعد الإنتهاء إغلاق الإتصال

       If Not HasAnyCheck Then
           MessageBox.Show("Not Checked")
       End If
تحياتي ...

احسنت استاذي تعبت من البحث والتجارب ههههه

شكرا لك دائما نساعد ربي يوفقك وييسر امرك يا رب Rolleyes


RE: استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn - عبدالله الدوسري - 15-10-18

(15-10-18, 07:58 PM)dubai.eig كتب : احسنت استاذي تعبت من البحث والتجارب ههههه

شكرا لك دائما نساعد ربي يوفقك وييسر امرك يا رب Rolleyes


العفوا أخي  dubai.eig  ( شكراً على الدعوة الطيبة , بارك الله فيك )

أي عضو يضع سؤال واضح ومتبوع بالكود والصور والمحاولة التي قام بها .

لا أستطيع إلا أن أقوم بالمساعدة حتى لو أخذ من وقتي الكثير .
وحتى لو كنت لا أعرف الحل , سأبحث عن الحل من أجلة .


لأنه وبكل بساطة هكذا تطرح الأسئلة النموذجية .

أتمنى من البعض ( Dodgy ) أن يطرحوا الأسئلة بنفس هذا الإسلوب.

تحياتي لك . وتستاهل +1 


RE: استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn - mr_hso - 19-01-21

استاذ عبد الله الدوسري
دائما متالق ماشاء الله عليك