PDA

View Full Version : سوال: مشكل با جستجوي فارسي



new_day
سه شنبه 21 خرداد 1387, 21:14 عصر
با سلام خدمت اساتيد
در قسمت InteractiveChange يك txtbox كد جستجو در گرايد كه پايين فرم است نوشته ام كه با وارد كردن هر حرف فاميل انرا در گرايد البته اگر موجود باشه نشان ميده اما با حرف كاف مشكل داره يعني فاميل با كاف داريم اما ميره انتها وقتي دقيق شدم ديدم با توجه به ويندوز من كه mrtهست كد asc152, asc223هر دو كاف ميباشند و هنگام جستجو 223وارد ميشود در حالي كه جداول با كد 152پر شده اند لطفا راهنمايي بفرماييد چكار كنم

rezaTavak
چهارشنبه 22 خرداد 1387, 08:42 صبح
متدی که نوشته اید را طوری تغییر دهید که هر وقت این حرف وارد شد عوضش کند.

IC_prog
چهارشنبه 22 خرداد 1387, 08:54 صبح
در INTERACTIVECHANGE :

IF LASTKEY()=152
KEYBOARD '{BACKSPACE}'
KEYBOARD CHR(223)
ENDIF

البته راه های بهتری هم شاید باشه

mehran_337
چهارشنبه 22 خرداد 1387, 08:54 صبح
خوب می توانید در جدول یک فیلد تمپ داشته باشید که درهر بار جستجو آن فیلد پر شود


REPLACE ALL field2 WITH CHRTRAN(name,CHR(152),CHR(223))

ودر فیلد2 عمل جستجو انجام شود.
یا خودتان را راحت کنید و یک منوی تنظیمات درست کنید که کدام کد مطلوب کاربر است و با زدن دکمه کانورت همه جداول کد 152 تغییر کند و این مسئله با توجه به انتخاب کاربر در ابتدای لودینگ برنامه چک شود (برای همه جداول)
راه دیگر هم اینکه یک دکمه "جستجوی دقیق تر " در سرچ بگذارید و برای اینکه این چک کردن سرعت سرچ را پایین نیاورد فقط با زدن این دکمه فیلد 2 پرشود و جستجو در آن انجام شود.

rezaTavak
چهارشنبه 22 خرداد 1387, 10:32 صبح
راه دیگر هم اینکه kbdfa.dll را بر اساس ویندوز ۹۸ که توسط برخی شرکتها که ساخته شده بگذارید.

javad_hosseiny
چهارشنبه 22 خرداد 1387, 11:01 صبح
همواره برنامه نویسان با دو حرف کاف و یای فارسی مشکل دارند
در ویندوز 98 و تا xp نسخه sp1 مشکلی نبود ، چرا که در صفحه کلید فارسی دو حرف مربوطه به صورت عربی (کاف بی سرکش و یای زیردونقطه دار) بود.
ولیکن در sp2 به بعد بین این دو حرف در صفحه کلید فارسی و عربی تفاوت ایجاد شد (همان تفاوت کد اسکی آنها)
معمولا بهترین حالت آن است که شما سعی کنید مطابق با حروف عربی کار خود را تطبیق دهید (جهت سازگاری با ویندوزهای قبلی و همچنین صفحه کلید های عربی (مخصوصا بر این نکته در محیط تحت وب دقت بیشتری داشته باشید))
کافی است درصورت وجود اطلاعات تمامی اطلاعات را با یک دستور از حروف مربوط جایگزین کنید
مثل:

replace fieldname with CHRTRAN(fieldname,CHR(236)+CHR(152),CHR(237)+CHR(2 23))))

بدین ترتیب نسبت به عدم وجود کاراکترهای موردنظر در اطلاعات موجود اطمینان کسب کرده اید
والبته اگر مدیریت ورود اطلاعات توسط برنامه شما انجام می شود باید دقت کنید که همواره قبل از ذخیره کلیه فیلدهای کاراکتری و یادداشت عمل فوق (جایگزینی دو کاراکتر مربوطه) درمورد محتوی اطلاعات ورودی انجام شود.

و نهایتا به هنگام خروجی نیز به همین راحتی عبارت موردجستجو را قبل از شروع عملیات جستجو (چه توسط دستور seek , locate ... ) توسط تابع مربوطه تغییر دهید.
(به شخصه از تابع ذیل برای این منظور استفاده می کنم)


FUNCTION sp2
PARAMETERS _var_
RETURN CHRTRAN(_var_,CHR(236)+CHR(152),CHR(237)+CHR(223))