PDA

View Full Version : سوال: چطوری مقادیر فارسی یا عربی دیتابیسم رو با مقادیر فارسی یا عربی برنامم مقایسه کنم.



atoorpatkan
سه شنبه 29 آذر 1390, 17:51 عصر
سلام.
من تو دیتابیسم یه فیلدی دارم که مقادیرش فارسی یا عربی ذخیره شده و حرف "ی" هم توش داره.مثلا کلمه " ابتدایی". حالا من مقدار این فیلدم که "ابتدایی" یا راهنمایی یا دبیرستان هستش رو با select خوندم و داخل یه label گذاشتم.مثلا label5. خوب حالا تو برنامم یه if ساده مینویسم مثله این:

if (label5.text=="ابتدایی")
خوب با اینکه label5 من مقدارش ابتدایی هستش که داخل برنامه هم نشون میده ابتدایی هستش اما بازم if اجرا نمیشه. جستجو که کردم گفتن باید collation رو persian کنی تا درست شه.من فیلدم nvarchar هستش اما تو collation فارسی یا همون persian ندارم.فقط arabic دارم.که arabic هم کردم اما باز درست نشد. الان به نظرتون برای اینکه من از این if نتیجه بگیرم باید چیکار کنم؟مرسی.

hamid_shrk
سه شنبه 29 آذر 1390, 18:03 عصر
اگه مقیست رو تو استور پروسیجرت انجام بدی با اضافه کردن یک N به فیلدت مشکل حل میشه :

select * from Table where Name = N'ابتدایی'

sobhan5968
سه شنبه 29 آذر 1390, 18:08 عصر
اخرش نفهمیدیم "ی" چه کاربردی داشت :چشمک:

ایا بعد از سلکت مورد نظر و زمانی که مقدار فیلد واکشی شد و در label5 قرار گرفت , مقدار label5 که روی صفحه نشون داده میشه دقیقا عبارت "ابتدایی" هست ؟

atoorpatkan
سه شنبه 29 آذر 1390, 19:21 عصر
اخرش نفهمیدیم "ی" چه کاربردی داشت :چشمک:

ایا بعد از سلکت مورد نظر و زمانی که مقدار فیلد واکشی شد و در label5 قرار گرفت , مقدار label5 که روی صفحه نشون داده میشه دقیقا عبارت "ابتدایی" هست ؟

خوب بعضی حروف مانند ی و ک تو عربی و فارسی متفاوتن. اره تو سایتم وقتی label5 رو نمایش میدم کاملا صحیح و دقیق نشون میده.اما وقتی میخوام مقایسه کنم مشکل پیش میاد که توضیح دادم تو سوالم


اگه مقیست رو تو استور پروسیجرت انجام بدی با اضافه کردن یک N به فیلدت مشکل حل میشه :

select * from Table where Name = N'ابتدایی'




نه ببینید من تو select کردن مشکلی ندارم.یعنی select میکنم و مقدارشو تو یه label میزارم.الان مشکل اینه که محتوای این label یا همون متن label رو با یه متن دیگه که مقایسه میکنم جواب نمیده.مثلا الان label5 من از دیتابیسم مقدار " ابتدایی" رو برداشته و نگه داشته.پس الان متن label من همون " ابتدایی" هستش که تو دیتابیسم بود. الان وقتی مینویسم :

if (label5.text=="ابتدایی"
جواب نمبده.انگار مساوی نیستن. بچه ها میگفتن بخاطره همون مشکل فارسی و عربی بودن حرف "ی" هستش.

rahmatr
سه شنبه 29 آذر 1390, 21:22 عصر
شما باید مشکل رو به صورت ریشه ای حل کنید.
باید در بانک اطلاعاتی و برنامه اجازه حضور ی و ک عربی را ندهید. بانک اطلاعاتی را اصلاح کنید که همه ی و ک ها فارسی باشند. در برنامه هم هنگام ورود اطلاعات از کاربر، رشته ورودی را برای ی و ک جستجو کنید و اصلاح کنید.

در ضمن آنطور که من برداشت کردم، شما از کلمات ابتدایی و دبیرستان و ... به صورت کلیدهایی که نشان دهنده گروههایی هستند استفاده می کنید و به همین دلیل در کد مجبور به مقایسه شده اید.
اگر اینگونه است، کار اشتباهی است. می توانید از یک فیلد int به صورت id در همان table در بانک اطلاعاتی و به صورت enum در کد استفاده کنید.

Mostafa_Dindar
سه شنبه 29 آذر 1390, 21:45 عصر
سلام ،

باید نحوه استفاده از موتور جستجو گر گوگل را بیاموزید در غیر اینصورت به مشکل برخواهید خورد . لطفا اینجا (http://www.dotnettips.info/2009/01/blog-post_13.html)را ملاحظه بفرمائید .

موفق باشید