PDA

View Full Version : مشکل پس از اجرای دستورinsert



nastaran_s
دوشنبه 26 بهمن 1388, 01:25 صبح
سلام. من می خواهم در دیتا گرید و دیتابیسم اطلاعاتی را از طریق textbox وارد کنم دستور اجرا می شود(در جدولم اضافه شده) اما وقتی به این خط می رسد exception می دهد


.
.
("adapter.fill(dset,"TelNeed



خطا:


The changes you requested to the table were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permit duplicate entries and try again.

ممنون

majid325
دوشنبه 26 بهمن 1388, 02:38 صبح
این خطا که میگه مشکل از دادهها هست.
ولی یه بار قبل از Fill کردن دوباره دیتاست ، متد Clear اون رو صدا بزن ، اگه درست نشد کد ثبت و fill مجدد رو اینجا بزار.

nastaran_s
دوشنبه 26 بهمن 1388, 14:24 عصر
سلام . باز هم همان error را داد !




Public Function insertCom(ByVal insString As String, ByVal tblString As String) As DataSet

Dim ds As New DataSet
' Try

Dim cmd As New OleDbCommand(insString, connection)
Dim adapter As New OleDbDataAdapter(cmd)

connection.Open()
cmd.ExecuteNonQuery()

adapter.Fill(ds, tblString)



' Catch ex As Exception
'MessageBox.Show("عملیات درج انجام نمی شود")
'End Try

Return ds
End Function



در رویداد کلیک برای ثبت هم


Private Sub btnN_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnN.Click

If btnN.Text = "جدید" Then
If txtNname.Text <> "" AndAlso txtNtel.Text <> "" Then
Dim str As String = "insert into TelNeed values('" & txtNname.Text & "','" & txtNtel.Text & "')"
Dim dset As DataSet = FunctionDb.insertCom(str, " TelNeed")
FunctionDb.conClose()
DataGridViewN.DataSource = dset.Tables("TelNeed")

Else
MessageBox.Show("لطفا فیلدها را پر کنید", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error)
End If


End If

End Sub

majid325
دوشنبه 26 بهمن 1388, 20:30 عصر
جدا از مشكلات عمده اي كه در كد شما وجود داره (به دليل اينكه به مشكل فعلي شما ربطي نداره را جع به هشون توضيح نميدم) .
ياد آوري:
شما براي درج ركورد در جدول نياز به يك كوئري از جنس insert دارين و براي انتخاب ركورد نياز به كوئري از جنس select دارن.

شما يك كوري براي insert درست كردين (كه عمل درح درست انجام ميشه) ، ولي نميتونين براي پر كردن dataset از همون كوئري insert استفاده كنيد ، بايد يك كوئري select رو هم ايجاد كنيد.
پيشنهاد ميكنم اين لينك (http://barnamenevis.org/forum/showthread.php?t=133060) رو مطالعه بفرمايي.

debugger
دوشنبه 15 آذر 1389, 10:11 صبح
این مشکل بخاطر اینه که مقدار فیلد کلید جدول دو بار تکرار میشه و برنامه این خطا را نمایش میده . یا کاربر داده متفاوت با کلید یکسان وارد کنه این اتفاق می افته