PDA

View Full Version : حرفه ای: مشکل در جمع کردن ستون های با ID یکسان جهت به دست آوردن موجودی



kamiloted
یک شنبه 14 شهریور 1395, 20:50 عصر
سلام دوستان.

بنده میخوام موجودی یک کالا را به کاربر و در فرم فروش نشان بدم.
برای این کار اومدم عمل زیر رو انجام دادم.

فک کنید محصول پنیر هست.


تعداد کالای پنیر در فاکتور حذف شده + تعداد کالای فروش رفته جدول فروش - تعداد کالای پنیر در جدول خرید + موجودی اولیه (که در فرم ثبت محصول وارد میشه) =موجودی پنیر


یا به شیوه دیگه



Mojoodi = MAX(mojoodi avaliye) + SUM(Tedad Kharid) - SUM (Tedad Foroosh) + SUM (tedad hazf)



و با زبون سی شارپ:



DataTable dt3 = getdata(" SELECT (MAX(tbl_SabtMahsool.Mojoodi) + SUM(tbl_Factoor_Kharid.Tehdad)) - SUM(tbl_Factoor_Foroosh.Tehdad) " +
"FROM tbl_SabtMahsool INNER JOIN " +
"tbl_Factoor_Kharid ON tbl_SabtMahsool.IdProduct = tbl_Factoor_Kharid.Product_id INNER JOIN " +
"tbl_Factoor_Foroosh ON tbl_SabtMahsool.IdProduct = tbl_Factoor_Foroosh.Product_id AND tbl_Factoor_Kharid.Product_id = tbl_Factoor_Foroosh.Product_id " +
"WHERE tbl_SabtMahsool.IdProduct ='" + ProductCode + "'");



نکته: من 4 جدول دارم که نمیدونم آیا برا حذف باید باشه یا خیر---1-جدول فروش2- جدول خرید 3- جدول محصول 4- جدول حذف

من اینا رو با هم جوین کردم مطابق کد بالا و عملیات جمع رو انجام دادم.
سوال اولم آیا باید جدول حذف باشه؟ یا روش بهتری هست؟
و مشکلم : من به جای MAX باید چی بنویسم. که حاصل جمعم درست بشه؟
با این کاری که من کردم اگه موجودی پنیر 100تا باشه ضربدر 2 میشه و میشه 200 تا که موجودی درستی رو به من نمیده.
و من میخوام موجودی به صورت آنی انجام بشه.یعنی به محضی که به هر کدوم اضافه یا کم شد سریع محاسبه بشه.

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

mr.sirwan
یک شنبه 14 شهریور 1395, 21:02 عصر
دوست عزیز، جدول حذف واسه چیه؟ درموردش بیشتر بگین، ولی از اون بگذریم شما لازم نیس بیای فرمول بنویسی، شما فقط نیاز دارین موجودی کالا هاتون رو به صورت یک ستون داخل جدول محصول نگهداری کنین و داخل فرم فروش یا خرید به همون اندازه ای که فروش میره یا خرید میشه در همون لحظه از موجودیتون کم یا زیاد بشه

امیدوارم منظورمو رسونده باشم

kamiloted
یک شنبه 14 شهریور 1395, 23:25 عصر
دوست عزیز، جدول حذف واسه چیه؟ درموردش بیشتر بگین، ولی از اون بگذریم شما لازم نیس بیای فرمول بنویسی، شما فقط نیاز دارین موجودی کالا هاتون رو به صورت یک ستون داخل جدول محصول نگهداری کنین و داخل فرم فروش یا خرید به همون اندازه ای که فروش میره یا خرید میشه در همون لحظه از موجودیتون کم یا زیاد بشه

امیدوارم منظورمو رسونده باشم

ممنونم دوست عزیز.
توی پروژه های قبلی اون ستون موجودی رو آپدیت میکردم.اما سرعت کار رو با فرستادن پیغام آپدیت به سرور پایین می اومد.
قبلا دوستانی حرفه ای که الان دیگه توی برنامه نویس نیستن این روش رو توصیه نمیکردن.به دلایلی.
جدول حذف برای فاکتور فروشی که میخوام حذف کنم هست به این علت براش جدول گذاشتم که تو محاسبات مشکلی نداشته باشم.

ژیار رحیمی
دوشنبه 15 شهریور 1395, 01:14 صبح
بهتره قبل از کد نویسی درک کافی از مباحث حسابداری داشته باشی.یه روش ساده استفاده از یک جدول بنام انبار برای ورود و خروج کالا میباشد و بدست اوردن موجودی(تعدادی) رو بر اساس تفریق دو ستون ورودی(بدهکار) و خروجی(بستانکار) جدول انبار سنجیده میشود.ستون ورودی برای خرید و برگشت از فروش و ستون خروجی برای فروش و برگشت از خرید استفاده میشود یه جدول اضافه برای انبار در نظر بگیر که دارای ستونهای کد کالا ، تاریخ و ستون ورودی و ستون خروجی و فیلدهای لازم دیگر.نگهداشتن مقدار یا مبلغ به عنوان موجودی اشتباه میباشد.ممکنه در یک عملیات حذف یا ویرایش مقدار موجودی بروز نشود در این صورت موجودی شما بعد از بروز مشکل هیچ وقت صحیح بدست نمیاد و اصلاح آن با مشکل اساسی مواجه خواهد شد.نمونه پیاده سازی های متفاوتی در همین انجمن بحث شده با جستجو و مطالعه بیشتر به راههای بهتری میرسی.

موفق باشی

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

موفق باشی


ممنونم که وقت میزارید.

نتایج جستجوی بنده در این رابطه.بعضی از اونا پولی بود. وبعضی هم به جواب نرسیده بودن.
1 (http://barnamenevis.org/showthread.php?527560-%DA%A9%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B2-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%DA%A9%D8%A7%D9%84%D8%A7&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)
2 (http://barnamenevis.org/showthread.php?529121-%DA%A9%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%AE%D9%88%D8%AF%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)
3 (http://barnamenevis.org/showthread.php?526922-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)
4 (http://barnamenevis.org/showthread.php?517703-%D9%86%D8%AD%D9%88%D9%87-%D9%85%D8%A7%D9%86%D8%AF%D9%87-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%DA%A9%D8%A7%D9%84%D8%A7%DB%8C-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)

آیا تعداد جدول من زیاد بشه مشکلی ایجاد نمیکنه؟

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

آیا روش خودم خوب نیست؟
مشکل اساسی روش من چیه؟

برای حذف فاکتور فروش و خرید و مرجوعی از خرید و فروش هم توضیح بدید که باید چگونه باشه؟

ممنونم

ژیار رحیمی
چهارشنبه 17 شهریور 1395, 14:01 عصر
ممنونم که وقت میزارید.

نتایج جستجوی بنده در این رابطه.بعضی از اونا پولی بود. وبعضی هم به جواب نرسیده بودن.
1 (http://barnamenevis.org/showthread.php?527560-%DA%A9%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A7%D8%B2-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%DA%A9%D8%A7%D9%84%D8%A7&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)
2 (http://barnamenevis.org/showthread.php?529121-%DA%A9%D9%85-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D8%AD%D8%B5%D9%88%D9%84%D8%A7%D8%AA-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%AE%D9%88%D8%AF%DA%A9%D8%A7%D8%B1-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)
3 (http://barnamenevis.org/showthread.php?526922-%D9%85%D8%AD%D8%A7%D8%B3%D8%A8%D9%87-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)
4 (http://barnamenevis.org/showthread.php?517703-%D9%86%D8%AD%D9%88%D9%87-%D9%85%D8%A7%D9%86%D8%AF%D9%87-%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C-%DA%A9%D8%A7%D9%84%D8%A7%DB%8C-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1&highlight=%D9%85%D9%88%D8%AC%D9%88%D8%AF%DB%8C+%DA %A9%D8%A7%D9%84%D8%A7)

آیا تعداد جدول من زیاد بشه مشکلی ایجاد نمیکنه؟

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

آیا روش خودم خوب نیست؟
مشکل اساسی روش من چیه؟

برای حذف فاکتور فروش و خرید و مرجوعی از خرید و فروش هم توضیح بدید که باید چگونه باشه؟

ممنونم




آیا تعداد جدول من زیاد بشه مشکلی ایجاد نمیکنه؟



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



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

بله در موقع ثبت هر فاکتوری اگر از جدولی بنام انبار استفاده میکنی باید اجناس خارج شده یا وارد شده بر اساس فاکتور در جدول انبار ثبت گرد.جدول انبار برای عملیات انبار گردانی و گرفتن موجودی اول دوره و پایان دوره و نحوه ارزش گذاری روی انبار کاربرد دارد.در مورد روش شما نمیشه اظهار نظر کرد.هر نوع روش کارمد و غیر کارامد رو میشه پیاده سازی کرد و به جواب رسید و این که روش شما خوب هست یا نه به تحلیل شما برمیگردد.




برای حذف فاکتور فروش و خرید و مرجوعی از خرید و فروش هم توضیح بدید که باید چگونه باشه؟

براساس رابطه ای که جدول انبار با جدول سطرهای فاکتور برقرار میکنی .می تونی برای sql مشخص کنی که هر رکوردی از سطرهای فاکتور خذف شد به طور اتومات سطر متناظر آن در جدول انبار حذف شود.

kamiloted
چهارشنبه 17 شهریور 1395, 21:08 عصر
بله در موقع ثبت هر فاکتوری اگر از جدولی بنام انبار استفاده میکنی باید اجناس خارج شده یا وارد شده بر اساس فاکتور در جدول انبار ثبت گرد.جدول انبار برای عملیات انبار گردانی و گرفتن موجودی اول دوره و پایان دوره و نحوه ارزش گذاری روی انبار کاربرد دارد.در مورد روش شما نمیشه اظهار نظر کرد.هر نوع روش کارمد و غیر کارامد رو میشه پیاده سازی کرد و به جواب رسید و این که روش شما خوب هست یا نه به تحلیل شما برمیگردد.



ممنونم دوست عزیز.

ممکنه خطای روش خودم رو بگید.ممنون میشم.

kamiloted
جمعه 19 شهریور 1395, 15:31 عصر
دوستان کسی نیست راهنمایی بکنه؟
ممنونم

kamiloted
دوشنبه 22 شهریور 1395, 17:04 عصر
سلام
دوستان من میخوام این کار رو هم برای صورتحساب یک مشتری انجام بدم.طبق همون دستوری که در بالا نوشتم.
اما باز درست محاسبه نمیشه.

مثال:
یک مشتری یا طرف حساب ممکنه هم فروشنده باشه وهم خریدار.

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

و این مشتری به نحوه های زیر هم پول دریافت میکنه و هم پول پرداخت میکنه.
در قبال کالای خریداری شده از فروشگاه ممکنه نقد پرداخت کنه--ممکنه چک پرداخت کنه--ممکنه نصف مبلغ نقد و مابقی نسیه یا چک پرداخت کنه--ممکنه کل نسیه باشه.
و در قبال کالای فروخته شده به فروشگاه ممکنه پول نقد دریافت کنه--یا چک دریافت کنه--یا فروشگاه چک بهش واگذار کنه--یا کل نسیه باشه-- یا نصف نقد و نصف نسیه یا چک باشه.

خب دوستان کسی راه حل خوبی داره برای این محاسبات.

لطفا رهنمایی بفرمایید.
ممنونم از همگی

kamiloted
چهارشنبه 24 شهریور 1395, 01:17 صبح
تا حالا 139 بار مشاهده شده.
یعنی از این 130نفر یکی یه نظری نداره!!! عجیبه

mr.sirwan
چهارشنبه 24 شهریور 1395, 01:24 صبح
من ماهیت برنامه شمارو دقیق نمیدونم به چه شکل هست، ولی بهتر نیست که خریدار و فروشنده دو جدول متفاوت باشند؟

kamiloted
چهارشنبه 24 شهریور 1395, 02:09 صبح
من ماهیت برنامه شمارو دقیق نمیدونم به چه شکل هست، ولی بهتر نیست که خریدار و فروشنده دو جدول متفاوت باشند؟

نه دوست عزیز.خب من میخوام بهینه ترین دیتابیس رو داشته باشم.
دیتابیسی با جداول کم و جداولی با فیلدهای ضروری.
که بقیه رو سمت سی شارپ ایجاد میکنم. وقتی میشه با محاسبات انجام داد نیازی به دو جدول نیست.لطفا دلیل پیشنهادتون رو هم بنویسید.
من این صورت حساب مالی و حتی مالی و کالایی طرف حساب ها رو محاسبه کردم.
142544

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

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

و مشکلم : من به جای MAX باید چی بنویسم. که حاصل جمعم درست بشه؟

ژیار رحیمی
جمعه 26 شهریور 1395, 14:11 عصر
شما مقدار موجودی اولیه در جدول tbl_SabtMahsool یک فیلد قرار دادی.بکار بردن Max بی معنی هست.شما به ازای هر محصول یک موجودی اولیه ثبت میکنی
Mojoodi =mojoodi avaliye + SUM(Tedad Kharid) - SUM (Tedad Foroosh) + SUM (tedad hazf)

kamiloted
جمعه 26 شهریور 1395, 14:20 عصر
دوستان من برای موجودی :

موجودی اولیه رو با ورودی جمع میکنم.
و خروجی را از هر 2 کم میکنم.
اما مشکلی که هست
تا فاکتور فروش و خرید ثبت نکنیم موجودی کالا را نشون نمیده.

kamiloted
جمعه 26 شهریور 1395, 14:24 عصر
شما مقدار موجودی اولیه در جدول tbl_SabtMahsool یک فیلد قرار دادی.بکار بردن Max بی معنی هست.شما به ازای هر محصول یک موجودی اولیه ثبت میکنی
Mojoodi =mojoodi avaliye + SUM(Tedad Kharid) - SUM (Tedad Foroosh) + SUM (tedad hazf)


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

kamiloted
جمعه 26 شهریور 1395, 14:26 عصر
آقای رحیمی سپاسگذارم از اینکه جواب میدین.

ژیار رحیمی
جمعه 26 شهریور 1395, 14:36 عصر
دوست گرامی روش در بالا توضیح داده شد شما توجه نکردی.اون کویری رو به صورت چندتا تابع (یا کویری)مجزا که هر کدام یک مقدار رو برمیگردانند بنویس و نتیجه این توابع(کویری ها) رو بصورت فرمول بالا محاسبه کن.بعضی مواقع نمیشه چند کویری(هر کدام کار متفاوتی رو انجام میدن) رو باهم در قالب یک کویری ترکیب کرد و اجرا کرد

kamiloted
جمعه 26 شهریور 1395, 14:42 عصر
دوست گرامی روش در بالا توضیح داده شد شما توجه نکردی.اون کویری رو به صورت چندتا تابع (یا کویری)مجزا که هر کدام یک مقدار رو برمیگردانند بنویس و نتیجه این توابع(کویری ها) رو بصورت فرمول بالا محاسبه کن.بعضی مواقع نمیشه چند کویری(هر کدام کار متفاوتی رو انجام میدن) رو باهم در قالب یک کویری ترکیب کرد و اجرا کرد

لطفا یک نمونه کد برام بزارین.ممنون میشم

kamiloted
جمعه 26 شهریور 1395, 14:45 عصر
اگه بخوام یه فیلد جدول که موجودیه
رو با هر عملیات فاکتور آپدیت کنم.
چه مزایا و معایبی داره؟

kamiloted
یک شنبه 28 شهریور 1395, 00:15 صبح
دوستان کسی نیست یه روش خوب به من بگه.

kamiloted
دوشنبه 29 شهریور 1395, 01:32 صبح
دوستان کسی نیست یه روش خوب به من بگه. ممنون

kamiloted
دوشنبه 29 شهریور 1395, 01:33 صبح
الگوریتم محاسبات رو هم بگید خوبه.