ممكن مساعدة
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()
ضعة بعد انتهاء الحلقة
ما ذكره الأخ 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(Str, Connection)
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 لانك ممكن تعمل مشكلة اخري خاصة بالكلمات المحجوزة .