PDA

View Full Version : سوال: تبدیل حروف عربی داده های ذخیره شده در دیتابیس به فارسی



ma.rad
شنبه 12 آذر 1390, 23:05 عصر
با سلام
یه سری اطلاعات از یک بانک قدیمی خوندم ریختم تو دیتابیس جدید
مشکل اینجاست که بعضی از حروف مثل (ی) تو دیتابیس (ي) ذخیره شده و تو جستجو به مشکل برخوردم
مثلا اگر اسم کسی تو دیتابیس حسین باشه و من برا جستجو اسم حسین بنویسم چیزی پیدا نمی کنه
لطفا راهنمایی کنید:خجالت:

asadegha
شنبه 12 آذر 1390, 23:16 عصر
فکر میکنم اگه از N استفاده کنی درست بشه.
مثلا
INSERT INTO tbl1 (id, name) VALUES(12,N'حسین')

ma.rad
شنبه 12 آذر 1390, 23:38 عصر
داده ها ریخته شده تو دیتابیس- من فقط تو جستجو مشکل دارم
البته داده ها فارسی هستند

asadegha
شنبه 12 آذر 1390, 23:48 عصر
اول باید ی ها رو تبدیل کنی به ی فارسی. از اون به بعد ی درست کار میکنه.

ma.rad
یک شنبه 13 آذر 1390, 10:54 صبح
دوستان نظری ندارن؟

mandanim
یک شنبه 13 آذر 1390, 11:01 صبح
سلام دوست من

روش اول
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar.ToString() == "ی")
{
e.KeyChar = Convert.ToChar("ي");
}
}

روشهای دیگی هم هست که این روش راهترین روشه

ma.rad
یک شنبه 13 آذر 1390, 12:36 عصر
شاید سوالم خیلی ساده باشi
من حدود 70 تا text box دارم نمی تونم برا رویداد key press هرکدوم اینو بنویسم نیاز به یه تابع دارم چطور این تابع رو باید نوشت
مشکل اصلی من دسترسی به e.key..

سوداگر
یک شنبه 13 آذر 1390, 12:49 عصر
میتونی موقع خوندن از Replace استفاده کنی تا ي با ی عوض بشه و بار دیگه بعد از ریختن توی دیتاست، ی با ي عوض بشه و دوباره نتیجه رو به دیتاست(دیتا تیبل) اضافه کنی. فقط کافیه یکبار متدش رو بنویسی. شاید نظرم فنی نباشه ولی اینم یه راهه...

ma.rad
یک شنبه 13 آذر 1390, 12:56 عصر
ممنون نوشتن اون تابع بنظرم روش راحتتری باشه
درمورد نوشتن تابع میتونید کمک کنید؟

asadegha
یک شنبه 13 آذر 1390, 16:10 عصر
واسه یه textbox رویداد keypressبنویس، بعد keypress بقیه تکست باکس ها رو به keypress تکست باکس نوشته شده وصل کن. حل میشه مشکلت.

تابعی که می خوای بنویسی، می خوای چیکار کنه برات؟ خودش بیاد کل دیتابیس رو تغییر بدهو ی ها رو درست کنه یا می خوای وقتی ی نوشتی اون برات ي در نطر بگیره؟؟

سوداگر
یک شنبه 13 آذر 1390, 16:24 عصر
تابعی که می خوای بنویسی، می خوای چیکار کنه برات؟ خودش بیاد کل دیتابیس رو تغییر بده و ی ها رو درست کنه یا می خوای وقتی ی نوشتی اون برات ي در نطر بگیره؟؟
درست نگرفتی عزیز!

من نگفتم کل، دیتابیس رو تغییر بده. گفتم اون Stringی که قراره داخل دستور Select قرار بگیره رو دو بار بهش بدیم یه بار با ي یک بار هم با ی یعنی اونها رو OR کنیم (داخل دستور SQL)

"SELECT c1 FROM spec WHERE c1 =' "+myFunc(strName, true)+"'OR c1='"+myFunc(strName,False)+"'"

خودت مرحمت کن و " ها و ' ها رو درست بنویس(به جای ' باید n\ بکار برده بشه)
اون true و false ورودی متد هست برای اینکه ما دو حالت داریم، یا تبدیل ی به ي یا برعکس.
ولی شاید راهی ساده تر هم باشد که من بلد نیستم! یعنی با دستکاری سیستم طرف، کاری کنید که کلا دکمه D، ی فارسی را تایپ کند!

ma.rad
دوشنبه 14 آذر 1390, 00:15 صبح
دوستان نظر بهتری ندارن؟

Mani_rf
دوشنبه 14 آذر 1390, 11:54 صبح
خب با دستور Update و تابع Replace خود SQL دیتا را درست کن.مطمعنا به شکل قدیمی (عربی) حروف دیگه نیازی نداری، با این کار اطلاعاتت هم یک دست میشه و دوگانگی دروش وجود نداره.

Mani_rf
دوشنبه 14 آذر 1390, 12:06 عصر
به این شکل :
update [TblCustomer] set [FldName] = Replace([FldName],'ی','ي')

ma.rad
یک شنبه 20 آذر 1390, 21:39 عصر
واب نداد مشکل کجاست (ی) ها تو دیتابیس تغییر نمی کنه

ghameshloe
یک شنبه 20 آذر 1390, 22:16 عصر
سلام
از این استفاده کن جواب میده:

UPDATE Members
SET LastName = REPLACE(LastName, N'ي', N'ی')

bozhmehrani
سه شنبه 06 دی 1390, 20:48 عصر
با یه دستور آپدیت ساده هم میشه اطلاعات بانکو تغییر داد

همه اونایی که "ی" به "ي" تغیر کنه

rahmatr
سه شنبه 06 دی 1390, 22:31 عصر
اینجا را ببینید:
مشكل ي و ك فارسي و عربي در يك ديتابيس اس كيوال سرور (http://www.dotnettips.info/2009/01/blog-post_13.html)

سوداگر
پنج شنبه 08 دی 1390, 02:38 صبح
http://barnamenevis.org/showthread.php?320589-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B5%D9%84%D8%A7%D8%AD-%DA%A9%D9%84%D9%85%D8%A7%D8%AA-%D8%B9%D8%B1%D8%A8%DB%8C-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3

elahe197
جمعه 23 خرداد 1393, 14:13 عصر
سلام دوست عزیز واقعا ازت ممنونم . مشکلمو حل کردی .:قلب: