PDA

View Full Version : search از طریق کد VB



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

alimaker
پنج شنبه 28 اردیبهشت 1385, 14:35 عصر
برای شروع عالیه . خیلی چیزها دستگیرت میشه.

kami2266
جمعه 29 اردیبهشت 1385, 13:35 عصر
ممنون هنوز فایلتو ندیدم ولی حتماً به دردم می خوره.
من یه دیتابیس کتابخونه ساختم. الان اگه جستجوش درست بشه کلی عالیه.
بازم ممنون از جوابت.:بوس:

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

alimaker
شنبه 30 اردیبهشت 1385, 14:12 عصر
قابلی نداشت . فکر کنم اگه یه نمونه اولیه بزاری بهتر میتونم راهنمایت کنم.

kami2266
شنبه 30 اردیبهشت 1385, 15:38 عصر
سلام اگه این فایل رو DL کنین توضیحات توش هست. ممنون.

شاپرک
یک شنبه 31 اردیبهشت 1385, 09:06 صبح
من اصلاحش کردم

alimaker
یک شنبه 31 اردیبهشت 1385, 11:45 صبح
سریع .درست .دقیق مثل همیشه آقا kami2266 فکر کنم مشکلت کاملا حل شده از شاپرک هم ممنونم.من فیلش دیدم فکر کنم همونی که میخواستی.:تشویق: :چشمک:

Ali_Fallah
یک شنبه 31 اردیبهشت 1385, 12:52 عصر
با سلام . این برنامه چطوره شاید خوب باشه.

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

شاپرک
یک شنبه 31 اردیبهشت 1385, 14:00 عصر
با تشکر از شاپرک (آقا/خانوم)

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

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

kami2266
یک شنبه 31 اردیبهشت 1385, 23:51 عصر
"*" & [آدرس Textbox فرم] & "*" LIKE
این هر جای فیلد که باشه پیداش میکنه. فقط اول فیلد رو نمیگرده.
برای خانوم شاپرک این بو که فقط اول فیلد رو میگشت
"*" & [آدرس Textbox فرم] LIKE
بازم از همه ممنون.
:لبخند:

Mahsa Hatefi
دوشنبه 01 خرداد 1385, 12:47 عصر
منم تشکر می کنم قصد جسارت نداشتم . تستش می کنم ببینم چقدر مشکلمو حل می کنه

kami2266
دوشنبه 01 خرداد 1385, 14:10 عصر
اینم فایل اصلاح شدش برای مهسا خانوم.
امیدوارم دیگه مورد غضب نباشم. :چشمک:

Mahsa Hatefi
دوشنبه 01 خرداد 1385, 23:31 عصر
از همه دوستان که محبت داشتن واقعا متشکرم

jalalniknam
پنج شنبه 15 تیر 1385, 12:18 عصر
با سلام
من از همین روش شما اساتید تو یه برنامه میخوام استفاده کنم - یه فرم ساختم با تکس باکس هایی که آدرس اونا مانند همین کد اعلام شما تو کوری نوشته شده - اما وقتی اجرا میکنم اگه برخی از تکس باکس ها رو خالی ردکنم نتایج متفاوتی بدست میاد - مثلا" 21 رکورد دارم الان تو فایل پیوستی اما اگه همه ی تکس باکس ها خالی رد بشن و کوری اجرا بشه فقط 19 تا رو نشون میده - لطفا" ببینید اشکال کار از کجاست ؟؟؟؟

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

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

شاپرک
یک شنبه 18 تیر 1385, 14:06 عصر
در قسمت Critarea بعد از Like ها Or Is Null اضافه کن .

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

شاپرک
سه شنبه 20 تیر 1385, 14:58 عصر
باید شرط ها رو با هم Or کنی . یعنی وقتی برای یک فیلد یک شرط گذاشتی شرط بعدی رو یک سطر پایین تر قرار بده .

هادی2020
سه شنبه 20 تیر 1385, 18:15 عصر
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
سه شنبه 20 تیر 1385, 20:48 عصر
سلام
بسیار ممنون - حرف شاپرک عزیز برام فهمیدنش آسون بود و حتما" آزمایش میکنم و استفاده از کد هادی عزیز رو مگه اینکه سوال کنم بفهمم که چطور باید ازش استفاده کنم
هادی جان تا همینجا هم ازت ممنونم که وقت گذاشتی و جواب دادی اما اگه فرصت کردی یه توضیح به زبون سواد ما هم بدی ممنون میشم
و خدمت شاپرک جان هم باید عرض کنم که ما همه کسایی که از این سایت استفاده میکنیم از شما ممنون هستیم بخاطر حوصله ای که به خرج میدین و جواب ما رو میدین

هادی2020
چهارشنبه 21 تیر 1385, 11:35 صبح
جواب شما در فایل ضمیمه آمده است
حتما هر دو را درافت کنید.
نحوه قرار دادن دکمه تشکر (Thank) چگونه است

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

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

jalalniknam
چهارشنبه 21 تیر 1385, 12:57 عصر
جواب شما در فایل ضمیمه آمده است
حتما هر دو را درافت کنید.
نحوه قرار دادن دکمه تشکر (Thank) چگونه است

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

هادی2020
چهارشنبه 21 تیر 1385, 13:13 عصر
کوری شما اصلاح شد
نگفتی دکمه Tahanks را چطور در پایان نوشته هایم بگذارم

jalalniknam
یک شنبه 08 مرداد 1385, 15:23 عصر
هادی جان
از لطف شما ممنونم - البته هنوز فایلو نیگاه نکردم
اما باور کن هنوز منظورتون رو از thanks نفهمیدم اگه توضیح بدین ممنون میشم و حتما جواب میدم

شاپرک
یک شنبه 08 مرداد 1385, 15:43 عصر
دکمه Tahanks را چطور در پایان نوشته هایم بگذارم
شما دکمه Thanks رو در پایان نوشته ای دیگران می تونی ببینی برای اینکه از آنها به خاطر نوشته ای که گذاشتن تشکر کنی فقط همین ....

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

هادی2020
دوشنبه 09 مرداد 1385, 16:20 عصر
کافی است کدی را به دکمه جستجو اضافه کنی
در صورتی که تمام تکس باکس ها خالی بود جدول بانک اطلاعاتی یا کوری دیگری که همه اطلاعات را نشان می دهد اجرا شود کد دکمه جستجو در ذیل آمده است
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
سه شنبه 17 مرداد 1385, 16:46 عصر
با سلام مجدد
اول که از بابت اونکه نمیدونم چرا من متوجه این پاسخ آخری شما نشده بودم که زودتر جواب بدم معذرت میخوام
دوم هم بابت زحمتی شما ممنون
و سوم بازم سوال:
اگر کد شما رو با توضیحی که فرمودین به کد دکمه ی جستجوی فرم اضافه کنم و همه ی تکس باکس ها خالی باشن میاد و یک کوری دیگه که نشانگر و نمایانگر همه ی رکوردهاست رو اجرا میکنه
قبول
اما یکی از مشکلهای مهمی که گفته بودم سر جاش میمونه یعنی اگه من یکی از تکس باکس ها رو تکمیل کردم و و در هر یکی از تکس باکس های دیگه هم هرچیز الکی هم که تایپ بشه بازم میاد رکوردی رو که اون تکس باکس صحیح تکمیل شده رو در خودش داشته باشه نشون میده (یعنی در جستجو OR عمل میکنه در صورتیکه ما میخوایم AND عمل کنه )؟؟؟؟؟؟؟

هادی2020
جمعه 20 مرداد 1385, 16:25 عصر
سلام
جواب شما یعنی مشکل کوری قبلا داده شده بود شما انگار توجهی به کوری نکرده بودید برای اند شدن در کوری باید شرط ها را در توری در یک سطر نوشت جواب کامل و بدون مشکل شما در فایل ضمیمه آمده است

mohammadgij
شنبه 21 مرداد 1385, 16:38 عصر
این رو ببینید.
یه کم قدیمیه اما به درد می خوره

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

hasanr
سه شنبه 03 خرداد 1390, 11:58 صبح
این تاپیک به سر انجام نرسید ؟

santur
چهارشنبه 28 تیر 1391, 01:05 صبح
سلام دوستان
من خیلی با اکسس و vb کارنکردم مبتدیم
میخوام یه فرم داشته باشم که توی اون بعضی از اطلاعات دلخواه رو از جداول دیگه جستجو و نشون بده یه سری فرم با استفاده از جداول و کوئری ها درست کردم
مثلا تعداد کتابهای داده شده به یک کد دانشجویی مثلا کد 10، یعنی میخوام با استفاده از کد طرف اطلاعاتش رو بیارم میخوام اطلاعات مختلفی ازش گزارش بگیرم چطور باید انجام بدم
لطفا هر چه ساده تر و روان تر بیان کنید
تشکر