مشکل در تفاوت اعداد فارسی و انگلیسی که در ظاهر یکی هستن .. برای جستجو در بانک
با عرض سلام و خسته نباشید خدمت همه دوستان و اساتید سایت.فکر میکنم مشکل از عنوان تاپیک مشخص باشه!ببینید اگه مثلا کاربر توی برنامه یه رکورد ثبت کنه که مثلا محتوای یکی از فیلدها "فیلم۱" باشه.اگه هنگامی که کاربر اون عدد ۱ رو وارد میکنه کیبوردش روی فارسی باشه , هنگامی که میخواد عمل جستجو رو هم انجام بده , توی کادر جستجو باید اون عدد 1 رو در حالی که کیبورد روی انگلیسی هست تایپ کنه. کسی میدونه چطوری میتونم این مشکلو رفع کنم؟ پیشاپیش ممنون.
نقل قول: مشکل در تفاوت اعداد فارسی و انگلیسی که در ظاهر یکی هستن .. برای جستجو در بانک
خب میتونی تکست باکستو جوری کد نویسی کنی که فقط حروف فارسی یا انگلیسی رو بگیره
نقل قول: مشکل در تفاوت اعداد فارسی و انگلیسی که در ظاهر یکی هستن .. برای جستجو در بانک
ممنون از پاسختون.
درسته . ولی مشکل این هست که اون فیلد برای مثلا نام فیلم هست. که کاربر باید حق داشته باشه هم کاراکترهای فارسی و هم انگلیسی وارد کنه. و واسه عدد، کاربر چه کیبوردش رو انگلیسی باشه چه رو فارسی، اون عدد رو فارسی میبینه (چون RightToLeft تکست باکس True هست) و درنتیجه متوجه این تفاوت نمیشه.
ممنون میشم راهنمایی کنید.
نقل قول: مشکل در تفاوت اعداد فارسی و انگلیسی که در ظاهر یکی هستن .. برای جستجو در بانک
نقل قول:
نوشته شده توسط
farboodj1375
با عرض سلام و خسته نباشید خدمت همه دوستان و اساتید سایت.فکر میکنم مشکل از عنوان تاپیک مشخص باشه!ببینید اگه مثلا کاربر توی برنامه یه رکورد ثبت کنه که مثلا محتوای یکی از فیلدها "فیلم۱" باشه.اگه هنگامی که کاربر اون عدد ۱ رو وارد میکنه کیبوردش روی فارسی باشه , هنگامی که میخواد عمل جستجو رو هم انجام بده , توی کادر جستجو باید اون عدد 1 رو در حالی که کیبورد روی انگلیسی هست تایپ کنه. کسی میدونه چطوری میتونم این مشکلو رفع کنم؟ پیشاپیش ممنون.
ُسلام.
چندین راه برای این کار وجود داره. یه راه ساده می تونه چک کردن در سمت برنامه کاربردی شما و در سمت کدهای سی شارپ با استفاده از متد Replace باشه . کد زیر عدد 1 انگلیسی رو جایگزین عدد ۱ فارسی میکنه :
TxtMovie.Text.Replace('۱', '1');
راه بالا در واقع پیشگیری است. اگر هم داده هایی رو دارید که بصورت اعداد فارسی ذخیره شدن، می تونید با کد زیر اونها رو تصحیح کنید (درمان). منظور از MovieName نام فیلدی است که نام فیلم رو نگهداری میکنه :
Update TblMovie Set MovieName = Replace(MovieName,'۱','1')
کدهای بالا رو می تونید در یک خط به سایر ارقام هم تعمیم بدید :
TxtMovie.Text.Replace("۱", "1").Replace('۲','2');
نقل قول: مشکل در تفاوت اعداد فارسی و انگلیسی که در ظاهر یکی هستن .. برای جستجو در بانک
خیلی ممنون از پاسختون . درسته با این روش میشه این مشکلو دور زد.
و یه سوال دیگه . اگه نوع فیلد در یانک اس کیو ال از نوع int باشه و کاربر عدد رو فارسی بخواد ثبت کنه ، برنامه ارور میده . نمیشه عدد فارسی ذخیره کرد؟ باید با همین روش انگلیسیش کنیم حتما؟! راه دیگه ای نداره؟
بازم ممنون از جوابتون.
نقل قول: مشکل در تفاوت اعداد فارسی و انگلیسی که در ظاهر یکی هستن .. برای جستجو در بانک
نقل قول:
نوشته شده توسط
farboodj1375
اگه نوع فیلد در یانک اس کیو ال از نوع int باشه و کاربر عدد رو فارسی بخواد ثبت کنه ، برنامه ارور میده . نمیشه عدد فارسی ذخیره کرد؟ باید با همین روش انگلیسیش کنیم حتما؟! راه دیگه ای نداره؟
بازم ممنون از جوابتون.
اعداد فارسی برای sql server ناشناخته است، بنابراین باید به هر روشی که تمایل دارید (یا سمت سی شارپ یا سمت sql) ورودی های عددی رو کنترل کنید که مقدار صحیح درج بشه.
اگر تعداد جاهایی که باید عدد وارد کنید زیاد هستش برای راحتی کار خودتون یک کلاس بنویسید که نتیجه خروجی اون برگشت اعداد فارسی بصورت انگلیسی هست. اینجوری فقط یکبار کد تبدیل رو می نویسید و دیگه هر بار از دستور Replace استفاده نمی کنید.
موفق باشید.