PDA

View Full Version : سوال: مشكل در جستجوي حرف "ي" و "ی"



soroush_k12
شنبه 23 بهمن 1389, 18:36 عصر
باسلام
در ابتدا بايد بگويم كه ميدانم در اين مورد قبلا در تالار بحثهايي انجام شده است ولي هدفم اين است كه به يك نمونه كاربردي و كامل برسيم.
من يك ديتا بيس دارم كه اطلاعات آن از قبل پرشده و در آن هم حرف "ي" و هم حرف "ی" وجود دارد. من ميخواهم توسط نمونه پيوست جستجو انجام دهم. بدون توجه به اين كه صفحه كليد كاربر حرف "ي" و يا "ی" تايپ ميكند ميخواهم نتيجه جستجو شامل تمام حالات يعني هم حرف "ي" و هم حرف "ی" باشد نه فقط يكي از آنها.چه تغييري بايد در نمونه پيوست صورت گيرد؟
اين مشكل براي حر ف "ك" و "ک" هم دقيقا وجود دارد.
لطفا راهمايي و يا در صورت امكان نمونه را اصلاح بفرماييد.
با تشكر از همه دوستاني كه توجه و راهنمايي مي نمايند.

ryonis
یک شنبه 24 بهمن 1389, 10:43 صبح
باسلام
در ابتدا بايد بگويم كه ميدانم در اين مورد قبلا در تالار بحثهايي انجام شده است ولي هدفم اين است كه به يك نمونه كاربردي و كامل برسيم.
من يك ديتا بيس دارم كه اطلاعات آن از قبل پرشده و در آن هم حرف "ي" و هم حرف "ی" وجود دارد. من ميخواهم توسط نمونه پيوست جستجو انجام دهم. بدون توجه به اين كه صفحه كليد كاربر حرف "ي" و يا "ی" تايپ ميكند ميخواهم نتيجه جستجو شامل تمام حالات يعني هم حرف "ي" و هم حرف "ی" باشد نه فقط يكي از آنها.چه تغييري بايد در نمونه پيوست صورت گيرد؟
اين مشكل براي حر ف "ك" و "ک" هم دقيقا وجود دارد.
لطفا راهمايي و يا در صورت امكان نمونه را اصلاح بفرماييد.
با تشكر از همه دوستاني كه توجه و راهنمايي مي نمايند.

سلام ، من تا حالا چند بار و به روش هاي مختلف اين معضل رو حل كرده ام. چند راه پيشنهادي ساده :
1- مي توانيد با كمي كدنويسي، يك عمليات Replace را بطور مخفي در يكي از فرم ها قرار دهيد. البته بستگي فراواني به ديتابيس تان دارد.



66298

2- استفاده از يك كيبورد مجازي در كنار عبارت جستجو : درحال حاضر در اكثر سيستم هايم،‌بنده از اين روش كمك مي گيرم. بدين صورت كه به كاربر پيشنهاد مي كنيد براي جستجوي بهتر، بجاي استفاده از حروف صفحه كيبورد سيستم، از كيبورد نمايشي شما استفاده نمايد. حتي مي توانيد بجاي يك كيبورد كامل،‌ 4 دكمه جهت Paste كردن حروف پ ي گ ء و ... استفاده نماييد.

لطفاً اگر پيشنهادهاي فوق كمكي به شما نكرد بفرماييد تا ادامه دهيم...

soroush_k12
یک شنبه 24 بهمن 1389, 12:25 عصر
با سلام مجددو تشكر از جناب ryonis
اگر ممكن است نگاهي به نمونه بياندازيد. البته اين نمونه را هم من از همين سايت دانلود كردم و مال خودم نيست.
در صورت تايپ "ی" 2 ركورد و در صورت تايپ "ي" 3 ركورد ديگر پيدا ميشود. در صورتي كه من ميخواهم هر 5 ركورد نمايش داده شود . آيا روشي وجود دارد كه بدون اينكه از كاربر بخواهيم عملي مثلا replace انجام دهد با تايپ حرف "ي" و يا "ی" تمام ركوردهايي كه شامل يكي از اين دو هستند با هم در نتيجه جستجو ظاهرشوند.
ممنونم در صورت امكان نمونه را اصلاح كنيد.
بنده فكر ميكنم اين مشكل در اكثر ديتا بيسهاي فارسي وجود دارد و حل اين مشكل كمك بسيار زيادي به اكثر برنامه نويسان ميكند. با تشكر

stabesh
یک شنبه 24 بهمن 1389, 12:55 عصر
با سلام
اين پست شايد براتون مفيد باشه
http://barnamenevis.org/showthread.php?51987-%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88-%D8%B3%D9%88%D8%B1%D8%B3-%D9%87%D8%A7%DB%8C-%D9%85%D8%B1%D8%A8%D9%88%D8%B7%D9%87&p=1167276&viewfull=1#post1167276
اين مشكل در زمان مرتب سازي هم باعث ميشه ركورد ها درست مرتب نشند بنابراين بهترين راه اينه كه فقط از كاراتر هاي عربي استفاده كنيد به نظر من البته

soroush_k12
یک شنبه 01 اسفند 1389, 18:18 عصر
با سلام
اين پست شايد براتون مفيد باشه
http://barnamenevis.org/showthread.php?51987-%D9%85%D8%B4%DA%A9%D9%84%D8%A7%D8%AA-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D9%88-%D8%B3%D9%88%D8%B1%D8%B3-%D9%87%D8%A7%DB%8C-%D9%85%D8%B1%D8%A8%D9%88%D8%B7%D9%87&p=1167276&viewfull=1#post1167276
اين مشكل در زمان مرتب سازي هم باعث ميشه ركورد ها درست مرتب نشند بنابراين بهترين راه اينه كه فقط از كاراتر هاي عربي استفاده كنيد به نظر من البته
سلام
ممنون از راهنمايي تون ولي كمك زيادي نكرد.
من ميخوام اين جستجو و جايگزيني و يا هر ترفند ديگري كه ميشود زد در ايونت on change تكست باكس search انجام بشه . فكر كنم فقط در اين زمان ميتوان كدي نوشت كه در نتيجه آن با تايپ حرف "ي" و يا "ی" تمام ركوردهايي كه شامل يكي از اين دو هستند با هم در نتيجه جستجو ظاهرشوند.
اگر دوستان نمونه كد و يا نظري دارند لطفا بيان كنند. باتشكر

stabesh
دوشنبه 02 اسفند 1389, 13:35 عصر
سلام
به نظر من شما اگر در ورود اطلاعات کاراکتر های فارسی ی و ک با عربیشون جایگزین کنید باعث میشه که هم در جستجو هم در مرتب سازی مشکلی پیش نیاد
فکر نمیکنم این کار درست باشه که وقتی جستجو انجام بدیم هم دنبال فارسی بگردیم هم عربی فکر کنم گوگل این کار و بعضی از اوقات انجام میده اما همیشه نه یعنی کیبورد من که فارسی هست وقتی سرچ میکنم بعضی وقتا توی نتایجش معادل عربی رو میاره بعضی و قتا هم نه نمیدونم قانونش چیه ولی گوگل مجبوره اگر شما هم مجبورید می تونید این طوری عمل کنید ولی کار جالبی نیست

soroush_k12
پنج شنبه 05 اسفند 1389, 18:59 عصر
سلام
به نظر من شما اگر در ورود اطلاعات کاراکتر های فارسی ی و ک با عربیشون جایگزین کنید باعث میشه که هم در جستجو هم در مرتب سازی مشکلی پیش نیاد
فکر نمیکنم این کار درست باشه که وقتی جستجو انجام بدیم هم دنبال فارسی بگردیم هم عربی فکر کنم گوگل این کار و بعضی از اوقات انجام میده اما همیشه نه یعنی کیبورد من که فارسی هست وقتی سرچ میکنم بعضی وقتا توی نتایجش معادل عربی رو میاره بعضی و قتا هم نه نمیدونم قانونش چیه ولی گوگل مجبوره اگر شما هم مجبورید می تونید این طوری عمل کنید ولی کار جالبی نیست

با سلام و تشكر از جناب stabesh
نمونه شما جالب بود و با زدن دكمه جستجو كاملا درست عمل ميكرد و تمامي نتايج در فرم ديگري نشان داده ميشد.ولي من ميخوام با تكنيكي كه در نمونه پيوستي خودم است نتايج بصورت بلافاصله و در همان فرم از طريق يك ليست باكس و كوري مربوطه انجام گيرد. ولي در نوشن عبارت Criteria‌ مربوط به Query1 اشكال دارم.
من سعي كردم از توابع نمونه FarsiSearch.rar در نمونه خودم استفاده كنم ولي به مشكل برخوردم.
شما در ايونت كليك دكمه جستجو از اين Criteria‌استفاده كرده ايد:
stLinkCriteria = " Lname like '*" & Me.Last & "*' Or Lname like '*" & ChangeToArabicCharFunc(Me.Last) & "*' Or Lname like '*" & ChangeToFarsiCharFunc(Me.Last) & "*' "
ولي در نمونه من كه مجددا با كمي تغييرات پيوست شده است در Criteria كوري Query1 اين عبارت را نوشته ام:
Like "*" & [Forms]![Search]![Search2] & "*" Or Like ''*" & ChangeToArabicCharFunc([Forms]![Search]![Search2]) & "*'' Or Like ''*" & ChangeToFarsiCharFunc([Forms]![Search]![Search2]) & "*''
كه در اجرا error ميدهد.
اگر ممكن است عبارت Criteria كوري Query1 را اصلاح نماييد.
اميدوارم منظورم را رسانده باشم.
با تشكر فراوان از همه دوستان

stabesh
پنج شنبه 05 اسفند 1389, 21:22 عصر
سلام
نمیدونم چرا مشکل داشت کاراکتر ناپیدایی توش بود یا قاطی کرده بود :متعجب: :گیج:
پاک کردم دوباره نوشتم درست شد
در ضمن اون requery در change باعث میشد نشه تایپ کرد در exit نوشتمش دیگه درسته فکر کنم

c4soft
پنج شنبه 05 اسفند 1389, 21:38 عصر
در عجبم چرا این مشکل هیچ وقت برام پیش نیومده !!

soroush_k12
شنبه 07 اسفند 1389, 09:09 صبح
با سلام مجدد و تشكر از جناب stabesh
اينهم نمونه كاملتر و نهايي،
با همكاري شما و اندك تغييراتي از خودم در رويداد on chenge نيز كار ميكند.

abdoreza57
شنبه 24 فروردین 1392, 21:05 عصر
سلام

دوستان خوبم و اساتيد گرانقدر من قبلا براي حل اين مشكل تو رويداد فرم اين كد را وارد ميكردم

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 1610 Or KeyAscii = 1609 Then
KeyAscii = 1740
ElseIf KeyAscii = 1603 Then
KeyAscii = 1705
End If

End Sub
دستوري كه از ورود حروف متفاوت ي و ك جلوگيري ميكنه منتها در حال حاظر ديتا بيسي دارم كه اطلاعات آن از قبل توسط كاربر پرشده و در آن هم حرف "ي" و هم حرف "ی" وجود دارد همين طور حرف ك !!!

در حال حاظر ميشه با همون نمونه پست 10 جستجو انجام داد ولي تصميم دارم كدي را تو فرم قرار بدم كه تمام اين حروف را داخل تيبل يكسان سازي كنه بعد هم طبق همون روال قبليم فايل را تحويل كاربر بدم ...
حسن اين كار اينه كه ديگه مشكلي از تغيير حروف بوجود نمياد

خدا نگهدار

Abbas Amiri
شنبه 24 فروردین 1392, 21:28 عصر
به پست 12 تاپیک زیر مراجعه کنید:
استفاده از کیبرد مجازی برای حروف "ی" و "ک" (http://barnamenevis.org/showthread.php?286460-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%DB%8C%D8%A8%D8%B1%D8%AF-%D9%85%D8%AC%D8%A7%D8%B2%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AD%D8%B1%D9%88%D9%81-quot-%DB%8C-quot-%D9%88-quot-%DA%A9-quot&highlight=chrw)

abdoreza57
شنبه 24 فروردین 1392, 22:07 عصر
سلام

جناب اميري اين خطا از كجا ناشي ميشه
102778
منتظر پاسخ ارزشمندتون هستم

Abbas Amiri
شنبه 24 فروردین 1392, 22:11 عصر
تگهای html که بین </ ...... > قراردارد را حذف کنید