منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مشكل في اصافة سطر من datagrid الى الجدول في sql server
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
ممكن مساعدة
Private Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click
        Connect()
        Dim Str As String
        Dim cmd As New SqlCommand
        For index As Integer = 0 To DataGridView1.RowCount - 1
            cmd.Connection = Connection
            Str = "insert into liste_pv(id_proces_v,nom_pv,attab values (@1,@2,@3)"
            cmd.CommandText = Str
            cmd.Connection = Connection
            cmd.Parameters.AddWithValue("@1", DataGridView1.Rows(Index).Cells(0).Value)
            cmd.Parameters.AddWithValue("@2", DataGridView1.Rows(index).Cells(1).Value)
            cmd.Parameters.AddWithValue("@3", DataGridView1.Rows(index).Cells(2).Value)
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            Connection.Close()
            DataGridView1.Refresh()
        Next
        MsgBox("تمت عمليةالحفظ ")
    End Sub
تظهر رسالة الخطا التالية
System.Data.SqlClient.SqlException: 'Incorrect syntax near the keyword 'values'.'
بارك الله فيكم
(16-01-20, 11:14 PM)tahaayyoub كتب : [ -> ]ممكن مساعدة
Private Sub ToolStripButton6_Click(sender As Object, e As EventArgs) Handles ToolStripButton6.Click
        Connect()
        Dim Str As String
        Dim cmd As New SqlCommand
        For index As Integer = 0 To DataGridView1.RowCount - 1
            cmd.Connection = Connection
            Str = "insert into liste_pv(id_proces_v,nom_pv,attab values (@1,@2,@3)"
            cmd.CommandText = Str
            cmd.Connection = Connection
            cmd.Parameters.AddWithValue("@1", DataGridView1.Rows(Index).Cells(0).Value)
            cmd.Parameters.AddWithValue("@2", DataGridView1.Rows(index).Cells(1).Value)
            cmd.Parameters.AddWithValue("@3", DataGridView1.Rows(index).Cells(2).Value)
            cmd.ExecuteNonQuery()
            cmd.Dispose()
            Connection.Close()
            DataGridView1.Refresh()
        Next
        MsgBox("تمت عمليةالحفظ ")
    End Sub
تظهر رسالة الخطا التالية
System.Data.SqlClient.SqlException: 'Incorrect syntax near the keyword 'values'.'
بارك الله فيكم

احذف البراميتر في الحلقة التكرارية قبل الاضافة ()cmd.Parameters.clear

احذف كل دة من الحلقة التكرارية 

            cmd.Dispose()
            Connection.Close()
            DataGridView1.Refresh()

ضعة بعد انتهاء الحلقة 
إغلق القوس قبل VALUES
تحياتي
ما ذكره الأخ egypt 2020 صحيح يجب حذف البراميترات
ما ذكره الأخ عبد العزيز البسكري صحيح من نسيانك وضع القوس قبل values
وهذا تعديل مختصر للكود
PHP كود :
Connect()
Dim Str "INSERT INTO liste_pv(id_proces_v, nom_pv, attab) VALUES (@c0, @c1, @c2)"
Dim cmd As New SqlCommand(StrConnection)
For 
Each row As DataGridViewRow In DataGridView1.Rows
    cmd
.Parameters.Clear()
    
cmd.Parameters.AddWithValue("@c0"row.Cells(0).Value)
    
cmd.Parameters.AddWithValue("@c1"row.Cells(1).Value)
    
cmd.Parameters.AddWithValue("@c2"row.Cells(2).Value)
    
cmd.ExecuteNonQuery()
Next
MsgBox
("تمت عمليةالحفظ "
حذفت البرميتر واضقت قوس عند نهاية values
طلعت الرسالة
System.Data.SqlClient.SqlException: 'Violation of PRIMARY KEY constraint 'PK_liste_pv'. Cannot insert duplicate key in object 'dbo.liste_pv'. The duplicate key value is (1).
The statement has been terminated.'
علما ادخلت قيمة (34) في الحق الاول مفتاح اساسي للجدول
وهو رقم الترتيب الموالي
حاولت مرة ثانية من دون ادخال اي قيمة في الحقل الاول ولكن نفس الرسالة
لديك حقل مفتاح رئيسي يجب أن لا يتكرر،
إذا كان هذا الحقل ترقيم تلقائي لا تكتبه في Str ولا تضع له باراميتر
احترامي للجميع 

اولا الغي بارميتر الخاص بحقل  id 
 وعدل جدول قاعدة البيانات بحقل id لترقيم تلقائي .

واستخدم كود  استاذ جميل 4  مع تعديل بسيط 



كود :
Connect()
Dim Str = "INSERT INTO liste_pv( nom_pv, attab) VALUES ( @nom_pv, @attab)"
dim cmd As New SqlCommand(Str, Connection)
لو الاتصال لم يتم فتحة ' con.open
For Each row As DataGridViewRow In DataGridView1.Rows
   cmd.Parameters.Clear()

   cmd.Parameters.AddWithValue("@nom_pv", row.Cells(1).Value)
   cmd.Parameters.AddWithValue("@attab", row.Cells(2).Value)

 
cmd.ExecuteNonQuery()

Next

con.close

MsgBox("تمت عمليةالحفظ ")
اي خطا بعد السابق راجع جيدا اسماء الحقول بقاعدة البيانات .

ونصيحة شخصية اسم الحقول خلية ذي كدة عشان تفهم الحقول هضيف فيها اية name_student  لانك ممكن تعمل مشكلة اخري خاصة بالكلمات المحجوزة .