طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - dell - 24-07-18
السلام عليكم ورحمة الله وبركاته
أخواني الكرام لدي DataGridView1 ووأقوم بنقل البيانات منها إلى DataGridView2 وتعمل الحمد الله بشكل سليم
المشكلة عندما أقوم بالحفظ لايحفظ إلا الصف الأول من DataGridView2 ولايحفظ الصفين
هذا كود الحفظ
كود :
For Each saf As DataGridViewRow In DataGridView2.Rows
If Not saf.IsNewRow Then
Dim Str As String
Dim cmds As New SqlCommand
If Not connn.State = ConnectionState.Open Then
connn.Open()
End If
cmds.Connection = connn
Str = "insert into tsjel_subj(id_tsjel_subj,id_number,FirstName,name_dorh,number_dorh,subj)" &
"values (@1,@2,@3,@4,@5,@6)"
cmds.CommandText = Str
cmds.Connection = connn
cmds.Parameters.AddWithValue("@1", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@2", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@3", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@4", saf.Cells(3).Value.ToString)
cmds.Parameters.AddWithValue("@5", saf.Cells(4).Value.ToString)
cmds.Parameters.AddWithValue("@6", saf.Cells(5).Value.ToString)
cmds.ExecuteNonQuery()
cmds.Dispose()
connn.Close()
asd()
asd3()
End If
Next
مالحل بارك الله فيكم
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - elgokr - 25-07-18
جرب استخدام الكود بهذا الشكل
كود :
For ii As Integer = 0 To DataGridView2.RowCount - 1
Dim Str As String = "insert into tsjel_subj(id_tsjel_subj,id_number,FirstName,name_dorh,number_dorh,subj) values (@1,@2,@3,@4,@5,@6)"
Dim cmds As New SqlCommand
If Not connn.State = ConnectionState.Open Then connn.Open()
cmds.Connection = connn
cmds.CommandText = Str
cmds.Connection = connn
cmds.Parameters.AddWithValue("@1", DataGridView2.Rows(ii).Cells(0).Value.ToString())
cmds.Parameters.AddWithValue("@2", DataGridView2.Rows(ii).Cells(1).Value.ToString())
cmds.Parameters.AddWithValue("@3", DataGridView2.Rows(ii).Cells(2).Value.ToString())
cmds.Parameters.AddWithValue("@4", DataGridView2.Rows(ii).Cells(3).Value.ToString())
cmds.Parameters.AddWithValue("@5", DataGridView2.Rows(ii).Cells(4).Value.ToString())
cmds.Parameters.AddWithValue("@6", DataGridView2.Rows(ii).Cells(5).Value.ToString())
cmds.ExecuteNonQuery()
cmds.Dispose()
connn.Close()
asd()
asd3()
Next
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - Done - 25-07-18
يجب عدم وضع اسم عمود الترقيم التلقائي في الاضافة Insert
PHP كود :
Dim cmds As New SqlCommand( _ "INSERT INTO tsjel_subj(id_tsjel_subj, id_number, FirstName, name_dorh, number_dorh, subj) " & _ "VALUES (@id_tsjel_subj, @id_number, @FirstName, @name_dorh, @number_dorh, @subj) " _ , connn)
If connn.State <> ConnectionState.Open Then connn.Open() For Each saf As DataGridViewRow In DataGridView2.Rows If saf.IsNewRow Then Exit For cmds.Parameters.Clear() cmds.Parameters.AddWithValue("@id_tsjel_subj", saf.Cells(0).Value.ToString) cmds.Parameters.AddWithValue("@id_number", saf.Cells(1).Value.ToString) cmds.Parameters.AddWithValue("@FirstName", saf.Cells(2).Value.ToString) cmds.Parameters.AddWithValue("@name_dorh", saf.Cells(3).Value.ToString) cmds.Parameters.AddWithValue("@number_dorh", saf.Cells(4).Value.ToString) cmds.Parameters.AddWithValue("@subj", saf.Cells(5).Value.ToString) If cmds.ExecuteNonQuery() = 0 Then MsgBox("لم يتم حفظ السطر: " & saf.Index) Exit For End If Next connn.Close()
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - elgokr - 25-07-18
(25-07-18, 12:37 PM)Done كتب : يجب عدم وضع اسم عمود الترقيم التلقائي في الاضافة Insert
PHP كود :
Dim cmds As New SqlCommand( _ "INSERT INTO tsjel_subj(id_tsjel_subj, id_number, FirstName, name_dorh, number_dorh, subj) " & _ "VALUES (@id_tsjel_subj, @id_number, @FirstName, @name_dorh, @number_dorh, @subj) " _ , connn)
If connn.State <> ConnectionState.Open Then connn.Open() For Each saf As DataGridViewRow In DataGridView2.Rows If saf.IsNewRow Then Exit For cmds.Parameters.Clear() cmds.Parameters.AddWithValue("@id_tsjel_subj", saf.Cells(0).Value.ToString) cmds.Parameters.AddWithValue("@id_number", saf.Cells(1).Value.ToString) cmds.Parameters.AddWithValue("@FirstName", saf.Cells(2).Value.ToString) cmds.Parameters.AddWithValue("@name_dorh", saf.Cells(3).Value.ToString) cmds.Parameters.AddWithValue("@number_dorh", saf.Cells(4).Value.ToString) cmds.Parameters.AddWithValue("@subj", saf.Cells(5).Value.ToString) If cmds.ExecuteNonQuery() = 0 Then MsgBox("لم يتم حفظ السطر: " & saf.Index) Exit For End If Next connn.Close()
احسن اخى Done
فى ردك بملاحظة هذه النقطة المهمة
واضافة لصاحب الموضوع لما تم اضافته من الاخ Done
حيث اذا كان الـ ID ترقيم تلقائي لا حاجة الى اضافته فى كود الادخال
واذا كان الترقيم يدوى دون تكرار
فيجب الانتباه لما هو الترقيم لا اعلم ما يعرض فى الصورة بسبب حجمها صغير فلا يمكننى الاطلاع عليها
فاذا كان الترقيم كلاهما 2 فى الصورة فسيقوم باضافة واحداً فقط ويجب ظهور رسالة خطاء عند ادخال الثاني
الا اذا كنت تستخدم Try لتجنب عرض رسالة الاخطاء
تحياتى للجميع
وتمنياتى لكم التوفيق
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - dell - 25-07-18
جزاكم الله خير جاري التجربة
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - dell - 26-07-18
أخي Done وأخي elgokr
حل الأخ Done ممتاز وعمل معاي بأفضل حل
أشكر لكم جهودكم
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - dell - 26-07-18
أخواني معليش تعبتكم معاي .. في حالة التعديل يظهر لي خطاء
كود :
Dim cmds As New SqlCommand("UPDATE tsjel_subj SET [id_tsjel_subj] =?, [Password] =?, [id_number] =?, [FirstName] =?, [name_dorh] =?, [number_dorh] =?, [subj] =?", conn)
If connn.State <> ConnectionState.Open Then connn.Open()
For Each saf As DataGridViewRow In DataGridView1.Rows
If saf.IsNewRow Then Exit For
cmds.Parameters.Clear()
cmds.Parameters.AddWithValue("@id_tsjel_subj", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@Password", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@id_number", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@FirstName", saf.Cells(3).Value.ToString)
cmds.Parameters.AddWithValue("@name_dorh", saf.Cells(4).Value.ToString)
cmds.Parameters.AddWithValue("@number_dorh", saf.Cells(5).Value.ToString)
cmds.Parameters.AddWithValue("@subj", saf.Cells(6).Value.ToString)
cmds.ExecuteNonQuery()
Next
connn.Close()
MsgBox("تم الحفظ بنجاح", MsgBoxStyle.MsgBoxRight, "")
صورة الخطاء
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - elgokr - 26-07-18
بخصوص التعديل
بعد الكلمة التالية Set
ستجد هذه الجملة
كود :
[id_tsjel_subj] = ?
قم بحذفها
ويكتفي ان تجعلها باخر كود الاستعلام لتصبح
كود :
WHERE [id_tsjel_subj] = ?
لان الاى دى فى التعديل لا يعدل
بل يتم الاستعانة به لاتمام تعديل البيانات التى تعمل الاى دى المطلوب
ثانياً سطر كود الاستعلام يجب ان يكون بداخل For وايضاً سطر التحقق من فتح واغلاق الـ connn
تحياتى لك
وتمنياتى لك التوفيق
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - Done - 26-07-18
(26-07-18, 07:34 PM)dell كتب : أخواني معليش تعبتكم معاي .. في حالة التعديل يظهر لي خطاء
كود :
Dim cmds As New SqlCommand("UPDATE tsjel_subj SET [id_tsjel_subj] =?, [Password] =?, [id_number] =?, [FirstName] =?, [name_dorh] =?, [number_dorh] =?, [subj] =?", conn)
If connn.State <> ConnectionState.Open Then connn.Open()
For Each saf As DataGridViewRow In DataGridView1.Rows
If saf.IsNewRow Then Exit For
cmds.Parameters.Clear()
cmds.Parameters.AddWithValue("@id_tsjel_subj", saf.Cells(0).Value.ToString)
cmds.Parameters.AddWithValue("@Password", saf.Cells(1).Value.ToString)
cmds.Parameters.AddWithValue("@id_number", saf.Cells(2).Value.ToString)
cmds.Parameters.AddWithValue("@FirstName", saf.Cells(3).Value.ToString)
cmds.Parameters.AddWithValue("@name_dorh", saf.Cells(4).Value.ToString)
cmds.Parameters.AddWithValue("@number_dorh", saf.Cells(5).Value.ToString)
cmds.Parameters.AddWithValue("@subj", saf.Cells(6).Value.ToString)
cmds.ExecuteNonQuery()
Next
connn.Close()
MsgBox("تم الحفظ بنجاح", MsgBoxStyle.MsgBoxRight, "")
الخطأ يشير الى ان الاتصال مغلق والسبب أن لديك متغيرا للاتصال احدهم conn والاخر connn،
ثم اعتمدت على conn في الامر command في حين أنك تفتح الاتصال connn
النقطة الثانية التي ستواجهك هي
قاعدة بيانات SQLServer لا يتعامل مع ؟ lمثل الاكسس،
بل لابد من تسمية البارامترات
النقطة الخيرة والطيرة التي أغفلتها هي ما ذكرهاالاخ algokr وهي يجب تحديد السطر ب WHERE والذي تريد التعديل حتى لا تقوم بتغيير جميع اسطر الجدول بنفس البيانات
PHP كود :
Dim cmds As New SqlCommand("UPDATE tsjel_subj SET [Password] =@Password, [id_number] =@id_number, [FirstName] =@FirstName, [name_dorh] =@name_dorh, [number_dorh] =@number_dorh, [subj] =@subj WHERE [id_tsjel_subj] =@id_tsjel_subj ", connn)
If connn.State <> ConnectionState.Open Then connn.Open() For Each saf As DataGridViewRow In DataGridView1.Rows If saf.IsNewRow Then Exit For cmds.Parameters.Clear() cmds.Parameters.AddWithValue("@id_tsjel_subj", saf.Cells(0).Value.ToString) cmds.Parameters.AddWithValue("@Password", saf.Cells(1).Value.ToString) cmds.Parameters.AddWithValue("@id_number", saf.Cells(2).Value.ToString) cmds.Parameters.AddWithValue("@FirstName", saf.Cells(3).Value.ToString) cmds.Parameters.AddWithValue("@name_dorh", saf.Cells(4).Value.ToString) cmds.Parameters.AddWithValue("@number_dorh", saf.Cells(5).Value.ToString) cmds.Parameters.AddWithValue("@subj", saf.Cells(6).Value.ToString) cmds.ExecuteNonQuery() Next connn.Close()
MsgBox("تم الحفظ بنجاح", MsgBoxStyle.MsgBoxRight, "")
احذف المتغير conn وليكن لديك متغير واحد للاتصال
RE: طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ - سعود - 26-07-18
ركز بالصورة وهي خطا بكود التحقق من الاتصال
اوووووووووه معلش!!!
يجب علي انا ان اتاكد
|