PDA

View Full Version : رفع اشکال از فرم جستجو



G.hemati
شنبه 18 آبان 1392, 00:11 صبح
با سلام
در ضمیمه نمونه ای قرار داده شده که عمل فیلتر رو با استفاده از کد نویسی Vba انجام میده

تنها مشکلی که داره اینه که در هنگام فیلتر کردن وقتی به فاصله بین حروف میرسه عمل فیلتر متوقف میشه و حتی در تکست باکس جستجو که آنباند است، فاصله رو نمیشه تایپ کرد

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

ممنون میشم دوستان راهنمایی بفرماین

G.hemati
یک شنبه 19 آبان 1392, 14:35 عصر
با سلام
مشکل در کد زیر میباشد . ممنون میشم دوستان و اساتید گرامی یه نگاه بندازن

Private Sub namSearcher_Change()
Me.Recalc
Me.namSearcher.SetFocus
Me.Filter = "nam like '*" & Nz(Me.namSearcher, "*") & "*'"
Me.FilterOn = True
Me.namSearcher.SelStart = Len(Nz(Me.namSearcher, 0)) + 1
End Sub

Abbas Amiri
یک شنبه 19 آبان 1392, 14:55 عصر
با سلام
مشکل در کد زیر میباشد . ممنون میشم دوستان و اساتید گرامی یه نگاه بندازن

Private Sub namSearcher_Change()
Me.Recalc
Me.namSearcher.SetFocus
Me.Filter = "nam like '*" & Nz(Me.namSearcher, "*") & "*'"
Me.FilterOn = True
Me.namSearcher.SelStart = Len(Nz(Me.namSearcher, 0)) + 1
End Sub


کدهای زیر رو جایگزین کنید
Private Sub namSearcher_Change()
Dim s As String
s = Nz(namSearcher.Text, "*")
Me.Filter = "nam like '*" & s & "*'"
Me.FilterOn = True
Me.namSearcher = s
Me.namSearcher.SelStart = Len(s) + 1
End Sub

G.hemati
پنج شنبه 29 مرداد 1394, 15:31 عصر
با سلام خدمت اساتید گرامی و دوستان عزیز

من در نمونه پیوست دو تا فیلد دارم که نام شخص و محل صادره را نشان میدهد

حال میخواهم عمل جستجو به صورت زیر انجام بشه .

وقتی در نام صادره جستجو میکنی "تهران" ، حال در صادره های شهر تهران اسم محمد را جستجو کنه. و محمد هایی که صادره شهرهای دیگر هستند رو جستجو نکنه

ممنون میشم دوستان راهنمایی بفرمایین

alirezabahrami
پنج شنبه 29 مرداد 1394, 21:34 عصر
با سلام خدمت اساتید گرامی و دوستان عزیز

من در نمونه پیوست دو تا فیلد دارم که نام شخص و محل صادره را نشان میدهد

حال میخواهم عمل جستجو به صورت زیر انجام بشه .

وقتی در نام صادره جستجو میکنی "تهران" ، حال در صادره های شهر تهران اسم محمد را جستجو کنه. و محمد هایی که صادره شهرهای دیگر هستند رو جستجو نکنه

ممنون میشم دوستان راهنمایی بفرمایین
سلام
دستور Me.Filter رادر ایونت Change هردو مورد را بصورت زیر تغییر بده !




Me.Filter = "[nam] Like '*" & Me.namSearcher & "*' AND Sadere Like '*" & Me.SadereSearcher & "*'"

یا علی

G.hemati
جمعه 30 مرداد 1394, 15:23 عصر
ممنون استاد بهرامی عزیز

اما یه مشکلی که با اضافه کردن این کد بوجود میاد اینه که وقتی عمل جستجو انجام میشه و رکورد ها فیلتر میشه، با پاک کردن کلمه

جستجو شده، تعداد رکوردهای فیلتر شده به حالت قبلی برنمیگرده

ممنون از زحمات شما

alirezabahrami
شنبه 31 مرداد 1394, 14:45 عصر
ممنون استاد بهرامی عزیز

اما یه مشکلی که با اضافه کردن این کد بوجود میاد اینه که وقتی عمل جستجو انجام میشه و رکورد ها فیلتر میشه، با پاک کردن کلمه

جستجو شده، تعداد رکوردهای فیلتر شده به حالت قبلی برنمیگرده

ممنون از زحمات شما
سلام
فیلتر نمودن از طریق فرم قدری پیچیده است و نیاز به کد نویسی پیچیده دارد (خصوصاً زمانی که تعداد فیلدها هم زیاد باشد)
روش راحت تر اینست که فیلتر در قسمت criteria کوئری که بعنوان RecordSource بکار رفته قرار بدهید !
نمونه اصلاح شده را ملاحظه بفرما!
یک نکته قابل توجه هم اینست که مستقیماً از حالت نمایش Continuous Forms برای نمایش رکورد ها استفاده ننمائید و در اینجور مواقع از سابفرم استفاده کنید که برروی آن راحت تر میتوان مانور داد .
یا علی

G.hemati
یک شنبه 01 شهریور 1394, 15:01 عصر
با سلام
تشکر از زحمات استاد بهرامی و پاسخی که فرمودن

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

G.hemati
چهارشنبه 04 شهریور 1394, 14:59 عصر
اساتید گرامی
ممنون میشم راهنمایی بفرماین

Abbas Amiri
چهارشنبه 04 شهریور 1394, 19:06 عصر
اساتید گرامی
ممنون میشم راهنمایی بفرماین

سلام
کدهای زیر رو جایگزین کنید

Private Sub namSearcher_Change()
Dim s As String, i As Integer
s = Nz(namSearcher.Text, "*")
i = namSearcher.SelStart
Me.Filter = "nam like '*" & s & "*' AND sadere like '*" & SadereSearcher & "*'"
Me.FilterOn = True
Me.namSearcher = s
Me.namSearcher.SelStart = i
End Sub


Private Sub SadereSearcher_Change()
Dim s As String, i As Integer
s = Nz(SadereSearcher.Text, "*")
i = SadereSearcher.SelStart
Me.Filter = "sadere like '*" & s & "*' AND nam like '*" & namSearcher & "*'"
Me.FilterOn = True
Me.SadereSearcher = s
Me.SadereSearcher.SelStart = i
End Sub

Abbas Amiri
پنج شنبه 05 شهریور 1394, 09:55 صبح
سلام
ضمن تشکر از ابراز لطف 2 دوستی که پستهای قبلی شان حذف شد ، ذکر این نکته لازم است ایجاد پست هایی که صرفا جهت تشکر ایجاد می شوند و هیچ بار دیگری ندارند از نظر قوانین سایت ممنوع است و مدیر بایستی نسبت به حذف آنها اقدام کند.

ضمنا کدهای پست 10 جهت رفتار صحیح Cursor اصلاح می شود.