PDA

View Full Version : سوال: انتخاب محصول به وسیله کاربر و ثبت مبلغ به صورت اتوماتیک ...



djhooman
دوشنبه 05 تیر 1391, 00:28 صبح
سلام دوستان ....

خیلی فکر کردم و آزمون و خطا انجام دادم اما به نتیجه نرسیدم ....

صورت مسئله من اینه :

دیتابیس داریم با این مشخصات

تیبل Mahsool شامل نام محصول ، مبلغ مصوب ، تاریخ شروع اجرای مبلغ مصوب ، تاریخ اتمام مبلغ مصوب
تیبل Moshtari شامل نام و مشخصات مشتری ، تاریخ صدور فاکتور یا ثبت اطلاعات ، مبلغ

حالا ما توی تیبل محصول ، مشخصات وارد میکنیم به این صورت

1 ) نام محصول : گوشت درجه 2 - مبلغ مصوب : 80000 - تاریخ شروع اجرای مبلغ مصوب : 1391/04/01 - تاریخ اتمام مبلغ مصوب : 1391/04/05
این اطلاعات مربوط به محصولات یا به عبارتی اجناس موجود در انبار رو مدیر ثبت و ویرایش می کنه ....

حالا اپراتور داره جنس رو میفروشه

توی فرم ثبت اطلاعات این اطلاعات وارد میشه :

خریدار : آقای X - تاریخ : 1391/04/01 - محصول : گوشت درجه 2 - مبلغ : 80000 تومن

کاربر وقتی داره فرم و پر میکنه بعد از مشخصات خریدار ، تاریخ و انتخاب می کنه مثلا 1391/04/01 ، بعد از ثبت تاریخ ، از Combobox محصول و انتخاب میکنه و مبلغ مصوب که در تیبل محصولات هست رو توی تکست باکس مبلغ وارد بشه اتوماتیک ، حالا وقتی محصول و داره انتخاب میکنه از کمبوباکس ، بیاد چک کنه ببینه محصول مورد نظر در تیبل محصولات در اون تاریخی که ثبت میکنه چقدر تصویب شده و اتوماتیک مبلغ و وارد تکست باکس رو فرم بندازه ......

ROSTAM2
دوشنبه 05 تیر 1391, 18:24 عصر
از اساتید دعوت می گردد راهنمایی فرمایند .

22 مشاهده و 0 جواب !!!!!!!!!!!!!:لبخند:

من استاد نيسم حالا چيكار كنيم !

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

djhooman
دوشنبه 05 تیر 1391, 23:12 عصر
یه نمونه برنامه توی سایت www.howprg.com هست ، اما لینک دانلودش ناقصه ........

فقط روشش و میخوام بدونم یا نمونه سورسی باشه که توش کنکاش کرد ....

damanpak
سه شنبه 06 تیر 1391, 12:50 عصر
دوستان کسی میتونه راه حلی بده ؟؟
دوست گلم این سورسی که شما میخواین خیلی خیلی ساده هستش البته اگه بانک اطلاعاتیتون اس کیو ال باشه که توپه؛متاسفانه من زیاد نت نمیام ولی شما اگه امکانش هست بانک اطلاعاتیتون رو در اینجا قرار بدین تا من نهایتا تا فرداش راه حلش رو براتون بزارم
ضمنا متاسفانه دیگه دوستان و اساتید برنامه نویسی مثل قدیما کمک حال همدیگه نیستن و میان نگاه میکنند و میرن و این خیلی باعث تاسفه که حتی یه راهنمایی کوچیک عزیزان رو نمیدن

djhooman
سه شنبه 06 تیر 1391, 16:02 عصر
دیتابیسم SQL هستش .....

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


ممنون میشم کمک کنید

djhooman
چهارشنبه 07 تیر 1391, 16:16 عصر
نمونه سورس به زبان دیگه هم باشه مهم نیست تبدیل میکنم کدهاش روو

ROSTAM2
چهارشنبه 07 تیر 1391, 17:23 عصر
به نظر من اگه پروژه اتون هنوز كامل نشده آپلود كنيد راهنمايي كنيم ....... (نظر منه ها يه وقت نگيد گولم زدن :لبخند:)

djhooman
چهارشنبه 07 تیر 1391, 23:03 عصر
آخه گفتم .... دیتابیسم چون حاوی اطلاعات هست و نمیتونم کاریش کنم و بزارم رو سایت

cherchil_hra
دوشنبه 12 تیر 1391, 09:12 صبح
سلام دوستان ....

خیلی فکر کردم و آزمون و خطا انجام دادم اما به نتیجه نرسیدم ....

صورت مسئله من اینه :

دیتابیس داریم با این مشخصات

تیبل Mahsool شامل نام محصول ، مبلغ مصوب ، تاریخ شروع اجرای مبلغ مصوب ، تاریخ اتمام مبلغ مصوب
تیبل Moshtari شامل نام و مشخصات مشتری ، تاریخ صدور فاکتور یا ثبت اطلاعات ، مبلغ

حالا ما توی تیبل محصول ، مشخصات وارد میکنیم به این صورت

1 ) نام محصول : گوشت درجه 2 - مبلغ مصوب : 80000 - تاریخ شروع اجرای مبلغ مصوب : 1391/04/01 - تاریخ اتمام مبلغ مصوب : 1391/04/05
این اطلاعات مربوط به محصولات یا به عبارتی اجناس موجود در انبار رو مدیر ثبت و ویرایش می کنه ....

حالا اپراتور داره جنس رو میفروشه

توی فرم ثبت اطلاعات این اطلاعات وارد میشه :

خریدار : آقای X - تاریخ : 1391/04/01 - محصول : گوشت درجه 2 - مبلغ : 80000 تومن

کاربر وقتی داره فرم و پر میکنه بعد از مشخصات خریدار ، تاریخ و انتخاب می کنه مثلا 1391/04/01 ، بعد از ثبت تاریخ ، از Combobox محصول و انتخاب میکنه و مبلغ مصوب که در تیبل محصولات هست رو توی تکست باکس مبلغ وارد بشه اتوماتیک ، حالا وقتی محصول و داره انتخاب میکنه از کمبوباکس ، بیاد چک کنه ببینه محصول مورد نظر در تیبل محصولات در اون تاریخی که ثبت میکنه چقدر تصویب شده و اتوماتیک مبلغ و وارد تکست باکس رو فرم بندازه ......


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

حالا با شرایطی که شما برای برنامه تعریف کردی جدول هات و برنامه به این صورت میشه:
1. محصول: کد/ نام/ شرکت تولید کننده ...
2. محصول-مبلغ: کد/ کدمحصول/ تاریخ شروع/ تاریخ پایان/ مبلغ
3.مشتری: کد/ نام/ نام خانوادگی /نشانی ....
4.فاکتور: کد/ کد مشتری/ کد محصول-مبلغ / تاریخ خرید/ تعداد

جدول اپراتور، شرکت ها، گروه بندی و ... که بستگی به برنامه ات داره
---------------------------
برنامه:
1. اپراتور کد مشتری را وارد می کنه (کد مشتری) و نمایش مشخصات مشتری
2. تاریخ امروز انتخاب میشه، یا تاریخ قابل تغییر هست و اپراتور انتخاب می کنه (تاریخ خرید)
3. از combo box محصول انتخاب میشه و به برنامه "کد محصول-مبلغ" برگردانده میشه (کد محصول-مبلغ)
4.تعداد جنس (تعداد)
5. تایید و صدور فاکتور

شما دوتا جدول "محصول" و "محصول-مبلغ" رو با هم join می کنی (اسمش رو داخل برنامه میذاریم a) و به کاربر در combobox نام محصول رو نشان میدی (displayMember) و خودت از "کد محصول-مبلغ" استفاده می کنی(ValueMember).
حالا با توجه به محصولی که انتخاب می کنه از جدول a مبلغ مورد نظر رو به اپراتور نشون میدی.

چه محصولاتی نمایش داده بشه؟ محصولاتی که مساوی با تاریخ امروز و امروز به بعد هستند.
اشکال: اگه داده هایی برای گذشته باشه و کاربر بخواد وارد بکنه، با شرط بالا ممکن هست یک محصول در بازه های زمانی مختلف نمایش داده بشه. مثلا گوشت درجه دو در سه بازه زمانی وجود داره و تاریخ ورود قبل از تاریخ شروع این سه مورد هست. کاربر کدوم رو انتخاب بکنه؟ پس باید بازه زمانی رو بدست بیاری و نزدیک ترین تاریخ انتخاب بشه (من اینجا اسم "محصول-مبلغ" رو گذاشتم "محصول-مدت"):

SELECT ProductID,MIN(startDate) AS StartDate
FROM Product_Duration
WHERE (startDate >=@Date)
GROUP BY ProductID

حالا باید ID این رکوردها رو بدست بیاری، پس:
SELECT sd.id,
minDate.ProductID,
minDate.StartDate,
sd.endDate,
sd.fi
FROM (
SELECT ProductID,MIN(startDate) AS StartDate
FROM Product_Duration
WHERE (startDate >= @Date)
GROUP BY ProductID
) AS minDate
INNER JOIN Product_Duration AS sd
ON minDate.StartDate = sd.startDate
AND minDate.ProductID = sd.ProductID

در نهایت برای اینکه نام محصول رو داشته باشی به جدول "محصول" join می زنی.

چه شرطی باید موقع ثبت رکورد جدید در جدول "محصول-مبلغ" باشه؟
برای یک محصول چک شود که بازه های زمانی وارد شده باهم تداخل نداشته باشند.
مثلا محصولی با کد 1 از 1 فروردین تا 4 فروردین داریم. بازه جدید از این تاریخ به بعد باشه (5 فروردین)

می تونی فیلد مبلغ (قیمت واحد) رو به جدول فاکتورت اضافه کنی تا اگه روزی توی جدول "محصول-مبلغ" یکی مبلغ رو عوض کرد روی فاکتورهات تاثیر نداشته باشه و داده هات با فاکتورهای مشتری تناقض نداشته باشه...

موفق باشی!