PDA

View Full Version : پیغام Row can not be located for updating. Some values....



SReza1
چهارشنبه 30 مهر 1382, 22:32 عصر
این پیغام
Row can not be located for updating. Some values may have been changed since ot was last read.
در بانک SQL Server2000 در هنکام ذخیره سازی ظاهر میشه!! منکه که سر در نمی آرم!!در ضمن از ADO استفاده میکنم!! هر کی میدونه بگه! :cry: :cry:

مهدی کرامتی
پنج شنبه 01 آبان 1382, 20:15 عصر
دلایل ممکن: کاربر دیگری بعضی یا تمام فیلدهایی که شما در حال ویرایش آن هستید را ویرایش کرده است.
پس از Insert اولیه، فیلدها توسط یک Trigger دستکاری شده و شما سعی میکنید قبل از انجام requery رکورد را Update کنید.
اتفاقی در Client Side افتاده که باعث تغییر یافتن رکورد خوانده شده در حافظه افتاده است و اکنون رکورد در حافظه با آنچه در Database است مطابقت نمیکند. بعنوان مثال بعضی از درایور های اتصال به Database بخش miliseconds فیلدهای TDateTime را از آن حذف میکنند.

حالت پیش فرض در کامپوننتهای ADO بورلند اینستکه موقع ویرایش یک رکورد، مقدار تمام فیلدها را در حافظه میخواند. هنگامی که شما میخواهید مقادیر ویرایش شده را پست کنید ابتدا رکورد نگهداری شده در حافظه در Database جستجو شده و در صورت یافت شدن عمل Update صورت میگیرد. حال اگر در اثر یکی از موارد فوق رکورد در Database یافت نشود شما این پیغام خطا را دریافت میکنید.

این رفتار در کامپوننتهای BDE وجود ندارد. برای وادار کردن کامپوننتهای ADO به انجام اینکار میتوانید به این روش عمل کنید:
ADODataSet1.Properties['Update Criteria'].value :=adCriteriaKey;
مقادیر ممکن برای این property عبارتند از:
adCriteriaKey, adCriteriaAllCols (BDE's default),
adCriteriaUpdCols (ADO's default) and adCriteriaTimeStamp.
این property بعد از هر requery به حالت اولیه اش برمیگردد (reset میشود)، بنابراین بهترین کار اینستکه آنرا در event های BeforPost و BeforeDelete اجرا کنید.
اطلاعات بیشتر: HOWTO: Control Your Updates in ADO Through "Update Criteria" (http://support.microsoft.com/default.aspx?scid=kb;EN-GB;q190727&GSSNB=1)

SReza1
پنج شنبه 01 آبان 1382, 20:21 عصر
متشکرم بسیار زیاد!!
باید تا شنبه صبر کنم و روی server اصلی تست کنم! راهنمایی بسیار جالبی بود و کلی حال کردم! :lol: :lol: :D :shock: :shock: :shock:

SReza1
پنج شنبه 01 آبان 1382, 20:29 عصر
راستی اگه ما ADO رو مجبور کنیم که از رفتار bde تبعیت کنه در سرعت و کارایی ADO در یک برنامه تخت شبکه تاثیر منفی نمی گذاره؟

مهدی کرامتی
پنج شنبه 01 آبان 1382, 22:02 عصر
فرق چندانی نمیکنه.

SReza1
جمعه 02 آبان 1382, 15:46 عصر
متشکرم آقای کرامتی

SReza1
یک شنبه 04 آبان 1382, 20:40 عصر
تست کردم فعلا مشکلی پیش نیومده! تا بعد ببینیم

rouzbeh_ziafati
یک شنبه 29 آذر 1388, 01:42 صبح
لطفا یک نگاهی هم به این بندازید .
برای تست برنامه در حالی که برنامه در حال اجرا هست میتونید تاریخ سیستم رو سه روز جلو ببرید .
یک کپی از بانک نگه دارید . اطلاعات که پاک شد اونو جایگزین کنید برای تست دوباره .

https://www.opendrive.com/files?5900547_yKrN6
یا
https://www.opendrive.com/files/5900547_yKrN6/Payane%20Ver5.rar