PDA

View Full Version : بهترین سوری جستجو در بانک اطلاعاتی اکسس چیه



mrtzxxx
شنبه 07 اردیبهشت 1387, 00:47 صبح
سلام
بانک اطلاعاتی من از نوع اکسس هستش ولی اطلاعات ورودی اون خیلی زیاده کی می تونه یه سورس بدون اشکال بده تا هم سرعت برنامه و هم دقت برنامه بالا بره
منظورم اینه که بتونه چند کاراکتر از اول به حرف رو بده و اون نمونه های مشابه به اون کلمه رو برامون لیست کنه :خجالت:

اوبالیت به بو
شنبه 07 اردیبهشت 1387, 00:58 صبح
ُُ
On Error Resume Next
Adodc1.Recordset.Filter = "FieldName =' " + Input + " ' "
Adodc1.Recordset.Filter = " FieldName like '" & Input & "*'"

FieldName: اسم فیلد مورد نظر در بانک اطلاعاتی
Input: اون ورودی هستش که شما کاراکترها رو وارد می کنید که معمولاً TextBox در نظر گرفته میشه
Like: کلمه کلیدی

vahidm
شنبه 07 اردیبهشت 1387, 01:37 صبح
استفاده از دستور sql بسیار خوبه اینم کدش
Data1.RecordSource = "select * from [نام جدول] where [نام فیلد] like '" + Text1.Text + "*' "
DBGrid1.Refresh
Data1.Refresh
بسیار راحت و سریع البته به این جستجوها جستجوهای آنلاین می گن
ببخشید بای

mrtzxxx
شنبه 07 اردیبهشت 1387, 22:04 عصر
ممنون از اینکه کمکم کردید یه سوال کوچیک این کلمه کلیدی like کارش چیه؟

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

HjSoft
یک شنبه 08 اردیبهشت 1387, 16:23 عصر
دسوتان من با Like کار میکنم ولی با ی مشکل داره وقتی ی توی کلمه میاد تمام لیست ما پاک میشه و شناسایی نمیشهعلتش و راهش چیه !!

ali_habibi1384
سه شنبه 10 اردیبهشت 1387, 19:19 عصر
توابع sort , filter , move در vb6 از دستورات زبان مهمان SQL سریعتر عمل میکنه . می تونید امتحان کنید .

عمو وحید
چهارشنبه 22 خرداد 1387, 11:37 صبح
دوستان من یه دفترچه تلفن با قابلیت جستجو هم با فیلتر و هم با sql و هم با find و حلقه for دارم !! متاسفانه با فیلتر کردن کل اطلاعات datagrid پاک میشه و نتیجه ای از جستجو نشون نمیده..

Bank.Recordset.Filter = "tel =' " + Text4.Text + " ' "

جستجو هم کردم ولی کسی در مورد فیلتر کردن adodc توضیح کاملی نداده بود.

mpmsoft
چهارشنبه 22 خرداد 1387, 12:04 عصر
دوست من یکم نظرم فرق می کنه

تا اینجایی که من می دونم متد Filter زمانی قابل استفاده است که رکوردست دارای مقداری باشد برای مثال یکسری از رکوردها در حافظه باشد.

خیلی از دوستان هم از Select * FROM استفاده می کنن.

برای چی از * استفاده می کنید یعنی شما با محتوای کل Field ها کار دارید و یا برای استفاده از یک فیلد کل فیلدها رو باز می کنید

دقت کنید که باید طوری مقادیر رو از بانک بخونید که کمترین تراکنش ایجاد بشه و فقط اطلاعاتی را فرا بخونید که به آن نیاز دارید نه اینکه برای یک اطلاعات کوچیک حجم اطلاعات بالایی را فرا بخونیم و بعد هم سرعت شبکه رو بگیریم هم بانکو مشغول کنیم و هم برنامرو

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

ASKaffash
چهارشنبه 22 خرداد 1387, 12:35 عصر
دوست من یکم نظرم فرق می کنه

تا اینجایی که من می دونم متد Filter زمانی قابل استفاده است که رکوردست دارای مقداری باشد برای مثال یکسری از رکوردها در حافظه باشد.

خیلی از دوستان هم از Select * FROM استفاده می کنن.

برای چی از * استفاده می کنید یعنی شما با محتوای کل Field ها کار دارید و یا برای استفاده از یک فیلد کل فیلدها رو باز می کنید

دقت کنید که باید طوری مقادیر رو از بانک بخونید که کمترین تراکنش ایجاد بشه و فقط اطلاعاتی را فرا بخونید که به آن نیاز دارید نه اینکه برای یک اطلاعات کوچیک حجم اطلاعات بالایی را فرا بخونیم و بعد هم سرعت شبکه رو بگیریم هم بانکو مشغول کنیم و هم برنامرو

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

موارد اشاره شده دوستمان کاملا صحیح است در ضمن بعضی از حروف مثل ک و ... و مشکل UniCode هم باید مرتفع شود.

عمو وحید
چهارشنبه 22 خرداد 1387, 15:49 عصر
تشکر که جواب سوال منو دادید!!!(حالا متوجه میشم چرا هر کسی واسه یه سوال ساده یه تاپیک زده چون زودتر به جواب میرسه!)



من از یک فرم MDI استفاده میکنم و دو فرم استاندارد.در فرم اول فیلدهائی برای ورود اطلاعات به یک بانک خاص قرار دادم و از adodc استفاده کردم.حالا سوالم اینه:
میخوام تو فرم دوم یک DataGrid داشته باشم که اطلاعات همون بانکی رو نشون بده که در فرم اول توسط فیلدها واردش کردم.ولی DataGrid فرم دوم Adodc فرم اول رو نمیشناسه.آیا باید از ماژول استفاده کنم؟یا اینکه Adodc رو در فرم MDI تعریف کنم؟چطور؟
در واقع قصدم اینه که فرم MDIی با سه فرم استاندارد داشته باشم که در هر کدوم کار خاصی روی یک بانک انجام بشه..ممنون میشم کمک کنید

AmirAmiri
چهارشنبه 22 خرداد 1387, 20:09 عصر
دوستان من یه دفترچه تلفن با قابلیت جستجو هم با فیلتر و هم با sql و هم با find و حلقه for دارم !! متاسفانه با فیلتر کردن کل اطلاعات datagrid پاک میشه و نتیجه ای از جستجو نشون نمیده..

Bank.Recordset.Filter = "tel =' " + Text4.Text + " ' "جستجو هم کردم ولی کسی در مورد فیلتر کردن adodc توضیح کاملی نداده بود.
سلام دوسته عزیز فکر کنم به خاطره فاصله ای باشه که بعد از علامته ' گذاشتید اگه به صورت زیر باشه فکر نمکنم به مشکلی بر بخورید


Bank.Recordset.Filter = "tel ='" + Text4.Text + "' "
در ضمن کدی که نوشتید فقط نامهایی که دقیقا همانند Text4.text هستند رو میده اگه بخواید تمامه نام هایی که اولشون محتویات Text4.text اومده رو نشون بده باید قبل از ' دوم یک ستاره بذارید به صورت زیر


Bank.Recordset.Filter = "tel ='" + Text4.Text + "*' "
موفق باشید...