PDA

View Full Version : جستجوی بهینه



mit_89
چهارشنبه 06 بهمن 1389, 11:07 صبح
سلام
من یک گرید معمولی دارم در برنامه تحت ویندوز که می خوام کاربر با زدن حروف روی این گرید جستجو را انجام دهد
بنابراین کد جستجو را در keypress گرید نوشتم ٰ البته باید بگم که چون کار در شبکه است مجبورم هر بار که کلمه ها رامی زند به دیتابیس وصل شوم و فیلتر کردن را انجام بدم ولی این سرعت برنام رو کم کرده در جستجو.
روی فیلد شرط هم ایندکس دارم ولی طولش nvarchar(800) است.
:ناراحت:
کسی می تونه بهم کمک کنه تا یک کد بهینه داشته باشم؟؟

hamidreza20
چهارشنبه 06 بهمن 1389, 14:08 عصر
سلام
من یک گرید معمولی دارم در برنامه تحت ویندوز که می خوام کاربر با زدن حروف روی این گرید جستجو را انجام دهد
بنابراین کد جستجو را در keypress گرید نوشتم ٰ البته باید بگم که چون کار در شبکه است مجبورم هر بار که کلمه ها رامی زند به دیتابیس وصل شوم و فیلتر کردن را انجام بدم ولی این سرعت برنام رو کم کرده در جستجو.
روی فیلد شرط هم ایندکس دارم ولی طولش nvarchar(800) است.
:ناراحت:
کسی می تونه بهم کمک کنه تا یک کد بهینه داشته باشم؟؟

سلام دوست عزیز
برای این منظور شما یک بار دیتا خود رو در درون DataTable بریزید و هر بار که نیاز بود در آن با استفاده از تابع Select جستجو کنید و اگر در طول اجرای برنامه شما داده های شما تغییر می کنند DataTable مورد نظر را رفرش کنید.
التماس دعا

mit_89
چهارشنبه 06 بهمن 1389, 14:17 عصر
ممنون از راهنمایی تون دوست عزیز

راستش به این فکر کردم ولی اگر یک کاربر دیگه در شبکه تغییراتی رو در این دادها مثلا کالا را بفروشد و تعداد آن تغییر کند گرید کالای کاربر دیگه چون داره از حافظه خود آن کاربر خوانده می شه refresh نمی شود:افسرده:

mit_89
چهارشنبه 06 بهمن 1389, 17:26 عصر
کسی نیست به من کمک کنه ؟؟ جستجو با زدن هر حرف ؟؟
نمی تونم اطلاعات را از datatable.select() کنم چون در شبکه ممکنه در همون لحظه جستجو ، توسط یک کاربر دیگه
تغییر کنه.

hamidreza20
پنج شنبه 07 بهمن 1389, 08:53 صبح
کسی نیست به من کمک کنه ؟؟ جستجو با زدن هر حرف ؟؟
نمی تونم اطلاعات را از datatable.select() کنم چون در شبکه ممکنه در همون لحظه جستجو ، توسط یک کاربر دیگه
تغییر کنه.

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

sds1920
پنج شنبه 07 بهمن 1389, 20:13 عصر
روش کار شما اصلا منطقی نیست هر چند که دنبال یه روش خوب می گردید.
جستجوی حرف به حرف ، توی شبکه ، از روی دیتابیس و فیلدی که 800 کاراکتر طول داره اصلا منطقی به نظر نمی رسه.کامپیوتر هم محدودیتها و ظرفیتی داره.
با در نظر گرفتن این موضوع که دیتابیس روی هارد هست و هارد خیلی کند هست نتیجه ای بهتر از این نمی تونید به دست بیارید.
من توصیه می کنم استراتژی خودتون رو تغییر بدید.مثلا جستجو رو زمانی انجا بدید که کاربر تمام کلمه رو وارد کرده.
در هر حال موفق باشید.