تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] طريقة نقل المعلومات من DataGridView1 إلى DataGridView2 والحفظ
#1
Question 
السلام عليكم ورحمة الله وبركاته

أخواني الكرام لدي 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
 

مالحل بارك الله فيكم
الرد }}
تم الشكر بواسطة:
#2
جرب استخدام الكود بهذا الشكل
كود :
       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


تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}
تم الشكر بواسطة: Done , Done , dell , dell
#3
يجب عدم وضع اسم عمود الترقيم التلقائي في الاضافة 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() 
الرد }}
تم الشكر بواسطة: elgokr , dell
#4
(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 لتجنب عرض رسالة الاخطاء

تحياتى للجميع
وتمنياتى لكم التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}
تم الشكر بواسطة: dell , Done , Done
#5
جزاكم الله خير جاري التجربة
الرد }}
تم الشكر بواسطة: elgokr
#6
أخي Done  وأخي  elgokr


حل الأخ  Done   ممتاز وعمل معاي بأفضل حل

أشكر لكم جهودكم
الرد }}
تم الشكر بواسطة: elgokr , Done , Done
#7
أخواني معليش تعبتكم معاي .. في حالة التعديل يظهر لي خطاء

كود :
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, "")

صورة الخطاء

الرد }}
تم الشكر بواسطة:
#8
بخصوص التعديل
بعد الكلمة التالية Set
ستجد هذه الجملة
كود :
[id_tsjel_subj] = ?

قم بحذفها 
ويكتفي ان تجعلها باخر كود الاستعلام لتصبح
كود :
WHERE [id_tsjel_subj] = ?

لان الاى دى فى التعديل لا يعدل
بل يتم الاستعانة به لاتمام تعديل البيانات التى تعمل الاى دى المطلوب

ثانياً سطر كود الاستعلام يجب ان يكون بداخل For وايضاً سطر التحقق من فتح واغلاق الـ connn


تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}
تم الشكر بواسطة: سعود , Done , Done , dell
#9
(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] [email protected], [id_number] [email protected]_number, [FirstName] [email protected], [name_dorh] [email protected]_dorh, [number_dorh] [email protected]_dorh, [subj] [email protected] WHERE [id_tsjel_subj] [email protected]_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 وليكن لديك متغير واحد للاتصال
الرد }}
تم الشكر بواسطة: سعود , elgokr , dell
#10

ركز بالصورة وهي خطا بكود التحقق من الاتصال

اوووووووووه معلش!!!
يجب علي  انا ان اتاكدSad
=====* التوقيع *======
=================
الرد }}
تم الشكر بواسطة: Done , elgokr , dell


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ممكن طريقة لتحويل هذا الكود ابو روضة 9 383 10-06-22, 02:21 AM
آخر رد: ابو روضة
Question [VB.NET] استفسار حول طريقة الضغط على زر برمجيا lmofallis 4 3,054 01-06-22, 12:02 PM
آخر رد: عبد الجليل سراج
  طريقة تحميل البيانات بطريقة سريعة عن طريق الاستعلام sql Codack 1 261 23-05-22, 07:17 PM
آخر رد: سعود
  [سؤال] طريقة تمرير صور من Form1 الي Form2 MMn 2 483 08-04-22, 11:26 PM
آخر رد: MMn
  طريقة تثبيت البرنامج عن بعد mohmmadadli1 1 501 29-03-22, 12:36 AM
آخر رد: Taha Okla
  ممكن طريقة اضافة باسورد عند انشاء برنامج للقنوات لكي عندما احد يريد ان يدخل الى البرن omar dz 6 1,071 20-03-22, 07:37 PM
آخر رد: omar dz
  [سؤال] طريقة الادخال اليدوي في الداتا جريد فيو وحفظها تلقائيا safralfahd 11 1,364 19-03-22, 07:59 PM
آخر رد: safralfahd
  [VB.NET] ايه افضل طريقة لاستخراج ارقام من صورة ؟ الماجيك مسعد 2 557 17-03-22, 03:52 PM
آخر رد: الماجيك مسعد
  كيفية برمجه زر التعديل والحفظ حسين ادريس 0 476 10-03-22, 10:12 PM
آخر رد: حسين ادريس
  طريقة اختصار تكرارات الارقام beso00 6 845 11-02-22, 10:32 PM
آخر رد: ابراهيم ايبو

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم