ورود

View Full Version : سلام باز هم مشکل ی و ک



khadem1386
پنج شنبه 08 بهمن 1388, 10:46 صبح
مشکل ی و ک در دیتا بیس ها و جستو توسط برنامه ها چندین و چند بار در این سایت مطرح شد.

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

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


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 (http://www.barnamenevis.org/forum/member.php?u=46030) مدیر بخش

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

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

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


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

با تشکر

xxxxx_xxxxx
پنج شنبه 08 بهمن 1388, 14:55 عصر
نمی دونم N توی اکسس هم کار می کنه یا نه ولی هرجوری می خوام به کوئریم بزنم نمی شه یا اصلا به چه دردی می خوره

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

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


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

khadem1386
جمعه 09 بهمن 1388, 00:39 صبح
با تشکر

می شه به این کد حرف 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
جمعه 09 بهمن 1388, 01:17 صبح
می شه به این کد حرف N را اضافه کنید؟
نحوه استفاده N با Like به این شکل هست:


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


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

khadem1386
یک شنبه 11 بهمن 1388, 11:00 صبح
سلام:
این ستینگ زبان خارجی من هست:
http://www.barnamenevis.org/forum/attachment.php?attachmentid=43401&stc=1&d=1264965541

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

با تشکر از شما

xxxxx_xxxxx
یک شنبه 11 بهمن 1388, 18:45 عصر
شاید بتونید با تغییر فونت علامت های عربی رو از روی حروف حذف کنید اما کد حروف همون کد میمونه.

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

khadem1386
دوشنبه 12 بهمن 1388, 09:09 صبح
پیشنهادی که من می کنم این هست که توی دیتابیس همه حروف 'ک' و 'ی' به صورت عربی استفاده شده باشه و بعد هم تو برنامه تون برای جستجو اگر حرف 'ی' فارسی بود به عربی تبدیلش کنید. برای درج تو دیتابیس هم همینطور.


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

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

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

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

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



با تشکر

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


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

khadem1386
سه شنبه 13 بهمن 1388, 12:01 عصر
سلام :
تشکر از وقت شما
اینجور که من ازگفته های شما فهمیدم
هر چند حرف ک را می شه با کد نویسی درست کرد ولی
حرف ی هیچ چاره ای نداره
و باید دوباره توی دیتا بیس وارد بشه.

نه؟

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

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

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

khadem1386
چهارشنبه 14 بهمن 1388, 11:49 صبح
این چیزی که نوشتید برای حرف ک است
برای حرف ی کار نمی کنه یعنی اگر کار می کرد که باید توی سرچ هم کار کنه دیگه:
این کد مهمه که باز داره اذیت می کنه


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