PDA

View Full Version : مشکل سرچ برای دو حرف "ک" و "ی"



monakz
دوشنبه 10 اردیبهشت 1386, 09:39 صبح
سلام،

در بانک(SQL) برای سرچ حرف ک و حرف ی مشکل دارم، چون همونطور که میدونید این حروف با 2 تا key مختلف وارد میشن و ممکنه به عنوان مثال نام خانوادگی "کاشانی" که کاربر زمان سرچ وارد میکنه با همین نام خانوادگی که در بانک وارد شده تفاوت داشته باشه، میخواستم برای یکسان کردن این دو نوع از یک حرف در زمان وارد کردن در بانک و جستجو کمکم کنید.

باسپاس.

ghabil
دوشنبه 10 اردیبهشت 1386, 10:33 صبح
ببین این (ایجاد اختلال در جستجو روی بانک (کلمه های عربی فارسی) ) (http://barnamenevis.org/forum/showthread.php?t=64723) کافیه

monakz
دوشنبه 10 اردیبهشت 1386, 11:50 صبح
ممنونم، خب بله، اینو میدونم که باید ک و ی های عربی رو به فارسی تبدیل کنم، یعنی ابتدا یکبار باید بانکم رو update کنم و بعد از اونهم موقع ورود اطلاعات اونها رو تبدیل به یک فرم یکسان کنم و باز موقع جستجو هم اینکار رو انجام بدم، ولی راستش چطوری رو نمیدونم! اگه ممکنه راهنماییم کنید و یا لینکی در همین مورد برام بفرستید.

ghabil
دوشنبه 10 اردیبهشت 1386, 13:28 عصر
کدوم تیکه رو نمیدونی Update کردن یا تبدیل حروف ؟ ضمنا دیتابیست چیه؟

monakz
دوشنبه 10 اردیبهشت 1386, 13:55 عصر
تبدیل حروف رو!
SQLServer

بازم ممنون

deuce
دوشنبه 10 اردیبهشت 1386, 14:30 عصر
فرض کنید در جدول اعضا member می خواهید نام خانوادگی member_last_name_vc
رو اصلاح کنید :


update member
set member_last_name_vc=replace(member_last_name_vc,N' ک',N'ک')
update member
set member_last_name_vc=replace(member_last_name_vc,N' ی',N'ی')


در delphi نیز بر روی ورودی مورد نظر عین همین کار را انجام دهید :


inputStr := StringReplace(inputStr,'ک','ک', [rfReplaceAll, rfIgnoreCase]);
inputStr := StringReplace(inputStr,'ی','ی', [rfReplaceAll, rfIgnoreCase]);

monakz
دوشنبه 10 اردیبهشت 1386, 15:11 عصر
ممنون؛
میدونم جای این قسمت از سوالم اینجا نیست، ولی نمیخوام تکرارش کنم جای دیگه،

من مشکلم نوشتن کد برای تغییر کدهای یونیکد در زمان ورود هستش.

با سپاس

Touska
دوشنبه 10 اردیبهشت 1386, 15:20 عصر
شما فایل kbdfa.dll رو عوض کنید. همونی که ماله خود Microsoft هست استفاده کنید.

امکان داره یک از برنامه هایی که نصب کردید این فایل رو عوض کرده.

موفق باشید :)

ghabil
سه شنبه 11 اردیبهشت 1386, 00:07 صبح
ممنون؛
میدونم جای این قسمت از سوالم اینجا نیست، ولی نمیخوام تکرارش کنم جای دیگه،

من مشکلم نوشتن کد برای تغییر کدهای یونیکد در زمان ورود هستش.

با سپاس

مگه از دلفی استفاده نمیکنی؟! دلفی در حالت عادی که یونکد رو پشتیبانی نمیکنه.
اما کلا دو راه داری یکی اینکه مثلا روی Editها و هرجایی که کاربر دیتا وارد میکنه یک کد بزاری که حروف رو تبدیل کنه (مثلا روی OnkeyPress کد حرف رو بگیزی و اگر ک فارسی بود به ک عربی تبدیلش کنی البته دیگه نه با StringReplace همون کارکتر به کارکتر) یا اینکه میتونی یک تریگر روی دیتاست بزاری که زمان Update و Insert همین کدی که دوستمون گذاشته(کد SQLی) رو روی دیتاهای جدید اعمال بکنه .
کلا کاره سختی نیست و لی اگر بازم مشکلی داشتی یا نتونستی بگو برات کد بزاریم.

kbdfa.dll هم جواب میده منتخها همیشه باید حواست باشه روی هر کامپیوتری که یک کلاینت نصب میشه این فایل هم به درستی باشه.

shaima
شنبه 16 آبان 1388, 00:28 صبح
سلام

اطلاعات دیتابیس من به با کیبورد عربی وارد شده و من به کمک کدی که تو این تاپیک گفته شده(کد زیر) بود اون رو تبدیل به فارسی کردم, برای حرف ک هیچ مشکلی نیست و قسمت سرچ برنامه به درستی کار می کنه ولی وقتی حرف ی عربی رو به فارسی تبدیل کردم دیگه سرچم جواب نمیده! نمی دونم مشکل از کجاست, ممکنه ربطی به کالکشن دیتابیس داشته باشه؟!



update member
set member_last_name_vc=replace(member_last_name_vc,N' ک',N'ک')
update member
set member_last_name_vc=replace(member_last_name_vc,N' ی',N'ی')

alinikaein
دوشنبه 18 آبان 1388, 17:54 عصر
جواب شما را توي پاسخ شماره 13 از تاپيك زير دادم. فكر مي‌كنم روش خيلي بهتري باشه براتون:

http://barnamenevis.org/forum/showthread.php?p=844404#post844404