PDA

View Full Version : مقاله: ساخت فیلتر های پیچیده با استفاده از تابع EasyFilter در اکسس



mhkavian
دوشنبه 06 آبان 1392, 00:19 صبح
مبحث فيلتر كردن فرم ها يكي از مهم ترين مباحث در نرم افزار اكسس مي باشد . تاكنون امكانات و ابزار هاي گوناگوني توسط خود مايكروسافت و ساير شركت ها و افراد مختلف براي ساده سازي اين فرآيند طراحي گرديده است .

امكانات خود نرم افزار اكسس براي فيلتر كردن فرم هاي در حال نمايش بسيار قوي مي باشد ولي با دو مشكل عمده همراه مي باشد :




اين امكانات به هنگام بستن منو و ريبون ها در برنامه اي كه تحويل كاربرنهايي مي گردد ، غير فعال مي شوند و استفاده از آنها ممكن ولي با مشكلاتي همراه مي باشد .
تغيير زبان اين امكانات براي فارسي زبانان كاري بسيار مشكل مي باشد .



لذا اكثر كاربران براي ايجاد امكان فيلتر كردن در فرم هاي خود اقدام به كد نويسي نموده كه اين كار نيز به نوبه خود كار پيچيده اي است و براي تمامي كاربران امكان پذير نمي باشد .

اين مشكل با افزايش تعداد فيلدها و امكان پر يا خالي بودن تصادفي آنها به هنگام فيلترينگ و متغير بودن نوع فيلدهاي استفاده شده در فيلتر ، دوچندان شده ، به نحوي كه ساختن فرمهاي فيلتر و جستجو را براي كاربران به امري شدني ولي طاقت فرسا تبديل نموده است .



http://www.mantis.ir/media/k2/items/cache/aaa082d2257ab65aecf61c2340e9c5b9_XL.jpg



لذا مصمم شدم تا ساخت پيچيده ترين فيلتر ها را براي فرم هاي در حال نمايش به پروسه اي بسيار ساده تبديل نمایم و تابع mantis_easy_filter را طراحی و در این انجمن قرار دادم تا به کمک اساتید و سایر اعضای گرامی سایت نواقص احتمالی آن را رفع کرده و آنرا توسعه بخشیده تا قابل استفاده برای عموم گردد .
تابع Mantis_Easy_Filter ، كه از طريق ساخت يك عبارت قابل استفاده در خاصيت filter فرم ها ، انجام فيلتر را راحت كرده ، به نحوي طراحي گرديده كه كنترل هاي متني ( TextBox , ComboBox , CheckBox ,MultiValueBox ) روي فرم را ( در صورتي كه نام آنها از قواعد خاصي كه مختص اين تابع است پيروي كرده باشد ) شناسايي كرده و با توجه به مقدار درون آنها كه مي تواند حتي Null هم باشد ، عبارت فيلتر را ساخته و مورد استفاده قرار دهد .
براي استفاده از اين تابع بايستي مراحل ذيل را قدم به قدم براي رسيدن به هدف انجام داد :




كنترل هاي فيلتر و جستجو در درون يك فرم اصلي قرار مي گيرد كه اين فرم به اين منبع داده اي متصل نيست و كليه كنترل ها به صورت unbound مي باشند .
در درون فرم اصلي بايستي يك Sub Form قرار گيرد كه در اين سابفرم فيلدهاي مورد جستجو قرار مي گيرد . و Sub Formبه جدول يا پرسش خاصي متصل مي باشد و كنترل ها درون آن نيز به فيلدها bound شده اند . لازم به ذكر است كه اين Sub Formمي تواند در هر نمايي اعم از Datasheet , Single Form , Continuous Forms باشد .
هر يك كنترل هاي روي فرم اصلي را كه قرار است به عنوان شرط فيلتر يا جستجو استفاده شود طبق قاعده زير نام گذاري نماييد . (خاصيت name كنترل):



نام كنترل از سه قسمت تشكيل مي شود :

قسمت اول (پيشوند ) : يك عبارت سه حرفي است كه نوع فيلد مورد جستجو را تبيين مي كند .

اين عبارت سه حرفي بايستي قطعا يكي از موارد ذيل باشد .

Str : براي فيلدهاي متني

Val : براي فيلدهاي عددي

Bol : براي فيلدهاي Boolean

Mul : براي فيلدهاي multivalue

Bt1 : براي فيلدهاي بازه اي عددي ( از عدد )

Bt2 : براي فيلدهاي بازه اي عددي ( تا عدد )

Dt1 : براي فيلدهاي بازه اي تاريخ ( از تاريخ )

Dt2 : براي فيلدهاي بازه اي تاريخ ( تا تاريخ )

قسمت دوم (نام فيلد ) : نام فيلدي است كه قرار است مورد جستجو قرار گيرد .

قسمت سوم (پسوند ) : عبارت ثابت flt مي باشد كه كنترل را براي تابع قابل شناسايي مي كند كه باعث مي شود از مقادير درون اين كنترل در ساخت عبارت فيلتر استفاده شود .

لازم به ذكر است كه قسمت اول ، دوم و سوم با استفاده از كاراكتر underline يا همان “_” ، بايستي به هم متصل شوند .

به طور مثال اگر ما قصد ايجاد فيلتر بروي يك فيلد با نام ID كه از نوع عددي مي باشد داشته باشيد نام كنترل بايستي دقيقا عبارت “val_id_flt” باشد .

در مثال فوق اگر نوع فيلد متني باشد بايستي نام كنترل عبارت “str_id_flt “ باشد .

مثال ديگر : در صورتي كه بخواهيد از دو تكست باكس براي تعيين بازه زماني در فيلتر استفاده كنيد و نام فيلد مورد جستجو در جدول مثلا invoice_date و از نوع date& time باشد ، بايستي خاصيت Name يكي از كنترل هاي متني را برابر با “dt1_invoice_date_flt” و خاصيت name دومي برابر با “dt2_invoice_date_flt” قرار دهيد .

لازم به ذكر است در صورتي كه فيلد تاريخ شما در جدول از نوع عددي باشد بايستي از پيشوند عبارت bt1 و bt2 به جاي dt1 و dt2 استفاده نماييد .

4 – آخرين قدم ساخت دكمه "فيلتر" و دكمه "حذف فيلتر" مي باشد :

دكمه فيلتر : يك دكمه با نام فيلتر ايجاد نماييد و دو خط كد زير را در خاصيت on click آن درج كنيد :

Me.SubForm_Name.Form.Filter = Easy_filter_all(“SubForm_RrecordSource”)

Me. SubForm_Name.Form.FilterOn = True

لازم به ذكر است كه به جاي عبارت SubForm_Nameدر كد فوق بايستي نام سابفرم استفاده شده در فرم اصلي درج گردد . ( خاصيت name كنترل subform موجود )

همچنين به جاي عبارت SubForm_RrecordSourceدر كد فوق بايستي نام جدول يا پرسشي جايگزين شود كه سابفرم به آن متصل مي باشد . ( عبارت sql در اينجا قابل پشتيباني نبوده و بايستي تبديل به پرسش شده و سپس ازنام پرسش استفاده شود . )

دكمه حذف فيلتر : يك دكمه با نام حذف فيلتر ايجاد نماييد و دو خط كد زير را در خاصيت on click آن درج كنيد :

Me. SubForm_Name.Form.FilterOn = False

R_remove = Easy_remove_filter_all()

در پايان ذكر اين نكته ضروري به نظر مي رسد كه سادگی پروسه به ظاهر پيچيده فوق بعد از یک بار استفاده محرز می گردد به طوریکه تنها با چهار خط كد vba و يك نام گذاري مناسب روي فيلدها می توان برنامه را به یک جستجوی پیشرفته در هر کدام از جداول یا پرسش ها مجهز نمود .


همچنين براي اضافه كردن يك فيلد اضافه برای جستجو در فرم ، كاربر كافي است كه فيلد مورد نظر را به سابفرم اضافه نموده و كنترل متناظر با آن فيلد را با يك نام گذاري مناسب در فرم اصلي قرار دهد . و بدون كدنويسي جديد يا تغيير كدنويسي هاي موجود به هدف خود برسد .

در اين روش با توجه به محدوديت تعداد كاراكتر خاصيت فيلتر كه 1024 كاراكتر مي باشد با يك نامگذاري مناسب ( با توجه به استفاده از پيشوند و پسوند بهتر است نام فيلدها كوتاه تر در نظر گرفته شود . ) روي فيلدها مي توان از 30 الي 40 فيلد براي فيلترينگ همزمان استفاده كرد .
لطفا براي درك نحوه استفاده ازاين تابع پس از مطالعه اين مقاله ، فيلم آموزشي تهيه شده را نيز ملاحظه نموده و سپس فايل پيوست را كه به صورت عملي اين روش در آن پياده سازي شده ، دانلود و مرور نماييد .
فایل نمونه را می توانید از این آدرس دانلود نمایید .

نمونه فایل ساخت فیلتر های پیچیده با استفاده از تابع EasyFilter در اکسس (http://www.mantis.ir/access-knowledge/access-articles/item/82)


فیلم آموزشی نحوه استفاده از تابع :
ایجاد فیلتر و جستجو ی پیشرفته با استفاده از تابع Easy Filter : قسمت اول (https://www.dropbox.com/s/ndevvbg0pnke8rv/Mantis_easy_filter_1.swf)
ایجاد فیلتر و جستجو ی پیشرفته با استفاده از تابع Easy Filter : قسمت دوم (https://www.dropbox.com/s/cjdgohsitkz5c4p/Mantis_easy_filter_2.swf)
ایجاد فیلتر و جستجو ی پیشرفته با استفاده از تابع Easy Filter : قسمت سوم (https://www.dropbox.com/s/k30lb2w3womfynb/Mantis_easy_filter_3.swf)


پیروز و سربلند
کاویان

mazoolagh
دوشنبه 06 آبان 1392, 11:08 صبح
فیلم ها رو ندیدم ولی کار آقای کاویان جدای از ارزش و کاربردی که داره، از جنبه مستند کردن و به اشتراک گذاشتن اون هم قابل قدردانی هست.

Nazir Ahmad
سه شنبه 07 آبان 1392, 08:18 صبح
عرض سلام و خسته نباشید خدمت گرامی
من تمام این کارایی که گفتید رو انجام دادم اما فیلتر انجام نمیشه و پیغام زیر رو میده.
لطفا راهنمایی کنید که مشکل چیه؟
در ضمن نمونه‌ای که خود شما هم گذاشتید عمیله فیلتر انجام نمیشه. حالا نمیدونم مشکل از کجاست. (البته من از آفیس 2013 استفاده میکنم)
ممنون
یا حق

mhkavian
سه شنبه 07 آبان 1392, 14:14 عصر
با سلام
ضمن تشکر از اطلاع رسانی شما ، مشکل در تنظیم references بود که برطرف گردید می تونید مجددا از همون آدرس دانلود و استفاده کنید .
در صورتی که باز هم مشکل دارید احتمالا به نسخه آفیس شما و رفرنس DAO 3.6 برمی گردد که بایستی در قسمت references رفته و نسخه بالاتر این رفرنس رو پیدا کرده و جایگزین کنید .
با تشکر
کاویان

Nazir Ahmad
چهارشنبه 08 آبان 1392, 13:29 عصر
با سلام
ضمن تشکر از اطلاع رسانی شما ، مشکل در تنظیم references ها بود که برطرف گردید می تونید مجددا از همون آدرس دانلود و استفاده کنید .
در صورتی که باز هم مشکل دارید احتمالا به نسخه آفیس شما و رفرنس DAO 3.6 برمی گردد که بایستی در قسمت references رفته و نسخه بالاتر این رفرنس رو پیدا کرده و جایگزین کنید .
با تشکر
کاویان
سلام دوباره
فایل رو دوباره دانلود کردم اما باز هم همون ارور رو میده
البته فایل اصلی شما مشکلی نداره اما وفتی تو فایل خودم همه اون کارایی که گفتید رو انجام میدم باز هم با همون پیغام پست 3# مواجه میشم.
فایل رو هم ضمیمه کردم. اگر ممکنه یه نگاهی بهش بندازید.
و یک سوال دیگه اینکه من بخش reference رو پیدا نکردم. اگر ممکنه بیشتر توضیح بدید.

ممنون
یا حق

abas1388
چهارشنبه 08 آبان 1392, 15:34 عصر
سلام جناب كاوياني!
نمونه فوق در قالب چه ورژني از اكسس تهيه شده؟ من با اكسس 2003 و 2007 نميتوانم آن را باز كنم.
با تشكر

mhkavian
پنج شنبه 09 آبان 1392, 00:48 صبح
با سلام


نمونه فوق در قالب چه ورژني از اكسس تهيه شده؟ من با اكسس 2003 و 2007 نميتوانم آن را باز كنم.نمونه در فرمت 2003 که برای عموم مناسب تر است قرار گرفت و مجددا در همان محل قبلی آپلود شد .
می توانید مجددا از همان محل دانلود کنید .
هنگامی که این تابع در فایلهای 2003 به بالا استفاده شود امکان فیلتر کردن فیلدهای multivalue را نیز دارد .


فایل رو دوباره دانلود کردم اما باز هم همون ارور رو میده
البته فایل اصلی شما مشکلی نداره اما وفتی تو فایل خودم همه اون کارایی که گفتید رو انجام میدم باز هم با همون پیغام پست 3# مواجه میشم.
فایل رو هم ضمیمه کردم. اگر ممکنه یه نگاهی بهش بندازید.
و یک سوال دیگه اینکه من بخش reference رو پیدا نکردم. اگر ممکنه بیشتر توضیح بدید.برای رفع مشکل محتویات فایل شما را در فایل mantis_easy_filter وارد کردم . که دیگه اون ارور رو نمی ده .
برای جواب گرفتن فایلتون مشکلات زیادی داشت که برطرف شد. به طور مثال در نام جداول و فیلدها نباید از عملگر های - = + & و غیره استفاده می کردید که اصلاح شد . در غیر اینصورت تابع کار نخواهد کرد .

112397

برای تنظیم رفرنس در قسمت visual basic editor با یستی به منوی tools گزینه references رفته و توابع لازم را در آنجا کم و زیاد کنید .

پیروز و سربلند
کاویان

1397mehrdad
شنبه 11 آبان 1392, 19:12 عصر
با تشکر از این برنامه مفید . می خوام با استفاده از این تابع فرم فیلتر درست کنم و از اطلاعات فیلتر شده گزارش تهیه کنم . چطور می تونم اطلاعاتی رو که فیلتر کردم به یک گزارش متصل کنم و ازش گزارش بگیرم؟

mhkavian
یک شنبه 12 آبان 1392, 01:38 صبح
با سلام
با توجه به اینکه عبارت مورد نظر در خاصیت فیلتر فرم به صورت آماده وجود دارد کافیست با استفاده از دستور زیر گزارش را باز نمایید .
در کد نمونه نام گزارش شما myreport می باشد .
این کد را در پشت دکمه ای در فرم اصلی خود بگذارید .

docmd.openreport "myreport",,me.filter
با سپاس
کاویان

1397mehrdad
سه شنبه 14 آبان 1392, 16:29 عصر
با تشکر از جناب کاویان .
من راه حل شما رو امتحان کردم ولی جواب نداد . اگه ممکنه ی نمونه بگذارید
با تشکر

mhkavian
سه شنبه 14 آبان 1392, 23:48 عصر
با سلام
در پست اول و پست شماره 7 دو نمونه آورده شده است .
اگر ممکنه نمونه تون رو اینجا آپلود کنید تا بررسی بشه .
با سپاس
کاویان

1397mehrdad
چهارشنبه 15 آبان 1392, 22:55 عصر
من هر دو فایل رو دانلود کردم . فایل پشت شماره 1 اصلا باز نمی شه و فرمهای فایل پست شماره 7 هم باز نمی شه . لطفا در صورت امکان اصلاحشون کنید .
ممنون

hamid-nice
پنج شنبه 16 آبان 1392, 12:39 عصر
با سلام
فیلتراسیون شما راست کلیک را ساپورت نمی کند
دقیقا آخرین رکورد را دوباره اضافه کنید
در قسمت سابفرم در قسمت بحث تعامل رفته و راست کلیک کرده سپس مالی را فیلتر کنید نتیجه دو مورد خواهد بود
به قسمت بالای فرم بروید و در قسمت نوع تعامل عبارت ارسالی را انتخاب و اعمال فیلتر را بزینید نتیجه سه مورد می شود یعنی نتیجه به جای اینکه کمتر شود بیشتر شده به این دلیل که اعمال فیلتر روی نتیجه راست کلیک انجام نشده بلکه آنرا نادیده گرفته است
موفق باشید

mhkavian
پنج شنبه 16 آبان 1392, 13:07 عصر
با سلام
ضمن تشکر از بررسی شما بر روی تابع به عرض می رساند که به مطلب درستی اشاره فرمودید . البته لازم به ذکر است که این تابع برای شرایطی طراحی شده که کاربر از استفاده از امکانات اکسس به دلیل امنیتی محروم شده است . در غیر این صورت اکسس امکانات فوق العادی ای برای انجام فیلترینگ فراهم نموده است .
با توجه به اینکه در فیلتر با استفاده از امکانات اکسس نیز از خاصیت فیلتر فرم استفاده می شود ، بایستی یکی از این دو روش را انتخاب نمود . در غیر این صورت باید به گونه ای باشد که هنگامی که با استفاده از راست کلیکل سابفرم را فیلتر می کنیم ؛ فیلدهای بالا نیز که برای فیلتر در فرم اصلی تعبیه شده اند دارای مقداری شود که همان فیلتر را نتیجه دهد . البته انجام اینکار کار پیجیده ولی ممکنی می باشد که بایستی با استفاده از ترجمه معکوس عبارت فیلتر صورت پذیرد ولی مشکلی که بر سر راه است این است که ممکن است کاربر در فرم اصلی ( قسمت بالای فرم ) ، هیچ جعبه متنی با نام مناسب برای فیلدی که در سابفرم آن را با راست کلیک فیلتر کرده است فراهم ننموده باشد .
به عبارت بهتر می توان گفت که ایجاد یک فیلتراسیون یکپارچه با سایر روش های فیلتراسیون موجود در اکسس کاری شدنی که این محدودیت را به همراه دارد که بایستی فیلدهای موجود در سابفرم با جعبه متن های تعبیه شده برای انجام عملیات فیلتر در بالای فرم دقیقا متناظر باشند . در غیر اینصورت مبحث یکپارچگی دچار مشکل می شود .
با سپاس
کاویان

hamid-nice
پنج شنبه 16 آبان 1392, 16:56 عصر
با سلام
از آنجا که شما موضوع فیلتر را به صورتی جامع مطرح کرده اید و برای آن اقدام به نوشتن تابع جامعی کرده اید انتظار می رود که این پیچیدگی ها لحاظ شود
2- راست کلیک را می توان با استفاده از ماکرو ها ایجاد کرد و هیچ نیازی به دسترس بودن منوی راست کلیک اصلی اکسس نیست بنابراین نیاز به لحاظ این پیچیدگی می باشد (البته من این کار را با ادغام فلتراسیون با کوئری انجام داده ام که عالی عمل می کند ) ولی در استفاده از فقط دستور filter شاید اگه بتوان فیلتر کردن با راست کلیک را با نامی یا ... ذخیره کرد و هنگام اعمال فیلتر آنرا فراخوانی و لحاظ کرد جوابگو شود
و من الله توفیق
موفق باشید

mhkavian
پنج شنبه 16 آبان 1392, 22:16 عصر
با سلام

مشکلی که بر سر راه است این است که ممکن است کاربر در فرم اصلی ( قسمت بالای فرم ) ، هیچ جعبه متنی با نام مناسب برای فیلدی که در سابفرم آن را با راست کلیک فیلتر کرده است فراهم ننموده باشد .
به عبارت بهتر می توان گفت که ایجاد یک فیلتراسیون یکپارچه با سایر روش های فیلتراسیون موجود در اکسس کاری شدنی که این محدودیت را به همراه دارد که بایستی فیلدهای موجود در سابفرم با جعبه متن های تعبیه شده برای انجام عملیات فیلتر در بالای فرم دقیقا متناظر باشند . در غیر اینصورت مبحث یکپارچگی دچار مشکل می شود .

به نظر من اگر کاربر را مجبور کنیم که تمام فیلدهای موجود در سابفرم را برای انجام عملیات فیلتر روی فرم اصلی بیاورد عملا filter by form خود اکسس را شبیه سازی کرده ایم که عملا کاربر و برنامه نویس را دچار یک محدودیت بزرگ ( همان استفاده از تمامی فیلدها برای جستجو ) نموده ایم .
به نظر شما در خصوص این مشکل چه راه کاری می توان پیش گرفت ؟
اگر راه کارتون قابل بهره برداری هست و براتون ممکنه آپلود کنید .

با سپاس
کاویان

hamid-nice
پنج شنبه 16 آبان 1392, 22:42 عصر
با سلام
چشم ، به زودی نمونه ای کاملا فراگیر و ساده که فیلتر بر اساس قسمت بالای فرم با انتخاب دلخواه تعداد فیلد ( نه لزوما همه فیلد ها ) و هم بر اساس راست کلیک که هردو همدیگر را پوشش دهند در هر صور تی بر روی نتایج همدیگر فیلتر را انجام دهند خدمتتان ارایه می کنم و اگر همه دوستان لطف کنند و چک کنند و اگر اشکالی بود تذکر دهند ممنون می شم
اما جناب کاویان در ضمن تشکر از زحماتتان ،اگر می توانید پروژه خود را بر اساس همان یک روش کامل کنید یا روشی دیگر که تابعی باشد که بتوان به راحتی متغیر های دلخواه را تعریف کرد نیز بسیار خوب بود ، دوستان دیگر هم اگر بتوانند به شما کمک کنند که چه بهتر و پروژتون زودتر به نتیجه می رسد و قابل بهره برداری برای همه
با تشکر

1397mehrdad
پنج شنبه 16 آبان 1392, 22:47 عصر
میشه نمونه ای که بوسیله اکسس 2003 هست رو یک بار دیگه در سایت قرار بدید؟فایل نمونه قبلی مشکل داره و فرمهاش باز نمی شه !!!
ممنون

hamid-nice
جمعه 17 آبان 1392, 23:38 عصر
با سلام
نمونه ای که در پست قبلی ام وعده داده بودم را در ضمیمه پیوست کردم
نحوه کاربرد :
در قسمت بالا هر عبارتی که تایپ کنید دقیقا همان را با زدن کلید جستجو سرچ می کند
2-اگر می خواهید از نتایج یافته شده قسمتی ار یک فیلد را سرچ کنید به قسمت نتایج رفته در فیلد مورد نظر با موس همان قسمت از متن داخل فیل مورد نظر را انتخاب و با راست کلیک فیلتر کنید
3- اگر خواستید فیلتر راست کلیک را دوباره حذف کنید ولی نتایج قبلی که با دگمه جستجو بدست آمده بود را حفظ کنید (برگردد) کافی است با راست کلیک حذف فیلتر را بزنید
4- در هر صورت چه ابتدا با راست کلیک فیلتر کنید و بعد با جستجوی بالای صفحه یا حتی بالعکس فیلتر ها بر روی نتایج همدیگر عمل می کنند
5- برای حذف فیلتری که در بالای صفحه توسط دگمه جستجو انجام می دهید ار دگمه زیر آن استفاده کنید
6-برای حذف کل فیلتر های انجام شده ( توسط دگمه جستجو و راست کلیک ) باید هم دگمه زیر دگمه جستجو و هم حذف فیلتر توسط راست کلیک کردن را انجام داد )یا از دگمه حذف کلیه فیلترها استفاده شود برای اینکه کاربر متوجه این باشد که از فیلترینگ راست کلیک استفاده کرده یا نه من یک دگمه با عکس چراخ درست می کنم که وقتی از فیلتر راست کلیک استفاده کند خاصیت visible آنرا yes و وقتی آنرا با راست کلیک حذف کرد این خاصیت No شود لذا کار به بهترین وجه کامل می شود .
دوستان لطفا موارد عنوان شده را تست فرمایند و اگر ایرادی وجود داشت اعلام نمایند
با تشکر

1397mehrdad
یک شنبه 19 آبان 1392, 21:14 عصر
با تشکر از جناب کاویان .
من راه حل شما رو امتحان کردم ولی جواب نداد . اگه ممکنه ی نمونه بگذارید
با تشکرکسی می تونه ی نمونه بگذاره که فیلتر انجام شده به یک گزارش وصل بشه و اون گزارش نمایش داده بشه؟

G.hemati
یک شنبه 19 آبان 1392, 22:55 عصر
با سلام و احترام خدمت تمامی دوستان

دوستان لطفا موارد عنوان شده را تست فرمایند و اگر ایرادی وجود داشت اعلام نمایند

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

در این مواقع چگونه عمل باید کرد.

hamid-nice
یک شنبه 19 آبان 1392, 23:55 عصر
با سلام و احترام خدمت تمامی دوستان


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

در این مواقع چگونه عمل باید کرد.
با سلام
با تشکر از ابراز نظرتان منوی راست کلیک را باید خودتان در برنامه ایجاد کنید
فایل ضمیمه در پست 19# مطابق با در خواست شما اصلاح و یک دگمه برای حذف هر دو فیلتراسون هم اضافه گردید
در ضمن جناب کاویان این تاپیک مربوط به شماست و پروژه خودتان را ادامه دهید و پست و فایلی که ارائه دادم صرفا به درخواست خودتان با روشی متفاوت بوده است و دیگر دوستان هم به پیشبرد موضوع این تاپیک بانظراتشان ادامه خواهند داد
برای اینکه ابراز نظر دوستان در رابطه با فایلی که اینجانب قرار دادم مزاحم و باعث به انحراف کشیده شدن موضوع شما نشود تاپیک زیر را ایجاد کردم که کسانی که مایل به بررسی فایل اینجانب هستند در این تاپیک ابراز نظر نکرده و به جای آن در تاپیک زیر ادامه دهند
http://barnamenevis.org/showthread.php?427302-%D8%A7%D9%86%D8%AC%D8%A7%D9%85-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A7%D8%AF%D8%BA%D8%A7%D9%85-%D9%88-%D9%87%D9%85%D9%BE%D9%88%D8%B4%D8%A7%D9%86%DB%8C-%D8%A2%D9%86-%D8%A8%D8%A7-%D9%81%DB%8C%D9%84%D8%AA%D8%B1%D8%A7%D8%B3%DB%8C%D 9%88%D9%86-%D8%B1%D8%A7%D8%B3%D8%AA-%DA%A9%D9%84%DB%8C%DA%A9
با تشکر
موفق باشید

Nazir Ahmad
سه شنبه 21 آبان 1392, 07:35 صبح
سلام دوباره
یه سوال دیگه اینکه که در صورتیکه یکی یا چند تا از فیلدهایی رو که میخواهیم فیلتر کنیم به شکل مولتی سلکت باشه یعنی ما به جای کمبوباکس از لیست باکس استفاده میکنیم و میخواهیم چند گزینه از لیست باکس رو انتخاب کنیم و عملیة فیلتر رو انجام بدیم؛ چیکار کنیم.

ممنون
یاحق

Ermoodi
چهارشنبه 22 آبان 1392, 19:20 عصر
با سلام و تشکر
بسیار عالی و کاربردی بود
ای کاش می شد منوسازی را هم برامون بصورت تصویری آموزش می دادین.
ممنون

مجتبی8522201617
سه شنبه 26 آذر 1392, 14:00 عصر
با سلام
دوستان و مهندسین گرامی
من این تابع رو انجام دادم ولی با مشکل compile error مواجه شدم. درحالیکه بسیار علاقمند شده بودم که این کار فوق العاده رو روی برنامه خودم انجام بدم اما متاسفانه نشد.
در قسمت tools نیز گزینه refrence غیر فعال است.
و نکته دیگه اینکه در فیلم مشاهده شده، وقتی اولین حرف Easy filter رو وارد می کنید، چند گزینه به صورت پیشنهاد به شما می دهد ولی وقتی من این کارو می کنم هیچ خبری از پیشنهادات نیست.
خواهش می کنم راهنمایی بفرمائین
با تشکر فراوان

mehran_sm2010
چهارشنبه 27 آذر 1392, 08:03 صبح
برادر گرامي جناب آقاي كاويان؛
با سلام و تشكر به خاطر كار ارزشمندتون، بنده موفق نشدم فايلهاي آموزشي رو دانلود كنم.
وقتي لينك رو كليك ميكنم وارد آدرس زير مي‌شه كه امكان دانلودش هم كار نميكنه:
https://www.dropbox.com/s/ndevvbg0pnke8rv/Mantis_easy_filter_1.swf
خواهش مي‌كنم بررسي و تصحيح بفرماييد. در آخر كاري كه از دست بنده براي افرادي مثل شما بر‌مياد يك دعاست:
تنت به ناز طبیبان نیازمند مباد - وجود نازکت آزرده گزند مباد
در آن بساط که حسن تو جلوه آغازد - مجال طعنه بدبین و بدپسند مباد

mhkavian
چهارشنبه 27 آذر 1392, 22:35 عصر
با سلام
ممنون از حسن نظرتون ، من هم برای شما آرزو سلامتی و بهروزی دارم .
در خصوص دانلود فیلم ها با مرورگر فایرفاکس امتحان کنید احتمالا مشکلی نداره !


من این تابع رو انجام دادم ولی با مشکل compile error مواجه شدم. در قسمت tools نیز گزینه refrence غیر فعال است.
سعی کنید بعد از دانلود فایل اشیای فایل خودتون رو به داخل فایل دانلود شده منتقل کنید .
برای اینکه برنامه کار کنه بایستی کامپایل بشه .
با سپاس
کاویان

مجتبی8522201617
پنج شنبه 28 آذر 1392, 09:52 صبح
جناب کاویان
ببخشید، میدونم زحمت زیادیه!!
این فایل اکسس رو که تستی درست کردم و همه اون کارهارو روش انجام دادم براتون می زارم. یه نگاه 2 دقیقه ای اگه بهش بندازین ممنون می شم.

مجتبی8522201617
یک شنبه 01 دی 1392, 10:01 صبح
کاویااااااااااااااااااااا ااااااااااااااااااااااااا ااااااااااااااااااااااااا اااااااااااان
heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelp

mehran_sm2010
یک شنبه 01 دی 1392, 14:06 عصر
با سلام مجدد وخسته نباشید؛ جناب کاویان- من با استفاده از فایلی که دانلود کردم یک فرم جستجو درست کردم و همه مراحل رو به دقت انجام دادم. ابتدا پیغام ایراد کامپایل رو میداد که درست شد ولی مشکلی که الان دارم، عمل جستجو انجام نمی شود . مطمئنم که مراحل کار هم درست است . اگر ممکن است بفرمایید که در قسمت رفرنس باید چه تنظیماتی را انجام بدهیم و کدام گزینه ها بایدتیک خورده و یا کدام گزینه ها باید تیکشون برداشته شود. فکر میکنم این مشکلی هست که اکثر کاربران و مراجعین به این تاپیک داشته باشند. در ضمن دقیقا از کدام نسخه (آفیس) اکسس 2007 استفاده کنیم که دیگر این مشکلات را نداشته باشیم. باز هم از کار عالی و پر محتواتون قدردانی میکنم.

mhkavian
دوشنبه 02 دی 1392, 06:50 صبح
با سلام
شما در صورتی که از اکسس 2010 استفاده کنید و یک فایل جدید ایجاد کنید و تمامی آبجکت های مورد نیاز خودتون رو از فایل قبلی خود و فایل mantis_easy_filter به درون آن منتقل کنید هیچ مشکلی نخواهید داشت .
حداقل رفرنس های لازم هم برای 2010 اینها هستش :
http://www.mantis.ir/discusses.html?controller=attachment&task=displayFile&tmpl=component&id=71

فایل دو پست قبل هم به همین روش اصلاح و قابل دانلود 114283گردید .
از دوستان خواهش می کنم که با توجه به اینکه مدتهاست اکسس 2013 ارائه شده ، به نسخه قبل از آن یعنی اکسس 2010 مهاجرت کنند .
با سپاس
کاویان

مجتبی8522201617
سه شنبه 03 دی 1392, 10:53 صبح
جناب کاویان
ممنوووووووووووووووووووووو ووووووووووووووووووووووووو ووووووووووووووووونم!!
you're a life saver

ARData
پنج شنبه 05 دی 1392, 07:46 صبح
با تشکر از تمامی دوستان با توجه به تلاش زیاد جهت ساخت این برنامه ، بهتر بود بدون اعمال Apply Filter و در زمان On Change فیلد ها ، فیلترها اعمال میشد !!!

mhkavian
دوشنبه 09 دی 1392, 14:17 عصر
سلام
با public کردن کد متصل به دکمه اعمال فیلتر و سپس hide کردن آن دکمه ، می توان کد عمومی شده را در رویداد on change هر یک از کنترل ها فراخوانی کرد و به هدف رسید .
با سپاس
کاویان

Nazir Ahmad
پنج شنبه 08 اسفند 1392, 10:01 صبح
سلام خدمت جناب کاویان عزیز
من از کد نویسی زیاد سر در نمیارم اما فکر کنم این تابع برای ساب فرمها کاربرد داره اما درصورتیکه خواسته باشیم از این تابع برای فرمهای دیگه استفاده کنیم آیا جواب میده یا نه؟ مثلا از طریق یه دکمه داخل فرم میخوایم یه فرم یا گزارش دیگه رو باز کنیم درحالی که عملیات فیلتر توسط کمبو باکس یا چند گزینه از لیست باکس انتخاب کردیم انجام بشه.
اگر نمیشه راه حل شما بغیر از تنظیمات فیلد داخل کویریه چیه؟

ممنون
یا حق

Nazir Ahmad
شنبه 17 اسفند 1392, 09:48 صبح
سلام خدمت جناب کاویان
یه مشکل دیگه هم پیدا شد. اینکه مثلا من یه فیلد دارم از جنس تکست که کلاس رو نشون میده؛ حالا تعداد کلاسها به این شکل تعیین میشه: مثلا 1(الف)، 1(ب)،2(الف)، 2(ب)، ...، 11(الف)، 11(ب)، 12(الف) و ... .
حالا وقتی ما مثلا از لیست کمبو باکسی که برای فیلتر ساختیم 1(الف) رو انتخاب میکنیم 11(الف) هم فیلتر میشه. یا اگر 2(الف) رو انتخاب کنیم 12(الف) هم به صورت فیلتر شده نشون داده میشه.
ممنون میشم اگر اصلاح بشه.

یا حق

Qad2013
یک شنبه 18 اسفند 1392, 12:29 عصر
سلام خدمت جناب کاویان
یه مشکل دیگه هم پیدا شد. اینکه مثلا من یه فیلد دارم از جنس تکست که کلاس رو نشون میده؛ حالا تعداد کلاسها به این شکل تعیین میشه: مثلا 1(الف)، 1(ب)،2(الف)، 2(ب)، ...، 11(الف)، 11(ب)، 12(الف) و ... .
حالا وقتی ما مثلا از لیست کمبو باکسی که برای فیلتر ساختیم 1(الف) رو انتخاب میکنیم 11(الف) هم فیلتر میشه. یا اگر 2(الف) رو انتخاب کنیم 12(الف) هم به صورت فیلتر شده نشون داده میشه.
ممنون میشم اگر اصلاح بشه.

یا حق

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

Nazir Ahmad
سه شنبه 19 فروردین 1393, 14:30 عصر
سلام خدمت جناب کاویان
یه مشکل دیگه هم پیدا شد. اینکه مثلا من یه فیلد دارم از جنس تکست که کلاس رو نشون میده؛ حالا تعداد کلاسها به این شکل تعیین میشه: مثلا 1(الف)، 1(ب)،2(الف)، 2(ب)، ...، 11(الف)، 11(ب)، 12(الف) و ... .
حالا وقتی ما مثلا از لیست کمبو باکسی که برای فیلتر ساختیم 1(الف) رو انتخاب میکنیم 11(الف) هم فیلتر میشه. یا اگر 2(الف) رو انتخاب کنیم 12(الف) هم به صورت فیلتر شده نشون داده میشه.
ممنون میشم اگر اصلاح بشه.

یا حق
جناب کاویان عزیز برای این مشکل راه حلی یافت نشد؟
درضمن یه مشکل دیگه هم اینه که وقتی از تابع EasyFilter در فرمهای Navigation Form استفاده میکنیم عمل نمیکنه.
به شکلی که در فرمهای ناویگیشن در داخل فرم تب‌هایی را تعریف میکنیم که با کلیک بر روی هر تب یک فرم رو در قسمت ساب‌فرم ناویگیشن باز میکنه.
حالا من یه فرم را با استفاده از این تابع درست کردم و وقتی فرم را باز میکنم عملیات فیلتر جواب میده اما وقتی همون فرم رو در یکی از تب‌های ناویگیشن فرم باز میکنم؛ تابع دیگه عمل نمیکنه.
ممنون میشم در این مورد راهنمایی کنید.

یا حق

alitor
پنج شنبه 09 مرداد 1393, 11:12 صبح
کسی می تونه ی نمونه بگذاره که فیلتر انجام شده به یک گزارش وصل بشه و اون گزارش نمایش داده بشه؟ این سوال من هم بود

mehdidanesh
چهارشنبه 12 آذر 1393, 11:58 صبح
با سلام
آقای کاویان من از این تاپیک در بانکم کار کردم ولی نتیجه ای عایدم نشد
به ضمیمه عکس را می فرستم اگر اشکالی داشت ممنون می شم راهنمایی کنید
با تشکر


Private Sub Command19_Click()
Me.frm_interaction_sub2.Form.Filter = Easy_filter_all("qry_test")
Me.frm_interaction_sub2.Form.FilterOn = True
End Sub

126259

mhkavian
پنج شنبه 13 آذر 1393, 22:35 عصر
سلام
لطفا فایلتون رو بفرستید تا بررسی بشه .

hmdrzy
شنبه 29 آذر 1393, 10:16 صبح
من هم دقیقا با همین مشکل که ایشان گفتند مواجهم. لطفا راهنمایی کنید.
این طور نامگذاری اشتباه است. اگر اعداد بیش از دو رقم نیست، باید به این صورت نامگذاری شوند:
01 و 02 و 03 و . . . و 09 و 10 و 11 و . . .
اگر سه رقمی باشند به این صورت:
001 و 002 و 003 و . . . و 09 و 010 و 011 و . . . 099 و 100 و 101 و . . .

hmdrzy
شنبه 29 آذر 1393, 10:18 صبح
سلام خدمت جناب کاویان
یه مشکل دیگه هم پیدا شد. اینکه مثلا من یه فیلد دارم از جنس تکست که کلاس رو نشون میده؛ حالا تعداد کلاسها به این شکل تعیین میشه: مثلا 1(الف)، 1(ب)،2(الف)، 2(ب)، ...، 11(الف)، 11(ب)، 12(الف) و ... .
حالا وقتی ما مثلا از لیست کمبو باکسی که برای فیلتر ساختیم 1(الف) رو انتخاب میکنیم 11(الف) هم فیلتر میشه. یا اگر 2(الف) رو انتخاب کنیم 12(الف) هم به صورت فیلتر شده نشون داده میشه.
ممنون میشم اگر اصلاح بشه.

یا حق
این طور نامگذاری اشتباه است. اگر اعداد بیش از دو رقم نیست، باید به این صورت نامگذاری شوند:
01 و 02 و 03 و . . . و 09 و 10 و 11 و . . .
اگر سه رقمی باشند به این صورت:
001 و 002 و 003 و . . . و 09 و 010 و 011 و . . . 099 و 100 و 101 و . . .

hamid_147
یک شنبه 10 خرداد 1394, 09:00 صبح
با سلام خدمت اقاي كاويان
من تو اكسسم رفرنس Microsoft office 14.0 axxess database engine object library رو نميبينم
نه در نسخه 2010 نه در نسخه 2007 از كجا اين رفرنسو پيدا كنم؟
چون وقتي تابع easy_filter_all رو ميزنم اصلاً نمي شناستش
ممنون ميشم راهنمايي بفرماييد باتشكر

doctorali
دوشنبه 16 مرداد 1402, 13:22 عصر
با سلام.
فیلم های آپلود شده، از سرور حذف شده اند
لطفا مجددا بارگذاری نمایید تا بتونیم استفاده کنبم
با تشکر