نعم معك حق فالمشروع مجرد عرض لمشكلة واجهتني في برنامج اخر فيه فورم به داتاقرد فيو يتم عن طريقها حفظ البيانات المطلوبة الى الداتا بيز عن طريق
كود :
' التقاط حدث الخروج من السطر الحالي للداتاجريد فيو
Private Sub DataGridView1_RowValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles DataGridView1.RowValidating
' عدد السطور التي تمت زيادتها أو تحديثها
Dim n As Integer = 0
' الحصول على السطر الحالي
Dim row As DataGridViewRow = DataGridView1.Rows(e.RowIndex)
' تجاهل السطر إذا لم تتم عليه أية عملية
If row.Tag Is Nothing Then Return
' التأكد من اختيار مجموعة بسبب طريقة عمل العمود كومبوبوكس
If row.Cells(3).Value = Nothing Then
' إعلام المستخدم
MsgBox("المرجو تحديد المجموعة التي ينتمي إليها المستخدم")
' البقاء على نفس السطر حتى تصحيح الخطأ
e.Cancel = True
' خروج
Return
End If
' فتح قناة الاتصال بقاعدة البيانات
SqlConnection1.Open()
If row.Tag = RowAdded Then ' السطر جديد يجب زيادته على الجدول على قاعدة البيانات
' إنشاء و تهيئة كائن تنفيذ جملة سكل
Dim cmd As New SqlCommand("INSERT INTO UserInfo ([Login], [Password], GroupID) VALUES(@Login, @Password, @GroupID)", SqlConnection1)
' زيادة و تهيئة الوسائط بأسماء الحقول و قيمها من السطر الحالي على الداتاجريدفيو
cmd.Parameters.Add("@Login", SqlDbType.NVarChar, 30, "Login").Value = row.Cells(1).Value
cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 30, "Password").Value = row.Cells(2).Value
cmd.Parameters.Add("@GroupID", SqlDbType.BigInt, 1, "GroupID").Value = row.Cells(3).Value
' تنفيذ جملة سكل
n = cmd.ExecuteNonQuery()
' الحصول على مرجع التسجيل
cmd.CommandText = "SELECT @@IDENTITY FROM UserInfo"
row.Cells(0).Value = cmd.ExecuteScalar()
ElseIf row.Tag = RowEdited Then ' السطر موجود و لكن تم تحديته
' إنشاء و تهيئة كائن تنفيذ جملة سكل
Dim cmd As New SqlCommand("UPDATE UserInfo SET [Login] = @Login, [Password] = @Password, GroupID = @GroupID WHERE ID = @ID", SqlConnection1)
' زيادة و تهيئة الوسائط بأسماء الحقول و قيمها من السطر الحالي على الداتاجريدفيو
cmd.Parameters.Add("@Login", SqlDbType.NVarChar, 30, "Login").Value = row.Cells(1).Value
cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 30, "Password").Value = row.Cells(2).Value
cmd.Parameters.Add("@GroupID", SqlDbType.BigInt, 1, "GroupID").Value = row.Cells(3).Value
' مرجع التسجيل الذي سيتم تحديته
cmd.Parameters.Add("@ID", SqlDbType.BigInt, 1, "ID").Value = row.Cells(0).Value
' تنفيذ جملة سكل
n = cmd.ExecuteNonQuery()
End If
' غلق قناة الاتصال
SqlConnection1.Close()
' تعليم السطر أنه لم يتم تحديثه أو زيادته
row.Tag = Nothing
' التحقق من نجاح العملية
If n = 0 Then MsgBox("لم يتم تنفيذ أي عملية!", MsgBoxStyle.Critical, "خطأ")
End Sub