PDA

View Full Version : جستجو از طریق فیلتر کردن



look20
دوشنبه 06 اردیبهشت 1389, 18:01 عصر
سلام اگه بخام نتایج جستجو توی یه فرم دیگه نشون داده بشه چکار کنم فرض کنید
توی یه text1.text کلمه ای را میزنیم که قراره توی فیلد name جستجو کنه و نتایج رو توی فرم 2 نشون داده بشه
البته از گرید استفاده نمیکنم باید فیلدهای هر رکورد توی تکس باکس باشند
مثلا فیلد name توی تکس باکس nametxt و فیلد famil توی تکس باکس familtxt و همینطور .... از روش adodc استفاده میکنم دوستان میشه بگن چه کدی توی فرم 2 و چه کدی توی فرم1 باید قرار بدم
البته منظورم انجام پروژه نیست چون واقعا تو ساختن جستجو مشکل دارم تاپیک زدم

یه روشی که خودم بلدم و میدونم یه روش بیخوده:
میشه فقط یک رکورد رو پیدا کرد تازه باید کلمه وارد شد عین کلمه موجود توی رکوردهات باشه تا رکورد پیدا بشه

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

با تشکر

AMP PAVEH
چهارشنبه 08 اردیبهشت 1389, 08:14 صبح
سلام دوست عزیز
برای اینکار یک listbox & text & datagrid & adodc احتیاج است
قبل از هر چیز تنظیمات adodc را انجام داده



Private Sub Form_Load()
Dim S, M As String
Adodc1.Refresh
For R = 0 To 1000
S = Adodc1.Recordset.Fields("N")
List1.AddItem S
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF = True Then
Adodc1.Refresh
Exit For
End If
Next R
Set DataGrid1.DataSource = Adodc1
End Sub
====================
Private Sub List1_Click()
Adodc1.Recordset.Filter = "N='" & List1.Text & " '"
End Sub
=====================
Private Sub Text1_Change()
Dim b As Integer
For b = 1 To List1.ListCount - 1
If LCase(Text1.Text) = Left(LCase(List1.List(b)), Len(LCase(Text1.Text))) Then
List1.ListIndex = (b)
Exit For
End If
Next
End Sub

======================
:خجالت: (http://barnamenevis.org/forum/www.ampsoft.blogfa.com)
www.AMPSOFT.blogfa.com
وبلاگ من (http://barnamenevis.org/forum/www.ampsoft.blogfa.com)
اینم لینک دانلود برنامه

look20
چهارشنبه 08 اردیبهشت 1389, 10:07 صبح
ممنون دوست من ولی منظورم دیتا گرید نبود تازه میخام تکس باکس و دکمه جستجو توی فرم 1 باشه و نتایج توی فرم 2 نشون داده بشه اون هم نبصورت دیتا گرید توی پست اول همین تاپیک گفتم منظورم چیه؟

AMP PAVEH
چهارشنبه 08 اردیبهشت 1389, 16:38 عصر
اینم برنامه دیگری از این نوع جستجو در پایگاه :قلب:

HjSoft
چهارشنبه 08 اردیبهشت 1389, 17:07 عصر
خوب با دستور : set text1.datasource = form1.adodc میتونید انجام بدید .

look20
چهارشنبه 08 اردیبهشت 1389, 17:10 عصر
با سلام مجدد من این فایلو ضمیمه میکنم میخام وقتی چند حرف رو تایپ کردم رکوردها رو با این شرایط فیلتر کنه
البته بطور مثال :
مثلا اگه نوشتم رضا تمامی رکوردهایی که توش رضا داره رو بیاره چه با رضا شروع بشه چه به رضا ختم بشه چه وسط رضا داشته باشه
یه مشکلی هم که دارم اینکه نمیتونم تعریف کنم که براساس چند حرف بیاره مثلا اگه زدم (رض) تمامی رکوردهایی که با این حروف شروع یا با این حرف ختم و یا در وسط اونها این حروف هست رو فیلتر کنه

ممنون میشم کمکم کنید

look20
چهارشنبه 08 اردیبهشت 1389, 19:26 عصر
Adodc1.Recordset.Filter = " usr Like 'رض*' "تمام فیلدهای usr که با رض شروع میشند رو میاره
یا مثلا این کد

Adodc1.Recordset.Filter = " usr Like '*رض*' "که تمام فیلدهای که توشون رض داره رو میاره

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

ali682344
چهارشنبه 08 اردیبهشت 1389, 22:09 عصر
سلام دوست خوبم

فکر کنم با این مشکلت حل بشه
If s = "" Then
Adodc1.Recordset.Filter = ""
Adodc1.Refresh
Exit Sub
End If
Adodc1.Recordset.Filter = cmbField & " LIKE '*" & s & "*'"

s نام تکست باکس هست و این دستورات رو می تونی داخل text chenge بنویسی
cmbField نام فیلدی هست که جستوجو روش انجام میشه.

موفق باشی.

xxxxx_xxxxx
چهارشنبه 08 اردیبهشت 1389, 22:33 عصر
با همین دستوراتی که دوستان گفته اند!

look20
جمعه 10 اردیبهشت 1389, 20:57 عصر
سلام دوستان توی فرم خودم تعریف شده که با دو تکس باکس میشه فیلتر کرد توی کد از And استفاده شده یعنی فیلتر با دو تکس باکس انجام بشه حالا فرض میکنیم من فقط بخام از یکی استفاده کنم اونوقت چطور باید تعریف کرد که اگه فقط یکی از تکس باکس ها وارد شده بود فیلتر انجام بشه
یعنی هم بشه از طریق دو تکس باکس همزمان فیلتر کرد و هم فقط با یکی فیلتر رو انجام داد

ali682344
جمعه 10 اردیبهشت 1389, 21:17 عصر
If txtUSR <> "" And txtPWD = "" Then
Adodc1.Recordset.Filter = "usr Like '" & txtUSR.Text & "*'"
ElseIf txtUSR <> "" And txtPWD <> "" Then
Adodc1.Recordset.Filter = "usr Like '" & txtUSR.Text & "*' and PWD Like '" & txtPWD.Text & "*'"
ElseIf txtUSR = "" And txtPWD <> "" Then
Adodc1.Recordset.Filter = "pwd Like '" & txtPWD.Text & "*'"
End If

look20
جمعه 10 اردیبهشت 1389, 21:38 عصر
با سلام و تشکر از دوستان عزیزم xxxxx_xxxxx و ali682344
مشکل حل شد اینم فایل اصلاح شده برای هر کسی که دوست داره استفاده کنه