ورود

View Full Version : جلوگیری از ذخیره رکورد تکراری هنگام ویراش رکورد



hasandrw
چهارشنبه 16 شهریور 1390, 08:25 صبح
با سلام
من یک جدول دارم با فیلد های نام و نام خانوادگی و کد و...
هنگام ذخیره رکورد جدید جهت جلو گیری از تکراری نبودن کد کل جدول را جستجو می کنم اگه اون کد تکراری بود که پیغام میده تکراری است در غیر اینصورت ذخیره میشه.
حال می خوام برای ویرایش هم از تکراری بودن کد جلوگیری کنم. ولی اینجا دیگه اگه اول جدولم را جستجو کنم همون رکوردی که می خوام اصلاح کنم را برام پیدا می کنه.به نظر شما را حل چیه ؟ چکار کنم که موقع اصلاح رکورد از ذخیره رکورد تکراری جلوگیری کنم؟

Felony
چهارشنبه 16 شهریور 1390, 11:56 صبح
اینجاست که فیلد ID به کار میاد !

شما قبل از ویرایش ID رکورد جاری که قصد ویرایشش رو داری رو میگیری و بعد کد رو در دیتابیس جست و جو میکنی و تو شرطتت بررسی میکنی اگر کد تکراری پیدا شد و ID رکورد تکراری پیدا شده با ID رکورد شما یکی نبود یعنی رکورد تکراری وجود داره و اگر هم یکی بود میری سراغ جست و جو رکوردهای بعدی تا موقعی که به آخرین رکورد برسی ...

hasandrw
چهارشنبه 16 شهریور 1390, 13:14 عصر
ممنونم از همکاریتون جناب تاجیک.
مشکلم حل شد.

Felony
جمعه 18 شهریور 1390, 07:02 صبح
راستی یادم رفت بپرسم بانکتون چی هست ؟ اگر SQL Server هست من جای شما بودم به جای نوشتن اون if ها و ... برای این کار از یک Trigger استفاده میکردم .

hasandrw
یک شنبه 20 شهریور 1390, 22:33 عصر
بانک من اکسس است.تو اکسس هم میشه از Trigger استفاده کرد؟

studentbabak
دوشنبه 21 شهریور 1390, 10:44 صبح
اگه میشه بیشتر توضیح بدید منم می خوام این کار رو انجام بدم در اکسس (البته من من تازه کار)

studentbabak
سه شنبه 22 شهریور 1390, 14:09 عصر
چطور باید ID سطر جاری رو بگیرم؟
البته من از اکسس استفاده می کنم

yhakzar
سه شنبه 22 شهریور 1390, 15:18 عصر
سلام
در Access نمی تونی trigger بنویسی ولی می تونی با استفاده از Query ها مشکلت را برای جلوگیری از ایجاد رکورد تکراری برطرف کنی ، منظور از ID که در عناوین گذشته برای رفع مشکلت مطرح شد فیلد خاصی نمی باشد ، بهتره از اسم فیلد کلید استفاده کنیم که منظور فیلدی هست که مقادیر آن تضمین می شود تکراری وارد نشوند و در صورت تکراری وارد شدن می توان خطای بازگشتی از بانک را گرفت و پاسخ داد ، بهتر است برای این قضیه ساختار بانک اطلاعاتت را مورد بررسی قرار بدی ، و قوانین نرمال سازی در خصوص جداولت را اعمال کنی.
موفق باشید

سعید صابری
سه شنبه 22 شهریور 1390, 15:21 عصر
لطفا ابتدا جستجو کنید




ADOTable1.FieldByName('id').AsVariant //// دسترسی به مقدار فیلد id

ADOTable1.RecNo ///// شماره سطر جاری

gbg
سه شنبه 22 شهریور 1390, 17:00 عصر
راستی یادم رفت بپرسم بانکتون چی هست ؟ اگر SQL Server هست من جای شما بودم به جای نوشتن اون if ها و ... برای این کار از یک Trigger استفاده میکردم .
با تریگر چطور میشه انجام داد
تا اونجا که من میدونم و استفاده کردم تریگر نه وردی ای میگیره از برنامه و نه خروجی ای به برنامه میده