PDA

View Full Version : سوال: جستجو بر اساس شرايط خاص



SYSMAN
یک شنبه 13 اردیبهشت 1388, 12:10 عصر
با سلام

مي خواستم بدونم كسي براي اين مسئله راه حلي داره كه 100% درصد باشه؟

البته خودم تا حد زيادي انجامش دادم ولي باز هم مطمئين نيست:

مسئله:

براي هر يك از لوازم يكسري شماره سريال پشت سرهم دارم كه به عنوان نمونه براي ماشين لباسشوئي داريم:

رديف تاريخ صدور از شماره سريال تا شماره سريال آخرين شماره سريال مصرف شده

1 18/01/1388 00001 00010

2 01/02/1388 00015 00050

3 10/02/1388 00110 00153

خوب حالا امكان داره براي هر يك از رديفها تعدادي شماره سريال از يك رنج خاص باطل بشه مثلا براي رديف 3 ممكن است شماره سريال 00020 تا 00030 و 00115 تا 00120 و 00130 تا 00140 باطل بشه.

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

به عنوان نمونه كاربر وارد مي كند (ماشين لباسشوئي،23) و با توجه به محدودهاي شماره سريال و شماره سريالهاي باطل شده به ليست زير مي رسيم:

از سريال تا سريال تعداد سريال تعداد باقيمانده آخرين شماره سريال مصرف شده

00001 00010 11 0 00010

00015 00019 5 0 00019

00031 00050 20 13 00037

....

araelectronic@ymail.com
یک شنبه 13 اردیبهشت 1388, 13:25 عصر
با سلام
دو حالت وجود داره
1- حتما شماره های شما پشت سر هم باشند و بطور نامرتب باطل نشوند
2- ابطال سریالها نامرتب باشد

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

حالت دوم شما باید جدول جداگانه بذارید وهر کدی که باطل میشه را به همراه شماره ردیف در آن بریزید و دفعه بعد کدهایی را باطل کنید که برای ردیف مورد نظر در این جدول نیستند و آنها را به این جدول اضافه کنید

موفق باشید