PDA

View Full Version : سوال: ایجاد کوئری انبار



laia56
چهارشنبه 11 بهمن 1391, 12:51 عصر
با سلام و عرض ارادت خدمت دوستان و اساتید محترم
جهت شمارش موجودی کالا و قیمت گذاری آن نیاز به ایجاد یک کوئری دارم که متاسفانه علم اندک بنده جوابگوی این نیاز نمیباشد برای همین مزاحم دوستان شدم
در نمونه زیر دو جدول وجود دارد
یکی بنام ANBAR که مربوط به خریدهای طی سال کالا میباشد
دوم بنام SHOMARESH که مربوط به شمارش موجودی کالا میباشد
حالا کوئری میخواهم که مقدار مشخص شده در جدول SHOMARESH را باتوجه به محل انبار ، با جدول ANBAR مطابقت دهد در صورتیکه مقدار شمارش شده از مقدار آخرین خرید باتوجه به تاریخ خرید کمتر باشد مبلغ آخرین خرید را در کوئری نمایش بدهد و در غیر اینصورت تا مقدار موجودی مبلغ آخرین خرید را برای مقدار موجودی درنظر بگیرد وباقیمانده مقدار موجودی از مقدار آخرین خرید را با خرید ماقبل آخر مقایسه کند ودر صورتیکه باقیمانده از مقدار ماقبل آخر کمتر بود مبلغ خرید ماقبل آخر را جهت باقیمانده نمایش دهد درغیر اینصورت این رویه تکرار شود
با تشکر از محبت شما

laia56
پنج شنبه 12 بهمن 1391, 18:15 عصر
دوستان اگر ممکن هست راهنمایی بفرمایید
بدجوری متوقف شدم

hasanhzd
جمعه 13 بهمن 1391, 10:56 صبح
درود
شما درواقع میخواهید دریک سیستم ادواری موجودی رو به روش fifo محاسبه کنید شما علاوه بر کوئری باید حلقه بنویسید تا این کاررو انجام بده
جداول موقت واسطه ای هم نیاز دارید

laia56
جمعه 13 بهمن 1391, 11:37 صبح
درود
شما درواقع میخواهید دریک سیستم ادواری موجودی رو به روش fifo محاسبه کنید شما علاوه بر کوئری باید حلقه بنویسید تا این کاررو انجام بده
جداول موقت واسطه ای هم نیاز دارید
با سلام
دقیقا روش fifo مورد نظر است اگر امکان دارد روی نمونه راه حل را پیاده کنید
با تشکر

hasanhzd
جمعه 13 بهمن 1391, 18:32 عصر
درود
منطق رو میگم اگه دوستان از طریق کد نویسی نتونستن کمک کنن به روش خودم یه کارایی میکنم

بابت هر نوع کالا باید ببینیم تو جدول shomaresh چند تا موجودی داریم
بعد باید از جدول anbar از آخرین رکورد همون کالا قیمتش رو بدست بیاریم و اگه آخرین رکورد تعدادش کمتر از shomaresh بود از رکورد قبل و قبل وقبل

hasanhzd
جمعه 13 بهمن 1391, 20:08 عصر
درود
فایلو گذاشتم

حلقه با خودتون

با دوکلیک کار تموم میشه

laia56
شنبه 14 بهمن 1391, 13:17 عصر
با تشکر از لطف شما
اما در اجرای کوئری مشکلی وجود دارد چون کوئری طراحی شده مقادیر خروجی را ملاک عمل قرار میدهد در حالیکه ما فقط موجودی را داریم و محاسبات میبایست توسط کوئری صورت گیرد مثلادر زمانیکه موجودی بیشتر از آخرین خرید هست در این کوئری میبایست بصورت دستی براساس آخرین خریدها وارد کنیم حالا این جدول بصورت نمونه 5 رکورد دارد ولی در عمل ما با 200نوع کالا مواجهیم که هرکدام طی سال حداقل 20خرید داشته اند
باتشکر از عنایت شما

hasanhzd
شنبه 14 بهمن 1391, 17:39 عصر
درود
2 با 200 دیگه فرقی نداره
الان شما امکان ورود دستی چیزی نداری!!!!
شما داده ای به نام مقدار خروجی به من ندادی درنتیجه از همچین چیزی استفاده نمیتونم بکنم
همین منطق هم جرا میشه که شما میگی
فقط برنامه یکبار مصرفه وقتی دکمه رو به دفعات لازم که زدی گزارش موجودی رو به شما نشون میده
بعدش باید فایلو پاک کنید و فایل رو دوباره انزیپ واستفاده کنید
باز هم اگه مشکلی هست در خدمتم

laia56
یک شنبه 15 بهمن 1391, 13:53 عصر
با شکر مجدد
اول اینکه با توجه به رهنمود شما اقدام کردم خب نتیجه ای که حاصل شد در تصویر جهت ملاحظه موجود است همانطور که می بینید در مورد تهران وقتی موجودی بیشتر از آخرین خرید میباشد مبلغ نهایی که میبایست در کوئری اعلام شود 1250000 میباشد که کوئری 200000 اعلام میکند جسارتا
1800 عدد با مبلغ 200000
700 عدد باقیمانده با مبلغ 1050000
که جمعا میشود 1250000
درمورد روندکوئریهای موجود نیزاگر میشود توضیحی هر چند مختصر بدهید مثلا در روی فرم و یا کوئری Expr1 چکاری انجام میدهد وچرا اصلا روی فرم قرار گرفته و چه معنایی را میرساند
دوم اینکه
آیا وقت ساخت رویه حلقه را نیز دارید البته در صورت امکان با توضیح چون قصدم بیشتر یادگیری و فهم است

hasanhzd
یک شنبه 15 بهمن 1391, 17:25 عصر
با شکر مجدد
اول اینکه با توجه به رهنمود شما اقدام کردم خب نتیجه ای که حاصل شد در تصویر جهت ملاحظه موجود است همانطور که می بینید در مورد تهران وقتی موجودی بیشتر از آخرین خرید میباشد مبلغ نهایی که میبایست در کوئری اعلام شود 1250000 میباشد که کوئری 200000 اعلام میکند جسارتا
1800 عدد با مبلغ 200000
700 عدد باقیمانده با مبلغ 1050000
که جمعا میشود 1250000
درمورد روندکوئریهای موجود نیزاگر میشود توضیحی هر چند مختصر بدهید مثلا در روی فرم و یا کوئری Expr1 چکاری انجام میدهد وچرا اصلا روی فرم قرار گرفته و چه معنایی را میرساند
دوم اینکه
آیا وقت ساخت رویه حلقه را نیز دارید البته در صورت امکان با توضیح چون قصدم بیشتر یادگیری و فهم است

درود


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

اون باکسی که روفرم هست هم تازمانی که صفر نشه یعنی کار تموم نشده وقتی صفر بشه کارتمومه و گزارش ظاهر میشه که مشکل رفرش همین فرم بود فایل درست رو میدم خدمتتون

hasanhzd
یک شنبه 15 بهمن 1391, 19:55 عصر
بازم شرمنده
چون از رو فرم کارنمیکرم ایرادو نمیدیدم

laia56
یک شنبه 15 بهمن 1391, 22:27 عصر
با تشکر از عنایت شما

اگر مقدور است درمورد عملکرد هر یک از کوئریها توضیحی بدهید ممنون میشوم

دوم اینکه آیا امکان دارد از حالت یکبار مصرف خارج شود

hasanhzd
دوشنبه 16 بهمن 1391, 19:38 عصر
درود
این کار واقعا یکبار مصرفه چون یکبار در آخر سال استفاده داره
این فایل جهت دادن یک ذهنیت به شما بود و میشه چند بار مصرفش کرد راهش اینه:
تو دوتا جدولی که داشتید فیلد اضافه کردم تمام مقادیر اون فیلدهای من رو صفرکنید دستی یا با کوئری

کوئری هایی هم که نوشتم میتونه شاید به بی نهایت شکل دیگه نوشته بشه ولی به صورت کلی
اول یه جدول واسط میسازم که آخرین رکورد خرید رو داشته باشم
با کوئری 1 و 2 به ترتیب جدول انبار وشمارش رو طوری آپدیت میکنم که بدونم از کدوم خرید برداشتم و کدوم شمارش رو تاچه حد پر کردم

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

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