PDA

View Full Version : اشکال در اجرای فرمانInsert با ExecuteNonQuery در Access



webman
جمعه 10 اسفند 1386, 15:26 عصر
با سلام به دوستان , یک فرمان Insert ساده با ExecuteNonQuery با Access . جدول store با سه فیلد storeid, store, boss. کلید اصلی storeid که Autonumber است و تکرار مجاز نیست. نام فروشگاه (store) که تکرار مجاز نیست و در بانک به No Duplicate تنظیم شده .


Protected Sub btnRun_click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnRun.Click

Dim connString As String = "Provider=Microsoft.jet.oledb.4.0; Data Source=d:\aspnet\db1.mdb"
Dim dbConn As New OleDbConnection(connString)

dbConn.Open()
Dim commandString As String = "INSERT INTO store(store, boss) VALUES(@store,@boss)"
Dim dbCommand As New OleDbCommand(commandString, dbConn)

Dim storeParam As New OleDbParameter("@store", OleDbType.VarChar, 10)
storeParam.Value = txtStore.Text
dbCommand.Parameters.Add(storeParam)

Dim bossParam As New OleDbParameter("@boss", OleDbType.VarChar, 20)
bossParam.Value = txtBoss.Text
dbCommand.Parameters.Add(bossParam)

dbCommand.ExecuteNonQuery()
dbConn.Close()

End Sub
این خطا را میدهد

Exception Details: System.Data.OleDb.OleDbException: 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.
اگر تنظیم No Duplicate را yes کنیم خطا نمیدهد و رکورد وارد شده دو بار ذخیره میشود
هر راهنمایی بکنید کمال تشکر را دارم

nazaninam
جمعه 10 اسفند 1386, 23:42 عصر
ببینید قبل از اینکه مقدار را داخل دیتابیس پاس کنید چک کنید ببینید که چنین رکوردی وجود داره یا خیر
ودر صورت وجود پیغامی مبنی بر تکراری بودن به کاربر بدهید

webman
شنبه 11 اسفند 1386, 12:52 عصر
با تشکر بله ساده است اما بانک خالی است اولین رکورد بدون هیچ مشکل ذخیره می شود در دومین رکورد error بالا را می دهد و جالب اینجاست با اینکه error می دهد رکورد دوم هم ثبت می شود حال اگر در تنظیمات بانک index را به no duplicate تنظیم کنیم (منظور برای فیلدهای storeid , store ) و رکورد جدیدی را pass کنیم بدون مشکل ذخیره می شود اما اینبار در دو رکورد تکراری ثبت شده است یعنی رکورد جدید دو بار ذخیره می شود البته بگویم storeid را کلید اولیه اش را بر میداریم فکر نمی کنم اشکال از کد باشد نمی دانم اما جالب است؟