تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] استفسار :- بخصوص نقل الداتا من DataGridView عن طريق CheckBoxColumn
#1
السلام عليكم ورحمة الله

مشكله تعبتني 

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

عن طريقه اختيار معلومات معينه بالضغط على CheckBoxColumn
   

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

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

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


ولكن هذا المسج يطلع لي  على  عدد الاسطر الموجوده في DataGridView
   

يعني ما يطلع مرة واحد فقط ويختفي لا اذا كانت عدد الاسطر في ال 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

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

بارك الله فيكم وشكرا على المساعده
الرد
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاتة 



كود :
 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
تحياتي ...
الرد
#3
(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
الرد
تم الشكر بواسطة: Amir_Alzubidy
#4
(15-10-18, 07:58 PM)dubai.eig كتب : احسنت استاذي تعبت من البحث والتجارب ههههه

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


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

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

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


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

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

تحياتي لك . وتستاهل +1 
الرد
تم الشكر بواسطة: dubai.eig , dubai.eig , Amir_Alzubidy , mr_hso , moosa_alabri
#5
استاذ عبد الله الدوسري
دائما متالق ماشاء الله عليك
الرد
تم الشكر بواسطة:



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


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