PDA

View Full Version : exception براي ورود داده تكراري



soheil3242
جمعه 11 مرداد 1387, 10:04 صبح
با سلام
نمي دونم ديدين توي sql 20025 هر وقت ميخواهيم براي pkداده تكراري وارد كنيم اجازه نميده و يه پيام خطا هم ميده ... حالا اگر در يك برنامه بانك اطلاعاتي بخواهيم همين كار را بكنيم كه وقتي كاربر بخواهد داده تكراري وارد كند و خودش هم خبر از تكراري بودنش نداشته باشد (ممكن است ديگر ....) يه پيام خطاي فارسي به او داده شود ؟ يعني از چه نوع exception بايد استفاده كنيم ؟
يه سوال ديگه هم دارم . چه طور ميشه در messagebox متن دكمه ها را فارسي كرد؟ :متفکر:

روح اله معینی زاده
جمعه 11 مرداد 1387, 11:21 صبح
سلام
از try استفاده كنيد و در قسمت exception با يك دستور شرطي اون رو تشخيص بديد.
ً درون رشته خطا كه با ex.message برگشت داده مي شه بايد دنبال كلمه Duplicate بگرديد.
با احترام- خدانگه‌دار

HamedNET
جمعه 11 مرداد 1387, 11:32 صبح
Duplicate یا dedicated ?

روح اله معینی زاده
جمعه 11 مرداد 1387, 11:57 صبح
تكراري = Duplicate Value

Dariuosh
جمعه 11 مرداد 1387, 14:26 عصر
با سلام
نمي دونم ديدين توي sql 20025 هر وقت ميخواهيم براي pkداده تكراري وارد كنيم اجازه نميده و يه پيام خطا هم ميده ... حالا اگر در يك برنامه بانك اطلاعاتي بخواهيم همين كار را بكنيم كه وقتي كاربر بخواهد داده تكراري وارد كند و خودش هم خبر از تكراري بودنش نداشته باشد (ممكن است ديگر ....) يه پيام خطاي فارسي به او داده شود ؟ يعني از چه نوع exception بايد استفاده كنيم ؟
يه سوال ديگه هم دارم . چه طور ميشه در messagebox متن دكمه ها را فارسي كرد؟ :متفکر:
1- قاعدتاً طراحي برنامه بايد طوري باشه که توليد PK در اختيار کاربر نباشه
2- حالا اگه منظورتون يه فيلد ديگه به غير از PK باشه مثلاً " کد کالا " خوب قبل از ثبت ، چک کنيد که وجود داره يا نه ؛ در ضمن چون PK هم نيست که شما Errorايي دريافت نميکنيد
3- MessageBox فارسي (http://barnamenevis.org/forum/showpost.php?p=188492&postcount=3)

soheil3242
جمعه 11 مرداد 1387, 15:47 عصر
خوب كد كالا هم ميتواند يه جور pk باشد . البته منظور من زماني است كه مثلا نام شهر ها در يك جدول ثبت ميشود كه من نام شهر ها را گرفتم pk . به همين خاطر كاربر با وارد كردن نام شهري كه در ليست وجود ندارد در حقيقت pk را توليد ميكند ( يعني يك جدول در پايگاه داريم كه فقط حاوي نام شهر هاست كه pk هم هستند)

Dariuosh
جمعه 11 مرداد 1387, 16:48 عصر
خوب كد كالا هم ميتواند يه جور pk باشد . البته منظور من زماني است كه مثلا نام شهر ها در يك جدول ثبت ميشود كه من نام شهر ها را گرفتم pk . به همين خاطر كاربر با وارد كردن نام شهري كه در ليست وجود ندارد در حقيقت pk را توليد ميكند ( يعني يك جدول در پايگاه داريم كه فقط حاوي نام شهر هاست كه pk هم هستند)
خوب منظوره منم همين هست که از کدکالا ، نام شهر يا امثال اون بهتره به جايه PK استفاده نکنيم

**اول از مديران معذرت ميخوام که يه چند کلمه از پايگاه داده ها اينجا مينويسم**
تو طراحي جدول ها يه بحثي مطرحه به نامه Surrogate Key ، يعني استفاده از کليد جانشين يا کليد مجازي بجاي کليد اصلي جدول
يعني شما به جايه اينکه نام شهر يا کد کالا يا .... رو PK کنيد يه فيلد اضافي از جنس Int تو جدولتون در نظر ميگيرين و اون رو PK ميکنيد
با استفاده از اين روش مشکل کندي يا قفل شدن سيستم در اثر ادغام يا تغيير کد اصلي جدول ها رو برطرف ميکنيد
اگه خواستي اطلاعات بيشتري کسب کني تو تالار پايگاه داده ها دنبالش کن

reza6384
شنبه 12 مرداد 1387, 10:16 صبح
Try
.......
Catch Ex As SqlException
if Ex.ErrorCode = 1000 Then
msgbox("رکورد تکراری مجاز نیست")
end if
End Try


البته اینجا فرض کردم کد خطا 1000 هست. به نظر من اینکار بهتر از جستجوی یک کلمه توی کد خطاست. ممکنه خطای دیگه ای هم توی متنش این کلمه وجود داشته باشه.