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

نام تاپیک: نمایش مختصری از متن

  1. #1

    نمایش مختصری از متن

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

    ADODataSet1.CommandText:='Select key,title,content From article where content like :m';
    ADODataSet1.Parameters.ParamValues['m']:= '%'+trim(textSearch)+'%';
    DataModule1.ADODataSetSearch1.Open
    DBGridEh1.DataSource:=DataSource1

    ولی مشکلم اینه که کدهای بالا کل متن مقالاتی که شامل آن کلمه خاص است را برای من بازآوری می کند
    در صورتیکه من می خواهم مختصری از متن مقاله که دقیقا با آن واژه خاص شروع می شود را داشته باشم.

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



    و به همین ترتیب تا آخر در گیرید نشون داده بشند تا من بعد به کاربر این امکان را بدم که با فشار این متن مختصر به متن کامل مقاله هدایت بشه

    با تشکر
    ببخشید پر حرفی کردم





  2. #2
    کاربر دائمی آواتار M_Maskout
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    تهران
    سن
    45
    پست
    150

    نقل قول: نمایش مختصری از متن

    سلام
    می‌تونید با استفاده از تابع Left تو متن CommandText استفاده کنید:

    ADODataSet1.CommandText:='Select key,title,Left(content, 30)+''...'' As content From article where content like :m';

  3. #3

    نقل قول: نمایش مختصری از متن

    ضمن تشکر از شما دوست عزیز
    کد شما را تست کردم ولی جواب نگرفتم
    کد شما دسته ای از جستجو های 30 کاراکتری را برای من برگرداند که به عنوان مثال واژه ملکول در آن مقاله بوده نه الزاما در این 30 کاراکتر

    همان طور که در عکس زیر مشادهد می کنید من واژه حسادت را جستجو کردم و می خوام همان طور که در گرید زیر مشاهده می کنید همه موارد جستجو با واژه حسادت شروع بشه که همان طور که می بینید نشده.

    ممنون اگر پاسخ بدید.


    hesadat.jpg

  4. #4
    کاربر دائمی آواتار mohsen24000
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    شهر مقدس قم
    پست
    583

    نقل قول: نمایش مختصری از متن

    این کار رو با Sqlite خیلی راحت میشه انجام داد...

    SELECT snippet(article , '[', ']', '...') FROM article WHERE content MATCH '"حسادت"'

  5. #5
    کاربر دائمی آواتار M_Maskout
    تاریخ عضویت
    اسفند 1387
    محل زندگی
    تهران
    سن
    45
    پست
    150

    نقل قول: نمایش مختصری از متن

    نقل قول نوشته شده توسط hamid_isf_1360 مشاهده تاپیک
    کد شما را تست کردم ولی جواب نگرفتم
    کد شما دسته ای از جستجو های 30 کاراکتری را برای من برگرداند که به عنوان مثال واژه ملکول در آن مقاله بوده نه الزاما در این 30 کاراکتر
    سلام
    کم دقتی بنده رو نادیده بگیرین؛ کدی که گذاشتم اصولاً کار شما رو انجام می‌ده ولی تغییری در اون لازم هست، و شما باید بعد از عبارت As، نام دیگه‌ای (مثلاً subcontent) رو بذارین. منتها در این صورت لازمه از نام جدید به عنوان نام فیلد تو grid استفاده کنید.
    من به قسمت آخر عبارت شما (where content like :m) دقت نکرده بودم.


    ADODataSet1.CommandText:='Select key,title,Left(content, 30)+''...'' As subcontent From article where content like :m';

  6. #6
    کاربر دائمی آواتار mohsen24000
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    شهر مقدس قم
    پست
    583

    نقل قول: نمایش مختصری از متن

    کم دقتی بنده رو نادیده بگیرین؛ کدی که گذاشتم اصولاً کار شما رو انجام می‌ده
    با این وصف باز هم مشکل ایشان حل نمی شود...!!!
    چون که شما 30 کاراکتر اول عبارت مورد جستجو رو بر میگردونید ولی سوال کننده به دنبال نمایش مثلا 30 کاراکتری است که با کلمه مورد جستجو شروع می شود، هستند.

  7. #7
    کاربر دائمی آواتار mohsen24000
    تاریخ عضویت
    مرداد 1385
    محل زندگی
    شهر مقدس قم
    پست
    583

    نقل قول: نمایش مختصری از متن


    select mid(content,instr(content,'phrase'),30)+'...' as a
    from article
    where instr(content,'phrase')>0

  8. #8

    نقل قول: نمایش مختصری از متن

    ممنون و تشکر فراوان از شما

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

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