PDA

View Full Version : خطا موقع add کردن



mohsen57
دوشنبه 12 فروردین 1387, 23:55 عصر
من برای اینکه دیتابیس رکورد تکراری اضافه نکنه خاصیت indexed یکی از فیلدها رو در اکسس برابر Yes (No Duplicates) قرار دادم ولی موقعی که داره رکورد add میکنه وقتی به یک رکورد با فیلد تکراری میرسه یک خطا زمان اجرا رخ میده!

حمیدرضاصادقیان
سه شنبه 13 فروردین 1387, 00:14 صبح
سلام.خوب باید خطا بده دیگه. شما میتونی دوکار انجام بدی.یکی دستور post رو داخل بک بلوک try..except قرار بدی که اگر خطا داد یک خطای مناسب به کاربر نمایش بدی.یا اینکه قبل از عمل پست خودت به صورت دستی مقدار فیلد مورد نظر رو چک کنی که اگر وجود داشت به کاربر پیغام مناسب رو بدی.

mohsen57
سه شنبه 13 فروردین 1387, 02:31 صبح
به این صورت نوشتم باز خطا میده


Try
ADOQuery1.Post;
Except
showmessage('Error');
end;

نمی خوام بصورت دستی چک کنم چون سرعت پایین میاد

SYNDROME
سه شنبه 13 فروردین 1387, 07:44 صبح
به این صورت نوشتم باز خطا میده


Try
ADOQuery1.Post;
Except
showmessage('Error');
end;

نمی خوام بصورت دستی چک کنم چون سرعت پایین میاد
زمانی که در Source اجرا می کنید خطا می دهد ولی اگر Exe را اجرا کنید خطا را مشاهده نمی کنید.
موفق باشید

dkhatibi
سه شنبه 13 فروردین 1387, 10:57 صبح
در واقع پیام ERROR که خودتون نوشته اید مشاهده می شه!

mohsen57
سه شنبه 13 فروردین 1387, 20:39 عصر
زمانی که در Source اجرا می کنید خطا می دهد ولی اگر Exe را اجرا کنید خطا را مشاهده نمی کنید.
موفق باشید
بله، حق با شماست

حمیدرضاصادقیان
چهارشنبه 14 فروردین 1387, 10:45 صبح
البته چک کردن در زمان اجرا اصلا سرعت رو پایین نمیاره . خیلی هم سریع هست. دیگه نیازیم نیست از block .. try.except استفاده کنید.
شما فقط مقدار اخرین فیلد رو دارید چک میکنید و میتونید اونو با یک sp چک کنید.
با روش فعلی شما شاید سرعت پایین بیاد به خاطر اینکه یک دوباره کاری داره انجام میشه.ابتدا یک بار داره سعی میکنه دیتا رو به سرور بفرسته وقتی می بینه تکراریه دوباره شما یک شماره جدید رو مجبورید generate کنید دوباره سعی کنید دیتا رو بفرستیدکه خود این سه مرحله ارتباط به سروره. ولی با روشی که من میگم دوبار بیشتر ارتباط با سرور برقرار نمیشه.یک بار موقع چک کردن یک بار موقع اضافه کردن.
موفق باشید.

SYNDROME
چهارشنبه 14 فروردین 1387, 17:06 عصر
ولی به این نکته دقت کنید که اگر چند کاربر به طور همزمان با هم عمل اضافه را انجام دهند باز هم نیاز به try..except است.
بهتر است اول خودتان چک کنید و سپس باز داخل یک try . . except عملیات را دنبال کنید تا اگر دو بار همزمان بودند باز هم جلوی خطا را بگیرید.
موفق باشید

حمیدرضاصادقیان
چهارشنبه 14 فروردین 1387, 20:31 عصر
سلام.خوب برای اینکه جلوی اینکار گرفته بشه شما وقتی کاربر داره یک رکورد جدید ایجاد میکنه پیش فرض یک شماره جدید بهش میدید هنگامی که میخواهید دیتا رو post کنید همون لحظه چک کنید بعد post کنید دیگه نیازی به try..except نیست.دیگه توی اون لحظه خیلی بعیده که یک رکورد تکراری بوجود بیاد.یعنی در فاصله چک کردن و اضافه کردن.!!!!!

SYNDROME
پنج شنبه 15 فروردین 1387, 07:31 صبح
سلام.خوب برای اینکه جلوی اینکار گرفته بشه شما وقتی کاربر داره یک رکورد جدید ایجاد میکنه پیش فرض یک شماره جدید بهش میدید هنگامی که میخواهید دیتا رو post کنید همون لحظه چک کنید بعد post کنید دیگه نیازی به try..except نیست.دیگه توی اون لحظه خیلی بعیده که یک رکورد تکراری بوجود بیاد.یعنی در فاصله چک کردن و اضافه کردن.!!!!!
احتمال این که تکراری ایجاد شود کم است ولی با این حال هر چه تعداد کاربران در شبکه بالا برود احتمال ایجاد رکورد تکراری زیادی می شود.
موفق باشید