السلام عليكم أعضاء فجوال بيسك
أرجو منكم المساعدة في كيفية ترحيل البيانات من داتا قريدفيو متصلة بقاعدة بيانات إلى داتا قريدفيو أخرى من أجل التعديل على بيانات هذه الأخيرة وحفظها في فيجوال بيسك
وعليكم السلام
يفضل أن توضح للمتابعين الكود الذي تستخدمه في إظهار البيانات التي تظهر في الداتا قريد فيو المتصلة بقاعدة البيانات
شكرا على الرد
من على الفورم
Sub LoadDGView()
winclass.filldataset("SELECT * FROM EMP ORDER BY Nem ASC")
With DGView
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.EnableHeadersVisualStyles = False
.RowHeadersWidth = 20
.AlternatingRowsDefaultCellStyle.BackColor = Color.Honeydew
.DefaultCellStyle.SelectionBackColor = Color.YellowGreen
.Columns(7).HeaderCell.Style.BackColor = Color.GreenYellow
.Columns(0).Width = 20
.Columns(1).Width = 60
.Columns(5).Width = 68
.Columns(6).Width = 68
.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
End With
End Sub
على الكلاس
Sub filldataset(sql As String)
ds = New DataSet
da = New OleDbDataAdapter(sql, con)
da.Fill(ds, 0)
dv = New DataView(ds.Tables(0))
End Sub
حاول تجربة الآتي :
أولا : قم بتسمية داتا قريد فيو (الثانية) DGViewEdit
ثانيا : قم بتعديل خصائصها كالتالي حتى يكون الصف المحدد قابلا للتعديل :
يمكنك وضع هذا الكود في Form1_Load
كود :
DGViewEdit.ReadOnly = False
DGViewEdit.SelectionMode = DataGridViewSelectionMode.CellSelect
ثالثا : قم بإضافة زر جديد لنقل محتوى الصف المحدد في داتا قريد فيو (الأولى) إلى داتا قريد فيو (الثانية) ، وقم بتسمية الزر btnEdit
ضع هذا الكود لزر النقل btnEdit :
كود :
Private Sub btnEdit_Click(sender As Object, e As EventArgs) Handles btnEdit.Click
If DGView.SelectedRows.Count = 0 Then
MessageBox.Show("الرجاء تحديد أحد الصفوف من الجدول.")
Exit Sub
End If
If DGViewEdit.Columns.Count = 0 Then
For Each col As DataGridViewColumn In DGView.Columns
DGViewEdit.Columns.Add(DirectCast(col.Clone(), DataGridViewColumn))
Next
End If
Dim row As DataGridViewRow = DGView.SelectedRows(0)
Dim rowData As New List(Of Object)
For Each cell As DataGridViewCell In row.Cells
rowData.Add(cell.Value)
Next
DGViewEdit.Rows.Add(rowData.ToArray())
End Sub
أخيرا أضف زر جديد لحفظ التعديل الذي قمت به في الصف المحدد ، وقم بتسمية زر الحفظ btnSaveChanges
ضع الكود التالي لزر الحفظ :
كود :
Private Sub btnSaveChanges_Click(sender As Object, e As EventArgs) Handles btnSaveChanges.Click
If DGViewEdit.Rows.Count = 0 Then
MessageBox.Show("لا توجد بيانات لحفظها")
Exit Sub
End If
Dim cmd As New OleDbCommand
cmd.Connection = Con
Con.Open()
For Each row As DataGridViewRow In DGViewEdit.Rows
If row.IsNewRow Then Continue For
Dim id As Integer = Convert.ToInt32(row.Cells(0).Value)
Dim name As String = row.Cells(1).Value.ToString()
Dim otherValue As String = row.Cells(2).Value.ToString()
cmd.CommandText = "UPDATE EMP SET Nem=@Nem, SomeField=@Val WHERE ID=@ID"
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Nem", name)
cmd.Parameters.AddWithValue("@Val", otherValue)
cmd.Parameters.AddWithValue("@ID", id)
cmd.ExecuteNonQuery()
Next
If Con.State = ConnectionState.Open Then Con.Close()
MessageBox.Show("تم حفظ التعديلات بنجاح")
End Sub
بارك الله فيك أخي أبو خالد الكود يعمل
لكنه يقوم بتكرار بمعني أن كل إسم يجب أن يرحل مرة واحدة فقط
وبارك الله فيك أخي
هل يمكن منع تكرار ترحيل البيانات أخي أي أن كل إسم يرحل مرة واحدة فقط
ارسل صورة للتكرار الذي تتكلم عنه .
حتى يكون الموضوع واضحا .
وشكرا .
التكرار موجود لكنني لم أستطع وضع الصورة رغم المحاولة
السلام عليكم ورحمة الله وبركاته أعضاء المنتدى
إليك الأخ أبو خالد الصورة