منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : نقل بيانات داتاا جريد الي اخري
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
هذا الكود ينقل بيانات داتا جريد الي اخري 
لكن يحدث تكرار  للصفوف
برجاء عدم التكرار


        For i = 0 To DataGridView1.Rows.Count - 1
            If DataGridView1.Rows(i).Cells("counters").Value > 0 Then
                row = tempTable.NewRow
                row("كود الصنف") = DataGridView1.Rows(i).Cells("itcod").Value
                row("المجموعة") = DataGridView1.Rows(i).Cells("gname").Value
                row("اسم الصنف") = DataGridView1.Rows(i).Cells("invsun").Value
                row("الكمية") = DataGridView1.Rows(i).Cells("counters").Value
                row("السعر") = DataGridView1.Rows(i).Cells("sprice").Value
                row("الاجمالي") = DataGridView1.Rows(i).Cells("netsal").Value
                row("كود") = DataGridView1.Rows(i).Cells("makas").Value
                row("رصيد") = DataGridView1.Rows(i).Cells("raseedakher").Value

                tempTable.Rows.Add(row)
            End If
 
            DataGridView2.Columns(7).Width = 50
            DataGridView2.Columns(8).Width = 50
        Next
        DataGridView2.DataSource = tempTable
فى البداية اذا كان الـ DataGridView1
تحتوى على بيانات من خلال كود الاستعلام او ما شبه مثل DataTable او DataSet
اى انه لم يتم تعبئته يدوياً فكل ما ستفعله هو التالى
كود :
DataGridView2.DataSource = DataGridView1.DataSource

طيب واذا كان التعبئة تتم يدوياً
فيوجد طرق كثيرة ومنها الطريقة التالية
كود :
       DataGridView2.ColumnCount = DataGridView1.ColumnCount
       For ii As Integer = 0 To DataGridView1.ColumnCount - 1
           DataGridView2.Columns(ii).Name = DataGridView1.Columns(ii).Name
       Next
       Dim row As String()
       For ii As Integer = 0 To DataGridView1.RowCount - 1
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value, DataGridView1.Rows(ii).Cells(2).Value}
           DataGridView2.Rows.Add(row)
       Next

كود المثال عبارة عن بيانات 3 اعمدة اذا كان لديك اكثر فكل ما عليك التعديل على هذا السطر
كود :
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value, DataGridView1.Rows(ii).Cells(2).Value}

ليتحول الى 4 بهذا الشكل
كود :
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value, DataGridView1.Rows(ii).Cells(2).Value, DataGridView1.Rows(ii).Cells(3).Value}

ويصبح بيانات عمودين فقط بهذا الشكل
كود :
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value}

اتمنى ام تكون الصورة كملت لك كلياً

كما يمكنك ان تجعل الكود بهذا الشكل دون الحاجة الى اى تعديلات 
او اضافات وهو سيقوم بجلب جميع البيانات تلقائي
كود :
       DataGridView2.ColumnCount = DataGridView1.ColumnCount
       For ii As Integer = 0 To DataGridView1.ColumnCount - 1
           DataGridView2.Columns(ii).Name = DataGridView1.Columns(ii).Name
       Next
       Dim row As String()
       For ii As Integer = 0 To DataGridView1.RowCount - 1
           row = New String() {}
           For i As Integer = 0 To DataGridView1.ColumnCount - 1
               row(i) = DataGridView1.Rows(ii).Cells(i).Value
           Next
           DataGridView2.Rows.Add(row)
       Next

تحياتى لك
وتمنياتى لك التوفيق
ردود  شافية اضافت لي ولغيري الكثير
دائما مرجعنا في العلم
شكرا
(03-11-18, 11:55 AM)atefkhalf2004 كتب : [ -> ]ردود  شافية اضافت لي ولغيري الكثير
دائما مرجعنا في العلم
شكرا


الشكر لله والحمد لله

والحمد لله على كل حال

تحياتى لك
وتمنياتى لك التوفيق
(02-11-18, 06:24 PM)elgokr كتب : [ -> ]فى البداية اذا كان الـ DataGridView1
تحتوى على بيانات من خلال كود الاستعلام او ما شبه مثل DataTable او DataSet
اى انه لم يتم تعبئته يدوياً فكل ما ستفعله هو التالى
كود :
DataGridView2.DataSource = DataGridView1.DataSource

طيب واذا كان التعبئة تتم يدوياً
فيوجد طرق كثيرة ومنها الطريقة التالية
كود :
ج        DataGridView2.ColumnCount = DataGridView1.ColumnCount
       For ii As Integer = 0 To DataGridView1.ColumnCount - 1
           DataGridView2.Columns(ii).Name = DataGridView1.Columns(ii).Name
       Next
       Dim row As String()
       For ii As Integer = 0 To DataGridView1.RowCount - 1
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value, DataGridView1.Rows(ii).Cells(2).Value}
           DataGridView2.Rows.Add(row)
       Next

كود المثال عبارة عن بيانات 3 اعمدة اذا كان لديك اكثر فكل ما عليك التعديل على هذا السطر
كود :
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value, DataGridView1.Rows(ii).Cells(2).Value}

ليتحول الى 4 بهذا الشكل
كود :
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value, DataGridView1.Rows(ii).Cells(2).Value, DataGridView1.Rows(ii).Cells(3).Value}

ويصبح بيانات عمودين فقط بهذا الشكل
كود :
           row = New String() {DataGridView1.Rows(ii).Cells(0).Value, DataGridView1.Rows(ii).Cells(1).Value}

اتمنى ام تكون الصورة كملت لك كلياً

كما يمكنك ان تجعل الكود بهذا الشكل دون الحاجة الى اى تعديلات 
او اضافات وهو سيقوم بجلب جميع البيانات تلقائي
كود :
       DataGridView2.ColumnCount = DataGridView1.ColumnCount
       For ii As Integer = 0 To DataGridView1.ColumnCount - 1
           DataGridView2.Columns(ii).Name = DataGridView1.Columns(ii).Name
       Next
       Dim row As String()
       For ii As Integer = 0 To DataGridView1.RowCount - 1
           row = New String() {}
           For i As Integer = 0 To DataGridView1.ColumnCount - 1
               row(i) = DataGridView1.Rows(ii).Cells(i).Value
           Next
           DataGridView2.Rows.Add(row)
       Next

تحياتى لك
وتمنياتى لك التوفيق
جزيل الشكر ردود غايه بالوضوح اتمنى لك السعاده
بسم الله ما شاء الله عليك