نمایش نتایج 1 تا 24 از 24

نام تاپیک: مشکل در جستجو با حرف (ی)

  1. #1

    مشکل در جستجو با حرف (ی)

    دوستان عزیز خسته نباشید
    من دارم یه پروژه می نویسم که یه مشکل داره تو جستجو و اونم اینه که تو تکست که یه نامو یعنی اسمو می گیره تا موقعی که حرف ی رو وارد نکرده داخل گرید اطلاعات فیلتز شده رو نمایش میده اما به محض ورود حرف ی همه اطلاعات داخل گرید خالی میشه و هیچی نشون نمیده . دیتا بیسم sql 2000 و با C#‎ کار میکنم اینم کدی که نوشتم .


    DataSet
    ds11 = newDataSet();
    dap.SelectCommand =
    newSqlCommand();
    dap.SelectCommand.Connection = connect;
    dap.SelectCommand.CommandText =
    "select " +
    "sabt.id,ltrim(rtrim(sabt.name))+' '+ltrim(rtrim(sabt.family)),sefareshat.codes," +
    "sefareshat.mozos,sefareshat.tedads,sefareshat.tar ikhss," +
    "sefareshat.tarikhts,sefareshat.mablaghbs,sefaresh at.mablaghkols" +
    ",sefareshat.tozihats,sefareshat.tahvils " +
    "from sefareshat " +
    "inner join sabt" +
    " on sabt.id=sefareshat.id" +
    " where sabt.family like '%" + textBoxX86.Text + "%' and sabt.name like '%" + textBoxX15.Text +
    "%' and sefareshat.codes like '%" + textBoxX82.Text + "%'";
    connect.Open();
    dap.Fill(ds11,
    "code10");
    SqlDataReader fdr = dap.SelectCommand.ExecuteReader();
    dataGridViewX2.DataSource = ds11;
    dataGridViewX2.DataMember =
    "code10";
    dataGridViewX2.AutoGenerateColumns =
    true;
    dataGridViewX2.Columns[0].HeaderText =
    "کد مشتری";
    dataGridViewX2.Columns[1].HeaderText =
    "سفارش دهنده";
    dataGridViewX2.Columns[2].HeaderText =
    "كد سفارش";
    dataGridViewX2.Columns[3].HeaderText =
    "موضوع";
    dataGridViewX2.Columns[4].HeaderText =
    "تعداد";
    dataGridViewX2.Columns[5].HeaderText =
    "تاريخ سفارش";
    dataGridViewX2.Columns[6].HeaderText =
    "تاريخ تحويل";
    dataGridViewX2.Columns[7].HeaderText =
    "بيعانه";
    dataGridViewX2.Columns[8].HeaderText =
    "مبلغ كل";
    dataGridViewX2.Columns[9].HeaderText =
    "توضيحات";
    dataGridViewX2.Columns[10].HeaderText =
    "تحويل داده شده";
    connect.Close();


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

  2. #2
    کاربر دائمی آواتار mohammad diba
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    تهران
    سن
    42
    پست
    364

    نقل قول: مشکل در جستجو با حرف (ی)

    با سلام
    من هم همین مشکل رو دارم البته می دونم که به خاطر فارسی ساز نصب شده ویندوزه- البته من با (ک) هم مشکل دارم . اگه کسی برای حل این مشکل راه حلی داره ممنون می شم بگه.

  3. #3
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تبریز
    پست
    159

    نقل قول: مشکل در جستجو با حرف (ی)

    دوستان عزیز این مشکل به علت تفاوت حرف ی در زبان عربی و فارسی و تعدد حالتهای این حرف است . برای حل این مشکل یا باید بانک خود را آپدیت کنید و یا یک روش راحتتر این است که وقتی در جستجوی شما حرف ی به میان آمد در رشته خود پیمایش کنید و کلیه حرفهای ی موجود را با یک حرف ی ( که آنرا با کد اسکی اش معرفی و انتخاب میکنید ) تعویض کنید و با همین حرف ی اطلاعات را سرچ و یا ذخیره کنید به عبارتی دیگر وقتی اطلاعاتی را میخواهید در بانکتان بریزید ابتدا آنرا با یک تابعی که برای منظور فوق تعریف کرده اید پیمایش کنید و حرفهای ی موجود را با حرف ی مخصوص و مشخص شده ( توسط کد اسکی) تعویض کنید و سپس در بانکتان ذخیره کنید و در هنگام جستجو هم برعکس .
    البته اگر بانکتان در sql باشد با انتخاب Collation مناسب (Arabic_CI_AS) فکر کنم مشکتان حل شود و یک موضوع دیگر هم این که اگر ذخیره و جستجوی اطلاعات در یک سیستم انجام شود مشکلی وجود نخواهد دشات تازمانی که ویندوز آن تعویض شود .

  4. #4
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: مشکل در جستجو با حرف (ی)

    سلام دوستان
    برای رفع این مشکل در همه ی فرم های پروژتان keypreview = true قرار دهید و کد زیر را در رویداد keypress فرمتان اضافه کنید تا هم در زمان ثبت کردن اطلاعات و هم در زمان جستجو و کلاً در همه ی زمانها وقتی ی و ک عربی وارد کرد به ی و ک فارسی تبدیل شود و وارد بانک شود


    در vb:


    If e.KeyChar = "ي"Then
    e.KeyChar = "ی"
    EndIf
    If e.KeyChar = "ك"Then
    e.KeyChar = "ک"
    EndIf




    در C#‎


    if (e.KeyChar == 'ي') e.KeyChar = 'ی';
    if (e.KeyChar == 'ك') e.KeyChar = 'ک';


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

    دوستان اگر روش بهتری دارند بفرمایند

  5. #5

    نقل قول: مشکل در جستجو با حرف (ی)

    مرسی از جوابتون دوست عزیز
    میشه بیشتر توضیح بدید دقیقا این keypreview رو کجا true کنم >

  6. #6

    نقل قول: مشکل در جستجو با حرف (ی)

    دوست عزیز من یادمه دز دیتابیس از چنین چیزی Arabic_CI_AS استفاده می کردیم ولی کجاشو یادم نیست اگه میشه یه توضیح بدید که این Collationو باید به کجای دیتا بیس alter کنم . ضمن اینکه اگر بشه با یه مثال توضیح بدید خیلی ممنون میشم .
    آخرین ویرایش به وسیله mahyar-m : جمعه 14 فروردین 1388 در 23:46 عصر

  7. #7
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: مشکل در جستجو با حرف (ی)

    سلام دوست عزيز
    براي true كردن keypreview فقط كافي است كه فرم خود را انتخاب كنيد و در پنجره‌ي مشخصات فرم keypreview را پيدا كرده و مقدار آن را برابر true قرار دهيد
    و يا در رويداد فرم لود فرمتان form_load مد زير را بنويسيد:


    Me.KeyPreview = True



  8. #8
    کاربر دائمی
    تاریخ عضویت
    مهر 1386
    محل زندگی
    تبریز
    پست
    159

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط mahyar-m مشاهده تاپیک
    دوست عزیز من یادمه دز دیتابیس از چنین چیزی Arabic_CI_AS استفاده می کردیم ولی کجاشو یادم نیست اگه میشه یه توضیح بدید که این Collationو باید به کجای دیتا بیس alter کنم . ضمن اینکه اگر بشه با یه مثال توضیح بدید خیلی ممنون میشم .
    دوست عزیز کافی است در محیط sql managment روی نام دیتابیس راست کلیک کرده و properties را انتخاب کنبد از ستون سمت چپ options را انتخاب کنید و در موارد ظاهر شده در سمت راست میتوانید حالت Arabic_CI_AS را انتخاب کنید

  9. #9
    کاربر دائمی آواتار afsharm
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    http://paysa.ir
    پست
    255

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط rnm123 مشاهده تاپیک
    البته اگر بانکتان در sql باشد با انتخاب Collation مناسب (Arabic_CI_AS) فکر کنم مشکتان حل شود و یک موضوع دیگر هم این که اگر ذخیره و جستجوی اطلاعات در یک سیستم انجام شود مشکلی وجود نخواهد دشات تازمانی که ویندوز آن تعویض شود .
    تغییر Collation نمی‌تواند این مشکل را حل کند. Collation روی مسائلی مثل نحوه سورتینگ (order by) و رفتار بعضی توابع استرینگی داخل خود SQL تاثیر می‌گذارد.

    همه راه حل‌های ارائه شده مشکل جستجو را حل می‌کنند ولی راه حل جامع آن استفاده از «جستجوی هم ارز» است. این روش جستجو در متون «یونیکد» به خوبی توضیح داده شده‌اند و منظور از آن این است که در جستجو بین حالات مختلف حرف «ی» تفاوتی قائل نشویم. مثلا همه حروف «ی، ي، ئ، ى» که چهار کد یونیکد متفاوت دارند یکی در نظر گرفته شوند. به عنوان مثال دیگر می‌توان «ک، ك» که اولی فارسی و دومی عربی است را عنوان کرد. اگر کمی دقت کنید جستجوی هم ارز در گوگل به خوبی استفاده می‌شود. در گوگل فرقی ندارد که به دنبال «ایرانی» بگردید یا «ايراني»، گوگل همه نتایج مشابه را به شما نشان می‌دهد.

  10. #10

    نقل قول: مشکل در جستجو با حرف (ی)

    دوستان عزیز از همتون ممنونم ولی مشکل من هنوز حل نشده !!!

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

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

    خیلی ممنون از همتون که وقت میذارین و پاسخ سئوال من رو میدید .

  11. #11
    کاربر دائمی آواتار newgoldenman
    تاریخ عضویت
    آبان 1385
    محل زندگی
    همشهري حضرت معصومه (س)
    پست
    367

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط mahyar-m مشاهده تاپیک
    دوستان عزیز از همتون ممنونم ولی مشکل من هنوز حل نشده !!!

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

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

    خیلی ممنون از همتون که وقت میذارین و پاسخ سئوال من رو میدید .
    سلام دوست عزیز

    توی كدی كه نوشتی، اگه بدین صورت عمل كنی، ایشالا مشكلت حل میشه:
    where sabt.family like N'%" + textBoxX86.Text + "%'


    با تشكر از آقای مداح

    موفق باشید.

  12. #12
    کاربر دائمی آواتار afsharm
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    http://paysa.ir
    پست
    255

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط mahyar-m مشاهده تاپیک
    من هم از colltion arabic استفاده کردم هم از جایگزینی اما متاسفانه بازم جواب نداد تو هر ویندوزی هم که بگین چک کردم بازم نشد که بگیم مشکل از فارسی ساز باشه یا از ویندوز . نمیدونم باید چی کار کنم .
    بهتره کارتون را دیباگ کنید. هم برنامه سی‌شارپ را و هم Queryهای ارسالی به SQL Server را. برای دیباگ برنامه دات نت ببینید در هر مرحل چه کاراکتری در متغیرها ذخیره، دریافت یا ارسال می‌شه. برای Queryها هم از SQL Server Profiler استفاده کنید.
    خود من در یک موقعیت مشابه برای آنکه بفهمم هر کاراکتری دققیقا کدام حرف یونیکد است، کد اسکی و هگز آن چیست، شکل آن در فونت‌های مختلف چیست و اسم رسمی آن در یونیکد چیست مجبور شدم یک برنامه ریزه میزه بنویسم. ممکنه این برنامه هم به دردت بخوره. آدرسش اینه: http://fardis.codeplex.com/
    -------
    نقل قول نوشته شده توسط mahyar-m مشاهده تاپیک
    میشه دز مورد جستجوی هم ارز بیشتر توضیح بدید یا حداقل یه منبعی یا تیکه کدی یا سمپلی چیزی بدین .
    پیاده سازی جستجوی هم ارز کار ساده‌ای نیست. برای این کار معمولا از کتابخانه‌هایی که گروه‌های خاصی نوشته‌اند استفاده می‌شود. و بعید می‌دانم که فعلا چیزی برای زبان فارسی ایجاد شده باشد.

  13. #13
    کاربر دائمی آواتار zoofa
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    اصفهان
    سن
    34
    پست
    287

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط mahyar-m مشاهده تاپیک
    دوستان عزیز از همتون ممنونم ولی مشکل من هنوز حل نشده !!!
    دوست شما باید تمام ی و ک هایی که در بانک به زبان عربی ثبت شده است را به ی و ک فارسی جایگزین کنید و با اون کدی که گفتم در رویداد keypress بنویسید مشکلتان حل می شود

  14. #14
    کاربر جدید
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    4

    نقل قول: مشکل در جستجو با حرف (ی)

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

    http://www.eslamifar.com/index.php/archives/88

    با استفاده از مطلب مندرج در سایت خودم ... دیگر نیازی به یکسان سازی ی و ک در بانک اطلاعاتی نیست ...

    خودم خیلی دنبال این موضوع گشتم تا به اینجا رسیدم ... به نظرم که این تنها راه حل برای جستجو در بانک اطلاعاتی است.
    خوشحال میشم نظر شما رو هم بدونم تا به عنوان یک تازه کار از تجربیات دیگران هم استفاده کنم.
    آخرین ویرایش به وسیله pardeew : شنبه 24 مهر 1389 در 13:16 عصر دلیل: اضافه کردن توضیح ...

  15. #15

    نقل قول: مشکل در جستجو با حرف (ی)

    سلام دوست من،
    در تکمیل پاسخ دوستان اینجا رو هم ببین.
    http://vahidnasiri.blogspot.com/2009...g-post_13.html
    کاملترین روش برای این مشکل هست که تا حالا دیدم.
    موفق باشی

  16. #16
    کاربر جدید
    تاریخ عضویت
    آبان 1385
    محل زندگی
    تهران
    پست
    4

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط mn_zandy63 مشاهده تاپیک
    سلام دوست من،
    در تکمیل پاسخ دوستان اینجا رو هم ببین.
    http://vahidnasiri.blogspot.com/2009...g-post_13.html
    کاملترین روش برای این مشکل هست که تا حالا دیدم.
    موفق باشی
    دوست عزیز ... مطلب شما رو قبلا خونده بودم ... مطمئنا این هم یک روش برای یکسان سازی حروف در دیتابیس می باشد که هنگام جستجو نیز حروف همانند سازی می شوند و مشکلی برای جستجو به وجود نمی آید ... ولی کدی که من در سایتم گذاشتم فرقی نمی کنه که با چه حروف ی و ک در دیتابیس یا در عبارت جستجو، مواجه شود .... به هر حال اگر بشه کدی که شما در سایتتون گذاشتید به صورت اتوماتیک هنگام Insert و یا update عمل کنه خیلی بهتره ...

    موفق باشید.
    آخرین ویرایش به وسیله pardeew : چهارشنبه 12 آبان 1389 در 08:18 صبح دلیل: غلط املایی :)

  17. #17

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط pardeew مشاهده تاپیک
    دوست عزیز ... مطلب شما رو قبلا خونده بودم ... مطمئنا این هم یک روش برای یکسان سازی حروف در دیتابیس می باشد که هنگام جستجو نیز حروف همانند سازی می شوند و مشکلی برای جستجو به وجود نمی آید ... ولی کدی که من در سایتم گذاشتم فرقی نمی کنه که با چه حروف ی و ک در دیتابیس یا در عبارت جستجو، مواجه شود .... به هر حال اگر بشه کدی که شما در سایتتون گذاشتید به صورت اتوماتیک هنگام Insert و یا update عمل کنه خیلی بهتره ...

    موفق باشید.
    سلام دوست من
    البته این آدرس، آدرس سایت بنده نیست.

    اینجا دو تا رویکرد متفاوت هست.
    اول اینکه موقع درج اطلاعات داخل دیتابیس اجازه درج ی و ک متفاوت ندی و عمری رو آسوده بخوابی.
    دوم اینکه موقع جستجو هر دو تا رو جستجو کنی.

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

    بعد از اون این بحث پیش میاد که حالا اومدیم و تا الآن که این مورد رو دقت نکرده بودیم یه سری ی و ک متفاوت داخل دیتابیس داریم. در این صورت با کدی که در ادامه متن توضیح داده شده میتونی کل ی و ک های موجود رو اصلاح کنی.


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

    موفق باشی
    آخرین ویرایش به وسیله mn_zandy63 : یک شنبه 23 آبان 1389 در 23:57 عصر دلیل: غلط املایی ;)

  18. #18

    نقل قول: مشکل در جستجو با حرف (ی)

    - در هنگام مقایسه در دستورات از N استفاده شود. مانند


    select * from student where name = N'علي'

  19. #19

    نقل قول: مشکل در جستجو با حرف (ی)

    با سلام و تشکر از جوابتان
    من هم این مشکل رو دارم فکر کنم کدی که در بالا نوشتید بصورت ذیل صحیح می باشد یعنی ما حرف ی و ک را از همان ابتدا تبدیل به عربی بکنیم و در موقع جستجو نیز بدنبال يو ك عربی باشیم.من این حالت رو انتخاب کردم و جواب گرفتم. با تشکر
    سعید.
    if (e.KeyChar == 'ی') e.KeyChar = 'ي';
    if (e.KeyChar == 'ک') e.KeyChar = 'ك';

  20. #20

    نقل قول: مشکل در جستجو با حرف (ی)

    با سلام خدمت دوستان عزیز
    من اطلاعاتم رو از فایل اکسل مخونم و به صورت دستی اطلاعات وارد نمیشن. اینجا باید چه کنم؟

  21. #21
    کاربر تازه وارد
    تاریخ عضویت
    دی 1389
    محل زندگی
    وارنا
    پست
    69

    نقل قول: مشکل در جستجو با حرف (ی)



    سلام مشکل به راحتی و صد درصد قابل حل است فقط نکته ای که اینجانب به آن ایمان دارم این است که مهندسین مایکروسافت هیچ راه غیر قابل حلی برایشان نیست و هیچگاه برنامه نویسی را به حدی سخت نمی کنند که کاربر بخواهد ابتدا Replace کند بعد یه کاردیگه و بعد ..........
    راه حل به این شکل است که دقیقا قبل از like از حرف N استفاده کنید
    مثال
    SELECT * FROM tbl WHERE col LIKE N'%ی%'

  22. #22

    نقل قول: مشکل در جستجو با حرف (ی)

    سلام
    مشکل من با حرف ی و ي حل شده.
    میگم شاید به درد کسی خورد

    این راه حل ربطی به حروف ک و ك نداره و جواب نمیده.

    فیلدی که میخواید عملگر LIKE رو روش اعمال کنید به NCHAR تبدیل کنید:
    مقدار سمت راست عملگر LIKE رو تبدیل کنید یا نه فرقی نمیکنه. اولش N بذارید یا نذارید هم فرقی نمیکنه.

    use [Statistics]
    go
    SELECT
    tblPersonnels.ID, tblPersonnels.fldYeganID, tblYegans.fldName AS fldYeganName, tblPersonnels.fldPersNo,
    tblPersonnels.fldGrade, tblPersonnels.fldName, tblPersonnels.fldFamily,
    tblPersonnels.fldDescription
    FROM tblPersonnels LEFT OUTER JOIN tblYegans ON tblPersonnels.fldYeganID = tblYegans.ID

    WHERE
    CAST(tblPersonnels.fldGrade + ' ' + tblPersonnels.fldName + ' ' + tblPersonnels.fldFamily AS VARCHAR)
    LIKE '%ی%'


    خروجیش شامل مقادیر دارای «ی» و «ي» همزمان خواهد بود :)
    ضمنا من همیشه توی طراحی جدول هام برای فیلدهای رشته ای، نوع nvarchar(max) استفاده می کنم و برای nchar و text هیچ آزمایشی انجام ندادم.

  23. #23

    نقل قول: مشکل در جستجو با حرف (ی)

    سلام ممنونم مشکل من حل شد فقط نکته ای که در این کد باید رعایت شود این است که بین حرف N و علامت ' فاصله نباشد.

  24. #24

    نقل قول: مشکل در جستجو با حرف (ی)

    نقل قول نوشته شده توسط newgoldenman مشاهده تاپیک
    سلام دوست عزیز

    توی كدی كه نوشتی، اگه بدین صورت عمل كنی، ایشالا مشكلت حل میشه:
    where sabt.family like N'%" + textBoxX86.Text + "%'


    با تشكر از آقای مداح

    موفق باشید.
    سلام ممنونم مشکل من حل شد فقط نکته ای که در این کد باید رعایت شود این است که بین حرف N و علامت ' فاصله نباشد.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •