(29-04-17, 04:59 PM)rmlq كتب : بسبب ان البرنامج عندي لا يستطيع التعامل حاليا مع سيرفرsql
ما تريد من زر (ادخال البيانات) ان يفعل وما دور textbox
زر (اظافة صف جديد) من يحفظ البيانات يعني اين الادوات التي يدخل عن طريقها البيانات مثل textbox وغيرها
مشروعك ليس فيه سوى datagrid وcombox واحد وtextbox واحد
نعم معك حق فالمشروع مجرد عرض لمشكلة واجهتني في برنامج اخر فيه فورم به داتاقرد فيو يتم عن طريقها حفظ البيانات المطلوبة الى الداتا بيز عن طريق
1- الضغط على الزر اظافة صف جديد
2- الغط على زر ادخال البيانات ليقوم بعملية INSERT للـ وtextbox لداتا قرددفيو
الخلاصة اني اريد ان اجبر المستخدم لادخال البيانات من خلال هاذين الزرين
واما بخصوص الحفظ فيكون من خلال الحدث الخروج من السطر
ارجو ان تكون الفكرة واضحة اخي وشكرا لتجاوبك معي
كود :
' التقاط حدث الخروج من السطر الحالي للداتاجريد فيو
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