05-09-15, 02:35 PM
(آخر تعديل لهذه المشاركة : 05-09-15, 02:43 PM {2} بواسطة مبرمج بلا حدود.)
(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
استخدم التيكست بوكس
حفظكـ الله
(05-09-15, 07:07 AM)khodor1985 كتب : السلام عليكم ورحمة الله وبركاته
أخي العزيز الطالب، أشكرك جزيلا على هذا المجهود وأنا معجب جدا بطريقة تفكيرك في الأمور، أرجو أخي العزيز أن تضع هذه الطرق الثلاث في مثال لكي تعم الفائدة، والأخ مبرمج أحب إصراره المستمر والمتواصل للوصول إلى الغاية.
أخي العزيز مبرمج المثال عندي شغال التمام التمام، ولقد وضعت إجراء الحفظ في الحدث FormClosed ، أي عند الإغلاق سينفذ إجراء الحفظ، أما بالنسبة لتغيير إسم أحد الأعمدة بعد عملية النقل هلا أوضحت ما الفائدة من ذلك؟
ولا تنسى أيضا أن تنفذ فكرة الأخ طالب فهي أيضا ممتازة، ولو طريقة واحدة من الثلاث طرق، فالقاعدة تقول "أعلم الناس من جمع علوم الناس إلى علمه.
أتمنى لك التوفيق
وعليكم السلام ورحمة الله وبركاته
اسف لم انتبة الى كود الاغلاق سوف اعمل على تجربة باركـ الله فيكـ وجزاكـ الله خير
اما بخصوص تغير اسم المحتوى في احد الاعمدة حفظكـ الله وليس تغير اسم العمود فمثلاً لدينا عمود باسم Address ولدينا سجل قيمة محتوى الAddress هي مثلاً Al Madena اريد تغيرها الى Makka مثلاً
الغاية منها
افكر بعمل برنامج لطلاب فمثلاً الطالب كان في الصف الاول وانتقل للصف الثاني عند نقل السجل اريد ان تتغير محتوى الصف من الاول الى الثاني وكذلك السنة الدراسية من 2014-2015 الى 2015-2016
هذه غايتي حفظكـ الله وجزاكـ الله خير