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

نسخة كاملة : نقل سجل من جدول الى جدول اخر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
(05-09-15, 03:16 AM)الطالب كتب : [ -> ]سلام


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

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

توجد في هذا الكود ثلاث طرق لنقل اسطر بين جدولين:
1- ضغط الزر:  مهمته عي نقل مجموعت اسطر بعد تحديدها في الجدول الاول عن طريق الماوس.
2- النقر المزدوج: ويعمل بلنقر مرتين على السطر في الجدول الاول لنقله.
3- السحب والاسقاط: تعمل بسحب سطر من الجدول الاول واسقاطه على الجدول الثاني.

تم وضع جملتين اتصال لاحتمال التطبيق على قاعدتين بيانات.

كود :
Public Class Form1

   Dim connStr1 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;"
   Dim connStr2 As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database1.accdb;"

   Dim sql1 As String = "SELECT * FROM [table1]"
   Dim sql2 As String = "SELECT * FROM [table2]"


   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       DataGridView1.AllowDrop = True
       DataGridView2.AllowDrop = True
       Call fillDatagridviews()
   End Sub


   Dim dt1 As New DataTable
   Dim dt2 As New DataTable
#Region " تعبئت الجدول من قاعدت البيانات "
   Private Sub fillDatagridviews()
       Dim c1 = New OleDb.OleDbDataAdapter("SELECT * FROM [table1]", connStr1).Fill(dt1)
       DataGridView1.DataSource = dt1

       Dim c2 = New OleDb.OleDbDataAdapter("SELECT * FROM [table2]", connStr2).Fill(dt2)
       DataGridView2.DataSource = dt2
   End Sub
#End Region
#Region " تحديث قاعدت البيانات "
   Private Sub updateDatebase()
       Using da As New OleDb.OleDbDataAdapter(sql1, connStr1)
           Using builder As New OleDb.OleDbCommandBuilder(da)
               da.Update(dt1)
           End Using
       End Using
       Using da As New OleDb.OleDbDataAdapter(sql2, connStr2)
           Using builder As New OleDb.OleDbCommandBuilder(da)
               da.Update(dt2)
           End Using
       End Using
   End Sub
#End Region


   ' الطريقه الاولى
#Region " زر النقل بعد اختيار اسطر من الجدول الاول "
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       For Each row As DataGridViewRow In DataGridView1.SelectedRows
           If DataGridView1.AllowUserToAddRows And row.Index = DataGridView1.Rows.Count - 1 Then Exit For
           dt2.Rows.Add((From cels In row.Cells Select cels.Value).ToArray)
           DataGridView1.Rows.Remove(row)
       Next
       DataGridView2.DataSource = dt2
   End Sub
#End Region

   ' الطريقه الثانيه
#Region " زر النقل بعد النقر المزدوج على سطر في الجدول الاول "
   Private Sub DataGridView1_RowHeaderMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.RowHeaderMouseDoubleClick
       If sender.AllowUserToAddRows And e.RowIndex = sender.Rows.Count - 1 Then Return
       dt2.Rows.Add((From cels In CType(sender, DataGridView).Rows(e.RowIndex).Cells Select cels.Value).ToArray)
       sender.Rows.Remove(sender.Rows(e.RowIndex))
       DataGridView2.DataSource = dt2
       Call updateDatebase()
   End Sub
#End Region

   ' الطر يقه الثالثه
#Region " طريقت سحب سطر من الجدول الاول واسقاطه على الجدول الثاني "
   Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView1.DragOver
       e.Effect = DragDropEffects.Move
   End Sub

   Private Sub DataGridView1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridView1.MouseMove
       If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
           If sender.CurrentRow.Index = If(sender.AllowUserToAddRows, sender.Rows.Count - 1, sender.Rows.Count) Then Return
           sender.DoDragDrop(sender.Rows(sender.CurrentRow.Index), DragDropEffects.Move)
       End If
   End Sub

   Private Sub DataGridView2_DragOver(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView2.DragOver
       e.Effect = DragDropEffects.Move
   End Sub

   Private Sub DataGridView2_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles DataGridView2.DragDrop
       If (e.Effect = DragDropEffects.Move) Then
           Dim row As DataGridViewRow = e.Data.GetData(GetType(DataGridViewRow))
           dt2.Rows.Add((From cels In row.Cells Select cels.Value).ToArray)
           DataGridView1.Rows.Remove(DataGridView1.CurrentRow)
           Call updateDatebase()
       End If
   End Sub
#End Region

End Class


موفقين

وعليكم السلام ورحمة الله وبركاته 
جزاكـ الله خير اخي وباركـ الله فيكـ 
وجعله الله في موازين حسناتكـ وفقكـ الله 
الصراحة لا احي استخدام DataGridView    Blush  
استخدم التيكست بوكس 
حفظكـ الله

(05-09-15, 07:07 AM)khodor1985 كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
أخي العزيز الطالب، أشكرك جزيلا على هذا المجهود وأنا معجب جدا بطريقة تفكيرك في الأمور، أرجو أخي العزيز أن تضع هذه الطرق الثلاث في مثال لكي تعم الفائدة، والأخ مبرمج أحب إصراره المستمر والمتواصل للوصول إلى الغاية.
أخي العزيز مبرمج المثال عندي شغال التمام التمام، ولقد وضعت إجراء الحفظ في الحدث FormClosed ، أي عند الإغلاق سينفذ إجراء الحفظ، أما بالنسبة لتغيير إسم أحد الأعمدة بعد عملية النقل هلا أوضحت ما الفائدة من ذلك؟
ولا تنسى أيضا أن تنفذ فكرة الأخ طالب فهي أيضا ممتازة، ولو طريقة واحدة من الثلاث طرق، فالقاعدة تقول "أعلم الناس من جمع علوم الناس إلى علمه.

أتمنى لك التوفيق

وعليكم السلام ورحمة الله وبركاته 
اسف لم انتبة الى كود الاغلاق سوف اعمل على تجربة باركـ الله فيكـ وجزاكـ الله خير 
اما بخصوص تغير اسم المحتوى في احد الاعمدة حفظكـ الله وليس تغير اسم العمود فمثلاً لدينا عمود باسم Address ولدينا سجل قيمة محتوى الAddress هي مثلاً Al Madena اريد تغيرها الى Makka مثلاً 
الغاية منها 
افكر بعمل برنامج لطلاب فمثلاً الطالب كان في الصف الاول وانتقل للصف الثاني عند نقل السجل اريد ان تتغير محتوى الصف من الاول الى الثاني وكذلك السنة الدراسية من 2014-2015 الى 2015-2016 
هذه غايتي حفظكـ الله وجزاكـ الله خير
ذكرتني ببرنامج معارف الله يسعدك
:-)
(05-09-15, 04:31 PM)أبو عمر كتب : [ -> ]ذكرتني ببرنامج معارف الله يسعدك
:-)

السلام عليكم ورحمة الله وبركاته 
العفو استاذ 
هل يوجد برنامج اسمه معارف قصدكـ حتى اذا يوجد واحد يتعلم منه 
او تقصد معارف يعني احد اقربائكـ  Sleepy
حفظكـ الله
السلام عليكم ورحمة الله وبركاته
ان سمح لي الاساتذة حفظكم الله
ان اطلب كيف يتم نقل كل السجلات دفعه واحدة ؟
وفقكـ الله واثابكم خيراً
الصفحات : 1 2 3