PDA

View Full Version : سوال: فیلتر نمودن ساب فرم با چند شرط!



narpco
سه شنبه 25 آذر 1399, 18:53 عصر
سلام دوستان

یک فرم داریم و یک ساب فرم برای فیلتر کردن هر کدام از فیلد های ساب توسط فرم اصلی unbond از دستورات زیر استفاده میکنیم

نمونه کد




Me.frm_morkhasi_sub.Form.Filter = "[RCa_percode]= " & Nz(Me.RCa_percode.Value)
Me.frm_morkhasi_sub.Form.FilterOn = True
Me.frm_morkhasi_sub.Requery








و درست هم کار می کنه
حالا میخواهیم بجای یک فیلد ....همه فیلد ها رو فیلتر کنه بر اساس اطلاعات بالای فرم اصلی من هرچی and گذاشتم و تلاش کردم نشد (به عبارتی فیلد کردن با چند شرط) همه مورادی که باید فیلتر بشن عددی هستن

البته ازبین 5 فیلد فیلدهایی فیلتر میشن که خالی نباشند مثلا فیلد نام شرکت و سال پر هست خوب فیلتر بر اساس همون دو فیلد باید انجام بشه اگر هر 5 فیلد پر بود بر اساس 5 فیلد فیلتر کنه



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

narpco
سه شنبه 25 آذر 1399, 19:21 عصر
یک نمونه کدی هم پیدا کردم ولی خطا میده


Dim search1 As String
Dim search2 As String
Dim search3 As String
Dim search4 As String
search1=Me!txtFirstName.value
search2=Me!txtLastName.value
search3=Me!txtDelDate.value
search4=Me!txtPickupDate.value
Me!Open_Orders_Subform.Filter = "[First Name]= " & search1
Me!Open_Orders_Subform.Filter = "[Last Name]= " & search2
Me!Open_Orders_Subform.Filter = "[Delivery Date]= " & search3
Me!Open_Orders_Subform.Filter = "[Pickup Date]= " & search4
Me!Open_Orders_Subform.FilterOn = True

padide55
سه شنبه 25 آذر 1399, 20:13 عصر
سلام
موقتا فایل پیوست این تاپیک را ملاحظه بفرمایید.
اینجا (https://barnamenevis.org/showthread.php?563183-%D8%A2%D9%BE%D8%AF%DB%8C%D8%AA-%D8%B4%D8%AF%D9%86-%D9%81%D8%B1%D9%85-%D9%88-%D8%B3%D8%A7%D8%A8-%D9%81%D8%B1%D9%85-%D8%A8%D8%AF%D9%88%D9%86-%D8%A8%D8%B3%D8%AA%D9%86-%D8%A2%D9%86&p=2436451&viewfull=1#post2436451)

narpco
سه شنبه 25 آذر 1399, 22:30 عصر
ممنون عزیز اینو قبلا دیده بودم تقریبا انواع مدل های جستجو در فرم و کانتینیوس فرم ----رو بلدم

بیشترین مشکل کاربران در همه جای دنیا مشکل جستجو با چند شرط در ساب فرم هست ..تو همین سایت هم یک پستی برای سال 89 پیدا کردم که نمونه فایل هاش منقضی شده بود


جستجوی تکی رو هم به نتیجه رسوندم منتها چالش اصلی چند شرطه بودن و اینکه اگر فیلدی خالی بود ...اون رو برای جستجو در نظر نگیره که با NZ هم این مشکل حل نشد

تقریبا 20 مدل کد رو تست کردم موفق به این کار نشدم ............ تو تولید پروژه بعضی موقع ها به چالش هایی بر میخوریم که داستانیه برای خودش ..به هر حال دم شما گرم .....

padide55
سه شنبه 25 آذر 1399, 22:58 عصر
سلام مجدد.
نمونه فرمتون رو لطفا بفرستید

narpco
چهارشنبه 26 آذر 1399, 00:09 صبح
سلام ......فرم frm_main رو اجرا کنید خودش مسیر رو بهتون نشون میده --با تشکر

https://s17.picofile.com/d/8417682568/898835e0-0673-4501-aa5e-48f4d65f675c/TEST_SEARH.rar

padide55
چهارشنبه 26 آذر 1399, 14:05 عصر
سلام ......فرم frm_main رو اجرا کنید خودش مسیر رو بهتون نشون میده --با تشکر


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

filter= a and b and c

نمونه درست شده را ملاحظه بفرمایید.
توضیح اینکه فراموش نکنیددر فایل خودتون در on close فرم .همین حالا کد بدین تمام فیلترها برداشته بشه . در غیر اینصورت در بازکردن مجدد فرم خطا میده .

به همین خوشمزگی

152664 (https://s17.picofile.com/file/8417744350/TEST_SEARH2.zip.html)

narpco
پنج شنبه 27 آذر 1399, 09:56 صبح
سلام عزیز دم شما گرم ...

narpco
پنج شنبه 27 آذر 1399, 10:17 صبح
فقط یک سئوال این الان 3 تا فیلد رو جستجو میکنه با هم ......چطور بهش دستور اضافه کنیم برای 5 فیلد ......

نام شرکت
سال
ماه
کد پرسنل
شماره قرارداد

این مشکل رو حل کردم

فقط اینکه یادته گفتی موقع CLOSE فیلتر رو بردارم ؟
Me.frm_morkhasi_sub.Form.FilterOn = False

این خط رو اضافه کردم منتها هی خطا میگیره

padide55
پنج شنبه 27 آذر 1399, 10:21 صبح
فقط یک سئوال این الان 3 تا فیلد رو جستجو میکنه با هم ......چطور بهش دستور اضافه کنیم برای 5 فیلد ......

نام شرکت
سال
ماه
کد پرسنل
شماره قرارداد

سلام

همون روش

قسمت if
برای هر کدوم که خواستید یک ifدیگه اضاف کنید





If Nz(Me.RCa_coname.Value, "") <> "" Then
strWhere = strWhere & "[RCa_coname] = " & Me.RCa_coname.Value & " AND "
End If

If Nz(Me.RCa_year.Value, "") <> "" Then
strWhere = strWhere & "[RCa_year] = " & Me.RCa_year.Value & " AND "
End If
'----------------------------------------
'other if

If Nz(Me.myfield4.Value, "") <> "" Then
strWhere = strWhere & "[myfield4] = " & Me.myfield4.Value & " AND "
End If

'endf

'-------------------------------------
If Nz(Me.RCa_mah.Value, "") <> "" Then
strWhere = strWhere & "[RCa_mah] = " & Me.RCa_mah.Value & " AND "
End If



همچنان بجای myfield4 اسم فیلد خودتون رو بگذارید

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

میخوایم تمام ایتمها رو با هم در یک خط جمع کنیم .(تک به تک نباشه .
اون 5 که اخر هم کم کرده از اخر تکست باکس اگر 5 رو بردارید یک " and " شامل دو اسپسیس قبل و بعد و سه حرف and رو برمیداره . چون اضاف میاد. در اخر

هر مرحله کد رو با یک and به strWhere اضاف میکنه .

strWhere=filter1 & " and "
strWhere=strWhere+filter2 & " and "
strWhere=strWhere+filter3 & " and "
strWhere=strWhere+filter4 & " and "
strWhere=strWhere+filter5 & " and "

نتیجه
strWhere= filter1 and filter2 and filter3 and filter4 and filter5 and

بعد حذف and آخری

strWhere= filter1 and filter2 and filter3 and filter4 and filter5

بعد اعمال فیلتر
filter=strWhere
یعنی در عمل
filter= filter1 and filter2 and filter3 and filter4 and filter5



برای خروج من این کد را گذاشتم .خطا نداد



Me.frm_morkhasi_sub.Form.Filter = ""
Me.frm_morkhasi_sub.Form.FilterOn = False

ضمنا گم بودید . نگران شدم.

narpco
پنج شنبه 27 آذر 1399, 12:53 عصر
سلام ..ممنون از کد ها و احول پرسی......نه مورد خاصی نیست ..در گیر نوشتن یک فرم میشیم میبینی دو روز گذشت ...خیلی اعتیاد اوره کد نویسی اصلا متوجه زمان و مکان نمیشیم من وقتی کار می کنم ...
معمولا یک کاغذی دارم توش مینویسیم روند کار رو که یادم میوفته باید بیام ببینم نتیجه مثلا فلان سئوال چی شد .....خلاصه که دم شما دوستان گرم که هستین

الان درگیر یک موضوعی هستم در مورد تاریخ و ضربش که نمیدونم اینجا بگم یا نه ......تو این تاپیک

یک عدد ثابت داریم که خودت میدونی ساعات کار قانونی 7:20 هست
میخواهیم به توجه به این مرخصی یک سال رو بدست بیاریم تقسیم بر 365 --ضرب در تعداد روزهای قرارداد بکنیم که بدست بیاد هر روز قرارداد چقدر مرخصی بهش تعلق میگیره

ساعت کارقانونی *2.5 * 12 = مرخصی یکسال /365 = مرخصی یک روز * روزهای قرارداد = مرخصی متعلقه به نسبت مدت قرارداد ..یعنی اینکه طی این مدت قرارداد چقدر از مرخصی بهش تعلق میگیره ؟

میدونی مشکل اصلی در تعریف نوع فیلد ها در جدول - mask ها و فرمت هاشون تو فرم هست .....کاش یک پست میزاشتیم کامل بررسی میکردیم مطلب رو


چون جمعش بیشتر از 24 ساعت میشه دیگه قاطی میکنه ضرب و جمعش رو

چه پیشنهادی داری ...ممنون

تا بخش بدست اوردن زمان برای یکسال انجام شد

سر اخرین مرحله داستان داریم

یک تکست باکس داریم بدون هیچ نوع ماسک یا فرمت داخل عدد بدست امده = 190:40

اینو میخواهیم تقسیم بر 365 کنیم

eb_1345
پنج شنبه 27 آذر 1399, 15:44 عصر
سلام
دیروز یک فیلم کوتاه حدوداً دو دقیقه ای در خصوص چندحالت جسجو ( ساده ، متوسط و پیشرفته ) که در یکی از برنامه هایم( همان برنامه حسابداری که حال و حوصله تکمیل کردنش رو نداشته و ندارم:لبخندساده: )بکار برده ام تهیه کرده بودم که اشتباهاً بجای اینکه لینکش رو در این تاپیک قرار بدهم در تاپیک دیگری قرار داده بودم که مجبور شدم لینک رو در آنجا حذف کنم
گفتم این فیلم رو در اینجا قرار بدهم
دیدنش ضرر نداره:لبخندساده:
https://s17.picofile.com/file/8417874684/Search_In_My_Progeram.mp4.html

narpco
پنج شنبه 27 آذر 1399, 16:07 عصر
اتفاقا این فیلم رو دیدم همون موقع فیلتر های جالبی داشت من خودم چند موردش رو استفاده کردم تو برنامه ---بسیار هم ممنون

narpco
پنج شنبه 27 آذر 1399, 20:23 عصر
[QUOTE=eb_1345;2438168]سلام
دیروز یک فیلم کوتاه حدوداً دو دقیقه ای در خصوص چندحالت جسجو ( ساده ، متوسط و پیشرفته ) که در یکی از برنامه هایم( همان برنامه حسابداری که حال و حوصله تکمیل کردنش رو نداشته و ندارم:لبخندساده: )بکار برده ام تهیه کرده بودم که اشتباهاً بجای اینکه لینکش رو در این تاپیک قرار بدهم در تاپیک دیگری قرار داده بودم که مجبور شدم لینک رو در آنجا حذف کنم
گفتم این فیلم رو در اینجا قرار بدهم
دیدنش ضرر نداره:لبخندساده:
https://s17.picofile.com/file/8417874684/Search_In_My_Progeram.mp4.html[/QUOTE


یک سئوال در مورد صفحه اصلی برنامه در عکس زیر مورادی که با فلش قرمز مشخص شده اند چی هستند که وسطش خط نورانی داره

عکس هست که کشیده شده .......گرادیان هست ؟ یک توضیحی بدین ممنون میشم
ممنونم


https://s17.picofile.com/file/8417902000/ford.png (https://s17.picofile.com/file/8417902000/ford.png)

eb_1345
پنج شنبه 27 آذر 1399, 22:36 عصر
[QUOTE=eb_1345;2438168]سلام
دیروز یک فیلم کوتاه حدوداً دو دقیقه ای در خصوص چندحالت جسجو ( ساده ، متوسط و پیشرفته ) که در یکی از برنامه هایم( همان برنامه حسابداری که حال و حوصله تکمیل کردنش رو نداشته و ندارم:لبخندساده: )بکار برده ام تهیه کرده بودم که اشتباهاً بجای اینکه لینکش رو در این تاپیک قرار بدهم در تاپیک دیگری قرار داده بودم که مجبور شدم لینک رو در آنجا حذف کنم
گفتم این فیلم رو در اینجا قرار بدهم
دیدنش ضرر نداره:لبخندساده:
https://s17.picofile.com/file/8417874684/Search_In_My_Progeram.mp4.html[/QUOTE


یک سئوال در مورد صفحه اصلی برنامه در عکس زیر مورادی که با فلش قرمز مشخص شده اند چی هستند که وسطش خط نورانی داره

عکس هست که کشیده شده .......گرادیان هست ؟ یک توضیحی بدین ممنون میشم
ممنونم


https://s17.picofile.com/file/8417902000/ford.png (https://s17.picofile.com/file/8417902000/ford.png)


بله ، گرادیانه
فیلم رو از لینک زیر دانلود و ملاحظه بفرمائید!
https://s17.picofile.com/file/8417914384/Gradiant.mp4.html

mazoolagh
جمعه 28 آذر 1399, 11:08 صبح
یک راه سرراست و ساده برای ساختن شرط های and/or وقتی تعداد اونها متغییر (یا زیاد) باشه، این هست که شرط ها رو در یک array بریزین و بعد اوها رو با and/or ، به هم بچسبونین (join)

atf1379
جمعه 28 آذر 1399, 16:50 عصر
یک راه سرراست و ساده برای ساختن شرط های and/or وقتی تعداد اونها متغییر (یا زیاد) باشه، این هست که شرط ها رو در یک array بریزین و بعد اوها رو با and/or ، به هم بچسبونین (join)
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
ممکنه خواهش کنم برای این روش یک مثال یا فایل نمونه ارائه بفرمائید . روش جالبی بنظر میرسه

mazoolagh
شنبه 29 آذر 1399, 10:15 صبح
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
ممکنه خواهش کنم برای این روش یک مثال یا فایل نمونه ارائه بفرمائید . روش جالبی بنظر میرسه

سلام و روز خوش
نمونه میگذارم

padide55
شنبه 29 آذر 1399, 10:47 صبح
سلام

نمونه های فایل آموزشی اکسس در لینک زیر

برای سوال مورد نظر در زمینه فیلتر
فایل combo را دانلود کنید

152694 (https://onedrive.live.com/?id=44CC60D7FEA42912%21169&cid=44CC60D7FEA42912)

mazoolagh
سه شنبه 02 دی 1399, 14:13 عصر
سلام جناب mazoolagh (https://barnamenevis.org/member.php?9893-mazoolagh)
ممکنه خواهش کنم برای این روش یک مثال یا فایل نمونه ارائه بفرمائید . روش جالبی بنظر میرسه

یک تاپیک مستقل براش ایجاد میکنم