ورود

View Full Version : حرفه ای: کامبوهای داینامیک ( ِDynamic Combo ) - مبحثی سخت برای حرفه ای ها



foo0z0ool
سه شنبه 02 آبان 1391, 12:56 عصر
سلام

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

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

مثلا :
کشور ---> استان ---> شهرستان ---> بخش ---> شهر ---> روستا

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

اما تا حالا به این مساله فکر کردید که بر عکس این قضیه رو هم بشه ازش استفاده کرد ؟؟؟؟
فکر کنید برای وارد کردن اطلاعات یک کاربر باید 4 5 فیلد رو دائما پر کنه و این کار بسیار سخته.از اون مهمتر شاید کسی اطلاعات دقیقی از اطلاعات جغرافیایی نداشته باشه مثلا شهر علی آباد حسنی اولیا ( وجودخارجی ندارد ) کاربر نمیدونه که توی کدوم استان هستش توی کدوم بخشه یا...
غیر از مسائل جغرافیایی مثالهای زیادی میشه توی این زمیه زد که کاربر از سرشاخه اطلاعات نداره و فقط زیر شاخه رو میدونه، مثلا : برنج ( تویه سیلو نگهداری میشه سیلوها توی حیاط سمت چپ هستند حیاط سمت چپ دو ورودی داره برای رفتن به اونجا باید از ورودی شماره 2 عبور کرد و برنج جزو غلات هستش و غلات هم باید توسط کامیون بار زده بشه )
خوب کاربر برای رسیدن به برنج باید از کامبو باکس به این شکل عمل کنه :

کمیون ---> غلات ---> ورودی شماره 2 ---> حیاط سمت چپ ---> سیلو ---> برنج

پرسه سنگینی میشه.

حال اگه بشه همین عمل رو به صورت معکوس هم نوشت که در صورتی که کاربر مثلا برنج رو انتخاب کرد به طور اتوماتیک فیلدهای سرگروهش پر بشه با این کار وارد کردن اطلاعات خیلی سریعتر میشه.

اینجا ممکنه این مساله پیش بیاد که اگه داده تکراری بود چی ؟ مثلا شهر علی آباد هم توی استان کرمان باشه هم تهران هم خوزستان !!! میشه این فیلتر رو اعمال کرد که با انتخاب گزینه های پایینتر بالاتری ها فیلتر بشن و بتونیم ببینیم که توی کدوم ... وجود داره.

پس برنامه به صورت 4 مرحله ای باید نوشته بشه :

1- ارتباط از بالا به پایین وجود داشته باشد
2- ارتباط از پایین به بالا وجود داشته باشد
3- در صورت انتخاب یکی از زیرمجموعه ها سرگروهای آنها فیلتر شود و به طور اتوماتیک پر شود.
4- در صورت وجود زیر شاخه در چندین سر گروه آنها رو فیلتر کرده و بتوان فقط از بین آنها انتخاب کرد.


این هم نمونه واسه شروع

somayeh1361
سه شنبه 02 آبان 1391, 13:17 عصر
سلام پيشنهاد خوبيه اما ميشه نمونه ارسالي تونو با فرمت 2003 بذاريد ممنون

RESMAILY
چهارشنبه 03 آبان 1391, 08:02 صبح
به نام خدا
با سلام. فكر خوبي است. ما تابحال از دستور Like بطور كلي استفاده مي كرديم و به اين ترتيب يكراست مي رفتيم سر اصل مطلب! البته همانطور كه فرموديد اگر موارد مشابه زياد شوند (درصد كمي از موارد اينگونه اند) بايد به فكر فيلترهاي معكوس بود. كه در شكل نهايي تفاوتي با فيلتر از بالا به پايين (به تعبير دوست عزيزمان ) نداشت. حالا بايد ديد روش جديد چطور جواب مي دهد.

foo0z0ool
چهارشنبه 03 آبان 1391, 13:33 عصر
دوستان حرفه ای نمیخوان توی این بحث شرکت کنند ؟

Abbas Amiri
چهارشنبه 03 آبان 1391, 18:21 عصر
تا حالا هر چی برنامه نوشته شده به این مساله توجه داشته که همیشه از فیلد بالاتر یک چیز رو بخونه و توی فیلد پایین تر فیلتر کنه .....اما تا حالا به این مساله فکر کردید که بر عکس این قضیه رو هم بشه ازش استفاده کرد ؟؟؟؟سلام .
این موضوع پیچیدگیهای خاص خودش را دارد. درعین اینکه ازحالت بالا به پایین بایستی انجام شود، مورد فوق هم انجام شود.
اولین موضوع این است که درچه حالاتی کدام روند انجام شود .

1- چنانچه تمام کمبوها خالی باشند و کمبوی فعال اولین نباشد روندمعکوس انجام شود. دراین حالت بایستی همه کمبوها تمام موارد ممکن را داشته باشند

2-چنانچه حداقل کمبوی مجاور سمت راست (مرتبه بالاتر) خالی باشد : دراین حالت دوروش میتوان درنظر گرفت اول اینکه پس از انتخاب آیتم ازهرکمبو فقط کمبو سمت چپ(مرتبه پایین تر) فیلتر شود و چنانچه هر آیتمی از کمبوهای آزاد انتخاب کردیم ، سمت راستی ها بدون توجه به مقادیرشان مجددا فیلتر شوند. ودر حالت دوم اینکه پس ازاینکه کمبوهای بالامرتبه مقدارگرفتند ، کمبوهای بعدی به ترتیب برحسب مقادیر ممکن کمبوی قبلی فیلتر شوند . به این معنی که فرضا اگر استان اصفهان انتخاب شد ، کمبوی شهرستان شهرهای استان اصفهان ، کمبوی بخش بخشهایی که در شهرستانهای کمبوی شهرستان هستند را شامل شود و ... .به این ترتیب درکمبوهای پایین دست انتخاب نیمه محدود داشته باشیم