PDA

View Full Version : سوال: دلیل پیغام Row cannot be located for updating. Some values may have been changed since it was last



mobtakeran.sanat
شنبه 26 دی 1394, 13:21 عصر
با سلام
برنامه ای دارم که چندین ساله داره تو مراکز مختلف بدون مشکل کار میکنه. متاسفانه تو برخی از فرم ها که تعداد اون ها کم نیست، از متد post برای update رکوردها استفاده شده.
تو ورژن جدید نرم افزار این پیغام رو سیستم برخی از مشتریان زمان update رکوردها مشاهده شده در حالی که قبلا چنین مشکلی وجود نداشته

Row cannot be located for updating. Some values may have been changed since it was last read

این مشکل ارتباطی به قفل کردن رکورد و مشکلاتی که قبلا اشاره شده با کنترل هایی که انجام شده نداره. باز هم یادآور میشم که این مشکل قبلا وجود نداشته و به یکباره پی اومده، حتی در حال حاضر روی دیتابیس اصلی مشکلی وجود نداره و روی سیستم مشتریان چنین موردی بوجود آمده.

ضمنا برنامه با دلفی 7 و sql2000 تا 2008 داره کار می کنه
ممنون میشم اگه کسانی که به این مشکل برخورد کردن راهنمایی کنن.

hadisalahi2
یک شنبه 27 دی 1394, 09:50 صبح
Row cannot be located for updating. Some values may have been changed since it was last read


در دو حالت این پیام خطا رو من دریافت میکردم
اول در صورتی که مقداری که قراره توی یک فیلد بریزم بزرگتر از طول فیلد باشه . مثلا فیلدم 20 تا جا داره و من 21 کاراکتر بخوام بریزم توش

یکی هم اینکه مقداری تکراری در فیلدهای کلید بخوام بریزم

البته فکر میکنم بیشتر گزینه اول این خطا رو دریافت میکردم

mobtakeran.sanat
یک شنبه 27 دی 1394, 14:26 عصر
در دو حالت این پیام خطا رو من دریافت میکردم
اول در صورتی که مقداری که قراره توی یک فیلد بریزم بزرگتر از طول فیلد باشه . مثلا فیلدم 20 تا جا داره و من 21 کاراکتر بخوام بریزم توش

یکی هم اینکه مقداری تکراری در فیلدهای کلید بخوام بریزم

البته فکر میکنم بیشتر گزینه اول این خطا رو دریافت میکردم


امکان ایجاد این خطا به دلیل هر کدوم از حالت های بالا وجود نداره، چون مقدار کلید ها به هیچ عنوان در هیچ شرایطی عوض نمیشه چون همگی IDENTITY هستند در حالت دوم هم مقدار جایگزین شده در فیلدها مقادیری هستند که طول آنها کنترل شده می باشد بطور مثال حتی با عدم تغییر مقادیر و فقط ثبت اصلاح خطا ایجاد میشه. البته فکر می کنم در صورت عدم تطابق طول فیلد خطای "would be truncated" باید بده

hadisalahi2
یک شنبه 27 دی 1394, 17:55 عصر
من بارها همین خطا رو دریافت کردم
و یکی از علتهاش همین هایی بود که گفتم
پس شما باید بگردی و دلیل خطای برنامه رو با Trace کردن پیدا کنی

hamid-nic
یک شنبه 27 دی 1394, 18:42 عصر
توی سایت مایکروسافت برای حل این مشکل این راه حل را داده :

To resolve this problem, remove the default value that is specified for the numeric field in the Access database table.

Alternately, you can run an UPDATE statement on a separate ADO Connection object to update the numeric field in the newly-added record directly in the database and then refresh the ADODC.

mobtakeran.sanat
دوشنبه 28 دی 1394, 18:33 عصر
من بارها همین خطا رو دریافت کردم
و یکی از علتهاش همین هایی بود که گفتم
پس شما باید بگردی و دلیل خطای برنامه رو با Trace کردن پیدا کنی

قبلا هم ذکر شده برنامه تا حالا تو این چند سال داشته بدون مشکل کار میکرده، پس ارتباطی به Trace کد نداره. ولی خوشبختانه مشکل پبدا شده
مشکل از تیریگرهای Update روی برخی از جداول بود
چون دو خط زیر رو کم داشتن
CREATE TRIGGER [name] ON tblName
FOR UPDATE AS
SET NOCOUNT ON; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
SET ANSI_WARNINGS OFF; <<<<<<<<<<<<<<<<<<<<<<<<<<<<
if (not Update(.....))
.
.
.

ممنون از همگی