تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مشكل في اصافة سطر من datagrid الى الجدول في sql server
#1
ممكن مساعدة
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'.'
بارك الله فيكم
الرد
تم الشكر بواسطة: egypt 2020
#2
(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()

ضعة بعد انتهاء الحلقة 
الرد
#3
إغلق القوس قبل VALUES
تحياتي
الرد
تم الشكر بواسطة: جميل4 , جميل4 , tahaayyoub , baha
#4
ما ذكره الأخ 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
("تمت عمليةالحفظ "
الرد
تم الشكر بواسطة: tahaayyoub , عبد العزيز البسكري , baha
#5
حذفت البرميتر واضقت قوس عند نهاية 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) في الحق الاول مفتاح اساسي للجدول
وهو رقم الترتيب الموالي
حاولت مرة ثانية من دون ادخال اي قيمة في الحقل الاول ولكن نفس الرسالة
الرد
تم الشكر بواسطة: جميل4 , عبد العزيز البسكري
#6
لديك حقل مفتاح رئيسي يجب أن لا يتكرر،
إذا كان هذا الحقل ترقيم تلقائي لا تكتبه في Str ولا تضع له باراميتر
الرد
#7
احترامي للجميع 

اولا الغي بارميتر الخاص بحقل  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  لانك ممكن تعمل مشكلة اخري خاصة بالكلمات المحجوزة .
الرد
تم الشكر بواسطة: جميل4 , عبد العزيز البسكري , baha , tahaayyoub



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


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