PDA

View Full Version : Concurrency Violation Error



rahil_2007
پنج شنبه 21 شهریور 1387, 10:09 صبح
باسلام علت یا معنی error زیر چیست ؟Concurrency violation: the DeleteCommand affected 0 of the expected 1 records.

Dariuosh
پنج شنبه 21 شهریور 1387, 10:57 صبح
احتمالاً اگه يه بار قبل از اينکه شما Delete رو انجام بدين DateSetرو مجدد Fill کنين مشکلتون حل شه
اگه حل نشد اون تيکه کدتونو بزارين تا ببينيم

Microsoft.net
پنج شنبه 21 شهریور 1387, 19:18 عصر
مشکل تون اینکه دستور delete شما هیچ رکوردی رو نتوسته پاک کنه و چون Set No Count On است این پیغام داده میشود با off کردن این مشکل حل میشود ولی باید کدتون رو بازبینی کنید چرا که دستور حذف شما هیچ رکوردی رو از بانک حذف نمی کند . احتمالا باگ کوچکی در کدتون وجود داره

rahil_2007
پنج شنبه 21 شهریور 1387, 23:51 عصر
با سلام و تشکر از دوستان
اگه کسی کد update,delete,insert رو توی datagridview داره برام بذاره ممنون میشم.

MORTEZA66
جمعه 22 شهریور 1387, 20:37 عصر
اول از همه دو تا متغير زير رو براي كار با ديتاست و دستورات SQL تعريف كنيد و يه كم مقدار دهي كنيد


DIM dap1 As New SqlClient.SqlDataAdapter
DIM dset1 As New DataSet
dap1.SelectCommand = New SqlClient.SqlCommand
dap1.deleteCommand = New SqlClient.SqlCommand
dap1.insertCommand = New SqlClient.SqlCommand
dap1.updateCommand = New SqlClient.SqlCommand

dap1.SelectCommand.Connection = con ‘Connection name
dap1.deleteCommand.Connection = con ‘Connection name
dap1.insertCommand.Connection = con ‘Connection name
dap1.updateCommand.Connection = con ‘Connection name

براي Insert و Delete و Update به يه شكل عمل ميشه مثلا

dap1.updateCommand.commandText=Sqltext
dap1.updateCommand.ExecuteNonQuery()

و اگر دستورتون مشكلي نداشته باشه اجرا مي شه
اما براي Select كه فكر كنم منظور شما اين بود كه با حذف و اپديت شدن ركوردهاي مرتبط در Datagrid نمايش داده بشن به صورت زير عمل مي شه و مي تونيد با گذاشتن شرط مناسب در دستور Select بعد از دستور Insert يا Delete يا Update كاري كنيد كه بلا فاصله در ديتاگريد نمايش داده شود



dset1.Dispose()
dset1 = New DataSet
dap1.SelectCommand.CommandText = sqlcommand
dset1.Clear()
dap1.Fill(dset1, TableName)
dgView.DataSource = dset1
dgView.DataMember = TableName

اينايي كه گفتم تقريبا يه روش استاندارد براي انجام اين كارهاست البته از نظر من
اگه مشكلي بود يا اصلا منظورتون رو كلا اشتباه فهميده بودم بگيد تا درستش رو بگم!!!!!