# پایگاه‌های داده > سایر پایگاه‌های داده > Access >  search از طریق کد VB

## kami2266

سلام بچه ها:
من صنایع میخونم برنامه نویسی هم زیاد سر در نمیارم.
اگه یکی پیدا بشه یه کد کامل VB برای search یا فیلتر *برای جستجوی قسمتی از نام* در یک فیلد Memo برای من بزاره که از یک TEXTBOX یه فرم بخونه و توی یک کوئری و متعاقباً یک گزارش بتونم ازش نتیجه بگیرم. so ممنون. u رو خدا یکی جواب بده.:kaf:

----------


## alimaker

برای شروع عالیه . خیلی چیزها دستگیرت میشه.

----------


## kami2266

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

----------


## kami2266

سلام علی جون
علی جون ممنون از نرم افزارت.
ولی حالا فهمیدم منظورم درست نرسوندم.
میدونی می خوام یه متن بهم بدی که توی صفحه VB اکسس مثلاً مربوط به یه فرم PASTE کنم بدش مثلاً آدرس TEXTBOX هاشو درست کنم و با کلیک روی یه KEY توی فرم اکسس اجراش کنم.
SORRY اگه منظورم غلط گفتم.
بازم منون.

----------


## alimaker

قابلی نداشت . فکر کنم اگه یه نمونه اولیه بزاری بهتر میتونم راهنمایت کنم.

----------


## kami2266

سلام اگه این فایل رو DL کنین توضیحات توش هست. ممنون.

----------


## شاپرک

من اصلاحش کردم

----------


## alimaker

سریع .درست .دقیق مثل همیشه آقا kami2266 فکر کنم مشکلت کاملا حل شده از شاپرک هم ممنونم.من فیلش دیدم فکر کنم همونی که میخواستی. :تشویق:   :چشمک:

----------


## Ali_Fallah

با سلام . این برنامه چطوره شاید خوب باشه.

----------


## kami2266

با تشکر از شاپرک (آقا/خانوم) سریع دقیق و مثل همیشه  :قلب:  دقیقاً همون چیزی بود که میخواستم البته توی SQL کوئری یک "*" دیگه هم اضافه کردم تا  وسط اسامی رو هم جستجو کنه و به مقصودم رسیدم. خیلی خیلی ممنون.
از آقای علی و کامی جون هم اسم خودمم ممنون.
کلاً با شما برنامه نویسا حال کردم. دم همتون گرم :تشویق:

----------


## شاپرک

> با تشکر از شاپرک (آقا/خانوم)


خانوم      :لبخند گشاده!: 
خواهش میکنم

----------


## Mahsa Hatefi

با سلام
آقای کامرانی که لطف کردن MDE گذاشتن !..... ؟
اون دوست عزیز هم  مشکلشون حل شد و ترجیح دادن نفرمایند با قرار دادن "*"  کجای SqlString توی کوری و به چه شکلی تونستن توی یه memo رو جستجو کنن . فایل شاپرک جان هم ابتدای رکوردهای اون فیلد خاص رو جستجو می کنه .
 فایل آقای کامرانی خوب کار میده اما کدش در دسترس نیست 
اگه بزرگواری کنید این موردو به ماهم یاد بدین 
                               تشکر

----------


## kami2266

"*" & [آدرس Textbox فرم] & "*" LIKE 
این هر جای فیلد که باشه پیداش میکنه. فقط اول فیلد رو نمیگرده.
برای خانوم شاپرک این بو که فقط اول فیلد رو میگشت
"*" & [آدرس Textbox فرم] LIKE 
بازم از همه ممنون.
 :لبخند گشاده!:

----------


## Mahsa Hatefi

منم تشکر می کنم قصد جسارت نداشتم  . تستش می کنم ببینم چقدر مشکلمو حل می کنه

----------


## kami2266

اینم فایل اصلاح شدش برای مهسا خانوم.
امیدوارم دیگه مورد غضب نباشم.  :چشمک:

----------


## Mahsa Hatefi

از همه دوستان که محبت داشتن واقعا متشکرم

----------


## jalalniknam

با سلام
من از همین روش شما اساتید تو یه برنامه میخوام استفاده کنم - یه فرم ساختم با تکس باکس هایی که آدرس اونا مانند همین کد اعلام شما تو کوری نوشته شده - اما وقتی اجرا میکنم اگه برخی از تکس باکس ها رو خالی ردکنم نتایج متفاوتی بدست میاد - مثلا" 21 رکورد دارم الان تو فایل پیوستی اما اگه همه ی تکس  باکس ها خالی رد بشن و کوری اجرا بشه فقط 19 تا رو نشون میده - لطفا" ببینید اشکال کار از کجاست ؟؟؟؟

----------


## jalalniknam

بازم سلام 
حالا که کسی وقت جواب دادن نداره - کی به کیه بازم سوالا رو بیشتر میکنیم آخرش یکی دلش میسوزه:
در دنباله مطلب بالا - اصلا" فرض کنید ما همون فرمی رو که تو فایلم گذاشتم میخوایم که جستجوی دقیق داشته باشه - یعنی اگه گفتیم کدهای 1 رو پیدا کن دیگه 11 رو شریک نکنه - چون با این روش بالا چون از like  استفاده شده همه عبارتهایی که تکس باکس ما تو اون عبارت باشه جواب فرض میکنه - و دوم هم اینکه همون جستجوی دقیق اگه بعضی رکوردها خالی رد شدن باید از چه دستوری استفاده کرد
راستی من خسته نمیشم - اگه شده هر شب میام میشینم اینجا تا آخرش جواب بگیرم

----------


## jalalniknam

علی جان - آقا مصطفی - شاپرک صبور  اقای MM_Mofidi  و mohammadgij و alimaker و استاد سارمی و .... همه ی دیگر دوستان و استادای مهربون
کجائید که چشممون به این تاپیک خیره موند و هر وقت میام بازم نوشته ی تازه ای نیست.
اگه سوال بی ربطی پرسیدم حداقل بگین بی ربطه 
اگه نظرتون اینه که بارها مطرح شده - قبول همه ی موارد جستجو رو خوندم اما حتما" به جایی نرسیدم که باز مزاحم شدم 
به هر حال خود دانید - ما که دست زور نداریم - یه دست نیازه که اونم هر وقت شما لطف کردین ممنون میشم

----------


## شاپرک

در قسمت Critarea بعد از  Like ها Or Is Null اضافه کن .

----------


## jalalniknam

سلام
جناب شاپرک - ممنون - با قرار گرفتن این or is null فیلدهای خالی رو هم پیدا میکنه و نشون میده
حالا یه سوال مهمتر :
با این روش like در یه فیلد فرض کنید اگه کد 1 ذخیره شده باشه و در یه رکورد دیگه 11 وقتی که جستجو انجام میشه و ما تو تکس باکس فرم جستجو عدد یک رو وارد کنیم هنگام جستجو فیلدایی  رو که 11 هم تو اونا ثبت شده بود بعنوان نتیجه جستجو نشون میده
پس اینجا یه سرچ دقیق و منطبق با عین خود متن تایپ شده ( نه کم و نه زیاد ) لازمه
اگه ما  تو کرتریای کوری بنویسیم forms!form1!text0 و از like  استفاده نکنیم مسئله حله اما یه مشکل مهم باقی میمونه:
ما داریم از یه فرم جستجو استفاده میکنیم که اندازه همه ی فیلدای جدولمون تکس باکس برا جستجو گذاشتیم - حالا اگه تو کوری و کرتریای مربوط به هر فیلد فقط نوشته باشیم
 forms!form1!textname
هنگام کار با این فرم به شرطی جواب کوری نمایش داده میشه که تو همه ی تکس باکس ها عبارتی وارد کنیم و اگه حتی یکی از تکس باکس ها ( در فرم جستجو) خالی رد کنیم جواب صفر نتیجه تعداد نتیجه جستجو خواهد بود 
لطفا" راهنمایی کنین - ممنون

----------


## شاپرک

باید شرط ها رو با هم Or کنی . یعنی وقتی برای یک فیلد یک شرط گذاشتی شرط بعدی رو یک سطر پایین تر قرار بده .

----------


## هادی2020

Code Window
================================================
Private Sub Command88_Click()				' Commnd Search
Dim str As String, err1 As Byte
Dim frm As Form, strfilter As String
On Error GoTo er
If Command88.Caption = "Search off" Then              ' لغو جستجو
  	Command88.Caption = "Search on": DoCmd.ShowAllRecords   '  جستجو
CmdFind.Enabled = True		'cmdfind is a combo box
  	If (CmdFind.ListIndex > 1) And (CmdFind.ListIndex < 9) Then
txtfind.Enabled = False
Else
    		txtfind.Enabled = True
End If
'  Option178.Enabled = True:
Exit Sub
End If
Select Case CmdFind.ListIndex
  Case 0                    '  This is id pezeshk      I use code for search
    	If (txtfind.Value = Null) Or (txtfind.Value = Empty) Then Exit Sub
Me.Recordset.MoveFirst
ID.SetFocus
            str = Me.txtfind    ' <<====
DoCmd.FindRecord str, acEntire, False, acSearchAll, False, acCurrent, True
txtfind.SetFocus
Exit Sub
  Case 1        '     Name                             I use a filter for search.
	          '    There is a query  In the Button of this Page. And I Run It. OK	
    DoCmd.ApplyFilter ("Filter_Findlastname")
    Command88.Caption = " Search off "   		' لغو جستجو
    CmdFind.Enabled = False
 ' Case 2        '        I use a filter for search
   ' ….
    If (txtfind.Value = Null) Or (txtfind.Value = Empty) Then Exit Sub
    Me.Recordset.MoveFirst: str = ""
    Tel.SetFocus
    str = Me.txtfind
    DoCmd.FindRecord str, acEntire, False, acSearchAll, False, acCurrent, True
    txtfind.SetFocus
    Exit Sub
End Select

Exit Sub		
er:
    If Err.Number = 2488 Then
      Exit Sub
    Else
      MsgBox Err.Description, , "error"
    End If
End Sub
-------------------------- --------------- Filter_Findlastname --------- ------------------------------ ------ 
This is a query ok .
SELECT *
FROM Moshakhasat 
WHERE (((Moshakhasat.Last_Name) Like [Enter Last name]));

----------


## jalalniknam

سلام 
بسیار ممنون - حرف شاپرک عزیز  برام فهمیدنش آسون بود و حتما" آزمایش میکنم و استفاده از کد هادی عزیز رو مگه اینکه سوال کنم بفهمم که چطور باید ازش استفاده کنم
هادی جان  تا همینجا هم ازت ممنونم که وقت گذاشتی و جواب دادی  اما اگه فرصت کردی یه توضیح به زبون سواد ما هم بدی ممنون میشم
و خدمت شاپرک جان هم باید عرض کنم که ما همه کسایی که از این سایت استفاده میکنیم از شما ممنون هستیم بخاطر حوصله ای که به خرج میدین و جواب ما رو میدین

----------


## هادی2020

جواب شما در فایل ضمیمه آمده است
حتما هر دو را درافت کنید.
نحوه قرار دادن دکمه تشکر (Thank) چگونه است

----------


## jalalniknam

با سلام دوباره
احتمالا" من منظورمو درست نرسوندم
 از دستور شاپرک استفاده کردم و یه خط در میان در قسمت  کوری آدرس تکس باکس ها رو نوشتم - این جستجو بر اساس or انجام میشه یعنی اگه فرض کنید تو تکسی که مربوط به تحصیلاته نوشتم کد 4  و تو تکسی که مربوط به سکونت هست کد 6 رو تایپ کردم جستجو بر این اساس انجام میشه که رکوردهایی که یا کد 6 در محل سکونت دارن و یا کد 4 در فیلد تحصیل
در صورتی که من میخوام رکوردهایی رو بده که هم کد 4 در تحصیل دارن و هم کد 6 در محل سکونتو ضمنا" اگه در حال حاضر من تکس باکس های فرم جستجوم رو همه رو خالی رد کنم انتظار دارم کل بانک رو نشون بده اما هیچ رکوردی نشون داده نمیشه
به هر حال من دقیقا" میخوام مثل همون دستور  like     عمل بشه با این تفاوت که کدهای مشابه رو با هم نیاره یعنی اگه کد تحصیل 1 و 11 داشتیم نیاد هم 1 بده و هم 11 رو 
چون وقتی که با  like    کار میکنم همین نتیجه رو میداد که من بهمین دلیل سوال رو مطرح کردم
ضمنا" فایل پیوستی که بر اساس  like  هست رو پیوست کردم اگه فرصتی شد اصلاح کنین

----------


## jalalniknam

فایلی که پیوسته بر اساس همون like های نوشته شده در کرتریای کوری هست که اتفاقا" کارآیی خوبی هم داره فقط همون مشکل که گفتم :
کدها و عبارات مشابه رو با هم میاره مثل 1 و 11 و ...
که اگه با دستور دیگه ای حل بشه که ضمن اینکه در فرم جستجوی من نیازی به تکمیل همه ی تکس باکس ها نباشه نتیجه کوری هم دقیق باشه - مشکل من و دیگر دوستانی که این مطلب رو نمی دونن حل میشه

----------


## jalalniknam

> جواب شما در فایل ضمیمه آمده است
> حتما هر دو را درافت کنید.
> نحوه قرار دادن دکمه تشکر (Thank) چگونه است


هادی جان
من وقتی که امروز وارد شبکه شدم صفحه اکسس آف لاین باز شده بود و من اصلا" متوجه فایلهای ارسالی شما نشده بودم تا وقتی که دو تا مطلب بلاتر رو فرستادم نوشته و فایلهای شما رو دیدک که زحمت کشیده بودین وگرنه ابتدا از مطلب و فایل شما استفاده میکردم و اگه به نتیجه نمی رسیدم اونوقت سوال میکردم
حالا شاید هم حکمتی بوده تا هم من فایل توضیحات حضرتعالی رو مطالعه کنم و چیزی یاد بگیرم و هم اگه بقیه دوستان تونستن در این فاصله به form101 ارسالی من نیگاه کنن و اگه بدون کد نویسی هم چیزی به ذهنشون رشید که حتما" بلد هستن لطف کنن و راهنمایی کنن
به هر حال بازم ممنون و متشکر - ضمنا" از اینکه نوشته بودین چطوری thank  رو قرار بدم متوجه منظورتون نشدم

----------


## هادی2020

کوری شما اصلاح شد
نگفتی دکمه Tahanks را چطور در پایان نوشته هایم بگذارم

----------


## jalalniknam

هادی جان 
از لطف شما ممنونم - البته هنوز فایلو نیگاه نکردم
اما باور کن هنوز منظورتون رو از thanks  نفهمیدم اگه توضیح بدین ممنون میشم  و حتما جواب میدم

----------


## شاپرک

> دکمه Tahanks را چطور در پایان نوشته هایم بگذارم


شما دکمه Thanks رو در پایان نوشته ای دیگران می تونی ببینی برای اینکه از آنها به خاطر نوشته ای که گذاشتن تشکر کنی فقط همین ....

----------


## jalalniknam

هادی جان
من فایلو نگاه کردم اما مشکل حل نشده
اولا" اگه هیچیک از تکس باکس های فرم جستجو تکمیل نشن جواب کوری هیچ رکورد است در صورتیکه قرار بود اگه همشون خالی رد بشن ما کل رکرودها رو داشته باشیم
دوم اونکه ما دو نفر داشتیم که اسمشون تبار بود حالا اگه من تو قسمت نام تبار بنویسم و در بقیه قسمتها هر چیز الکی تایپ کنم بازم اون دو تا رکورد تبار رو نشون میده - در صورتیکه بازم قرار بود اگه من در قسمت نام مثلا" تبار رو نوشتم و در تکس باکس دیگه یه چیز دیگه دستور and رو عمل کنه یعنی هم اسمش تبار باشه و هم به فرض کد تحصیلش 6 باشه
ولی این اصلاحیه شما بازم میاد و or عمل میکنه یعنی یا اسمش تبار باشه و یا کد محل سکونتش یه چیز دیگه - میگم نکنه همون فایله خودمو اشتباهی ضمیمه کردین؟
ممنون میشم جواب بدین

----------


## هادی2020

کافی است کدی را به دکمه جستجو اضافه کنی 
در صورتی که تمام تکس باکس ها خالی بود جدول بانک اطلاعاتی یا کوری دیگری که همه اطلاعات را نشان می دهد اجرا شود کد دکمه جستجو در ذیل آمده است
Private Sub Command26_Click()
On Error GoTo Err_Command26_Click

    Dim stDocName As String

    If (IsNull(Text0.Value) Or IsEmpty(Text0.Value)) And (IsNull(Text2.Value) Or IsEmpty(Text2.Value)) And _
        (IsNull(Text4.Value) Or IsEmpty(Text4.Value)) And (IsNull(Text6.Value) Or IsEmpty(Text6.Value)) And _
            (IsNull(Text6.Value) Or IsEmpty(Text6.Value)) Then
              stDocName = "Table2"
              DoCmd.OpenTable stDocName, acViewNormal, acEdit
              Exit Sub
    End If

    stDocName = "Query1"
    DoCmd.OpenQuery stDocName, acNormal, acEdit

Exit_Command26_Click:
    Exit Sub

Err_Command26_Click:
    MsgBox Err.Description
    Resume Exit_Command26_Click

End Sub

----------


## jalalniknam

با سلام مجدد
اول که از بابت اونکه نمیدونم چرا من متوجه این پاسخ آخری شما نشده بودم که زودتر جواب بدم معذرت میخوام
دوم هم بابت زحمتی شما ممنون
و سوم بازم سوال:
اگر کد شما رو با توضیحی که فرمودین به کد دکمه ی جستجوی فرم اضافه کنم و همه ی تکس باکس ها خالی باشن میاد و یک کوری دیگه که نشانگر و نمایانگر همه ی رکوردهاست رو اجرا میکنه
قبول
اما یکی از مشکلهای مهمی که گفته بودم سر جاش میمونه یعنی اگه من یکی از تکس باکس ها رو تکمیل کردم و و در هر یکی از تکس باکس های دیگه هم هرچیز الکی هم که تایپ بشه بازم میاد رکوردی رو که اون تکس باکس صحیح تکمیل شده رو در خودش داشته باشه نشون میده (یعنی در جستجو OR عمل میکنه در صورتیکه ما میخوایم AND  عمل کنه )؟؟؟؟؟؟؟

----------


## هادی2020

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

----------


## mohammadgij

این رو ببینید.
یه کم قدیمیه اما به درد می خوره

من فکر کنم با این روش دیگه نیازی نباشه که توی Query این همه دچار عذاب بشیم

----------


## hasanr

این تاپیک به سر انجام نرسید ؟

----------


## santur

سلام دوستان
من خیلی با اکسس و vb کارنکردم مبتدیم 
میخوام یه فرم داشته باشم که توی اون بعضی از اطلاعات دلخواه رو از جداول دیگه جستجو و نشون بده  یه سری فرم با استفاده از جداول و کوئری ها درست کردم 
مثلا تعداد کتابهای داده شده به یک کد دانشجویی مثلا کد 10، یعنی میخوام با استفاده از کد طرف اطلاعاتش رو بیارم میخوام اطلاعات مختلفی ازش گزارش بگیرم چطور باید انجام بدم 
لطفا هر چه ساده تر و روان تر بیان کنید 
تشکر

----------

