# Native Code > برنامه نویسی در 6 VB > مطالب مرتبط با بانکهای اطلاعاتی در VB6 >  سلام باز هم مشکل ی و ک

## khadem1386

مشکل ی و ک در دیتا بیس ها و جستو توسط برنامه ها چندین و چند بار در این سایت مطرح شد.

ولی توصیه ها دوستان نتونسته مشکل من را برطرف کنه.

این کد کوئری من است. که سرچ انجام می دهم ولی کار نمی کنه

Me.Adodc1.RecordSource = "select  * from Table1 where Fname like '%" & txt & "%'"


حالا من به جای txt این چیزها را گذاشتم. که نوتونسته پیدا کنه؟

مهدی
ملوک
Chr(236)
Chr(237)


هیچ کدام را پیدا نمیکنه.

یک برنامه دیگه دارم که با دات نت وبی 2088 نوشتم او می تونه براحتی سرچ انجام بده
ولی با vb6 نمی دونم چرا با این فایل اکسس این مشکل را دارم

من قبلا هم با همین مشکل روبروشدم در وبی دات نت 2005
که مثلا در مورد ی این مشکل با این کد برطرف شد

ddd1 = Replace(ddd, ChrW(1740), ChrW(1610))
یا چیزی شبیه به این ولی این بار این کدها مشکل من را حل نمی کنند

txt = Replace(txtText2.Text, Chr(152), Chr(223))
txt2 = Replace(txt, Chr(237) & "", Chr(236) & "")

یا 
txt2 = Replace(txt, Chr(236) & "", Chr(237) & "")

همانطور که من حتی خود کد  Chr(237)  یا  Chr(236) را هم مستقیما سرچ می کنم ولی جوابی نمی گیرم.

 برنامه ام احتیاج به پابلیش نداره و یوزم یکی دو نفر خواهد بود

یکی از دوستان در توصیه هاشون از 
N استفاده کرده که هرچه تلاش می کنم شاید اون بتونه به من کمک کنه بد تر error میده




> *xxxxx_xxxxx* مدیر بخش
> 
> البته اگر  قبل از اولین علامت % علامت *N!* رو قرار بدید فکر می کنم مشکل حرف ی حل شه.


نمی دونم N توی اکسس هم کار می کنه یا نه ولی هرجوری می خوام به کوئریم بزنم نمی شه یا اصلا به چه دردی می خوره

راستی کوئری خودم را بصورت fillter را نیز امتحان کردم 
ولی باز جوابی نمی گیرم.

Me.Adodc1.Recordset.Filter = "Fname like '%" & txtText3 & "%'"

با تشکر

----------


## xxxxx_xxxxx

> نمی دونم N توی اکسس هم کار می کنه یا نه ولی هرجوری می خوام به کوئریم بزنم نمی شه یا اصلا به چه دردی می خوره


دلیل استفاده از پیشوند N این هست که به sql بفهمونیم عبارت مقابل حاوی کاراکترهایی از Unicode هست.
نمی دونم تو اکسس هم جواب میده یا نه.

ولی همون جایگزین کردن کاراکترها جواب میده. این دستور حرف 'ك' فارسی رو جایگزین 'ک' عربی میکنه:

txt1.Text = Replace(txt1.Text, Chr(223), Chr(152))

----------


## khadem1386

با تشکر

می شه به این کد حرف N را اضافه کنید. تا syntax ش دسم بیاد ؟

Me.Adodc1.RecordSource = "select  * from Table1 where Fname like '%" & txt & "%'"

ولی مشکل من اینکه وقتی حتی کد را مستقیما سرچ می کنم هم کوئری ام کار نمی کنه به عنوان مثال: این کد ها هیچ رکوردی را برنمی گردونه


Me.Adodc1.RecordSource = "select  * from Table1 where Fname like '%" & chr(236) & "%'"
Me.Adodc1.RecordSource = "select  * from Table1 where Fname like '%" & chr(237) & "%'"

در صورتی که من انتظار دارم که خیلی از نامها که توی آنها حرف ی به کار رفته را نشان بدهد.
و البته ک هم به همین ترتیب

----------


## xxxxx_xxxxx

> می شه به این کد حرف N را اضافه کنید؟


نحوه استفاده N با Like به این شکل هست:

Me.Adodc1.RecordSource = "select  * from Table1 where LTRIM(RTRIM(Fname)) like '%" & txt & "%'"



> ولی مشکل من اینکه وقتی حتی کد را مستقیما سرچ می کنم هم کوئری ام کار نمی کنه


اگه میشه یه قطعه برنامه کوچیک همراه با بانک رو اینجا بزارید.

----------


## khadem1386

سلام:
این ستینگ زبان خارجی من هست:


و برنامه هم را کوچیک کردم و در پایین بصورتrar گذاشتم.
حرف ک خود بخود درست شد!! حرف ی هنوز ایراد داره. که با کدینگ و فیلتر کردن chr نیز اثری نمی کنه.
روی یک pc دیگه هم امتحان کردم و همین نتیجه را گرفتم
مثلا سرچ کنید کلمه سلیمان یا ی خالی 

با تشکر از شما

----------


## xxxxx_xxxxx

شاید بتونید با تغییر فونت علامت های عربی رو از روی حروف حذف کنید اما کد حروف همون کد میمونه.

پیشنهادی که من می کنم این هست که توی دیتابیس همه حروف 'ک' و 'ی' به صورت عربی استفاده شده باشه و بعد هم تو برنامه تون برای جستجو اگر حرف 'ی' فارسی بود به عربی تبدیلش کنید. برای درج تو دیتابیس هم همینطور.
حالا برای حذف علامت های عربی از روی حروف همین تغییر فونت کار خوبی هست.

----------


## khadem1386

> پیشنهادی که من می کنم این هست که توی دیتابیس همه حروف 'ک' و 'ی' به صورت عربی استفاده شده باشه و بعد هم تو برنامه تون برای جستجو اگر حرف 'ی' فارسی بود به عربی تبدیلش کنید. برای درج تو دیتابیس هم همینطور.


تشکر از پاسخ شما
می شه کمی بیشتر توضیح بدید.

نمی دونم شما برنامه من را دید یا نه 
من الان نمی دونم که توی دیتا بیسم اطلاعات ی و ک به صورت عربی هست یا فارسی 

و اگر عربی بود چه کاری باید انجام بدم و اگر فارسی بود چه کاری باید انجام بدم 

البته اطلاعات دیتابیس من خیلی طولانی است.  نمی شه دوباره عوضش کرد.

من با تغییر فونت قصد زیبا سازی را دارم و البته همانطور گفتید  می دانم که قضیه ک و ی خیلی بنیادی تر از فونت عوض کردن می باشید
ولی دقیقا نمی دانم مشکل برنامه من در چیست.
چون من قبلا هم این مشکل را داشتم ولی با عوض کردن کد اسکی هنگام سرچ کردن، مشکل برطرف می شد . البته اون تجربه vb.net بود.



با تشکر

----------


## xxxxx_xxxxx

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

txt = Replace(txt, Chr(152), Chr(223))

----------


## khadem1386

سلام :
تشکر از وقت شما
اینجور که من ازگفته های شما فهمیدم
هر چند حرف ک را می شه با کد نویسی درست کرد ولی
 حرف ی هیچ چاره ای نداره 
و باید دوباره توی دیتا بیس وارد بشه.

نه؟

ولی دیتا بیس من خیلی بزرگ و قبلا پرشده و نمی شه اطلاعات را دوباره وارد کرد.

اینجور که شما می گویید باید همه ی ی ها را بوسیله 
shift +X زده بشه ؟
هزارن خط دیتا بیس هست 
آیا هیچ راهی هنگام سرچ کردن نیست؟

----------


## lordarma

چطوره یک برنامه فرعی بنویسید تا دیتابیس رو اصلاح کنه؟
با همین تابع و کد سرچ در دیتابیس می شه این برنامه رو ساخت...
txt = Replace(txt, Chr(152), Chr(223))

----------


## khadem1386

این چیزی که نوشتید برای حرف ک است
برای حرف ی کار نمی کنه یعنی اگر کار می کرد که باید توی سرچ هم کار کنه دیگه:
این کد مهمه که باز داره اذیت می کنه

txt2 = Replace(txt, Chr(237) & "", Chr(236) & "")

----------

