View Full Version : تقاضای راهنمایی در خصوص روش محاسبه موجودی کالا
سعید20
دوشنبه 29 مهر 1392, 10:38 صبح
سلام من یک انبار دارم با حدود 20000 قلم کالا و حدود روزی 200 حواله ورود و خروج وقتی موجودی کالا میگیریم از برنامه زیر استفاده میکنم ولی سرعت خیلی کم میباشد آیا روش فوق درست میباشد یا روش بهتری هم هست
select listkala
go top
()do while .not. eof
codekala_x = codekala_f
select anbar
sum tedad_f to tedadvorood_x for codekala_f = codekala_x .and. contorol_f = vorood
sum tedad_f to tedadkhoroog_x for codekala_f = codekala_x .and. contorol_f = khoroog
mandehkala_x = tedadvorood_x - tedadkhoroog_x
mandehkala_x ?
select listkala
skip
endd
gh_khajehzade
دوشنبه 29 مهر 1392, 19:54 عصر
فرمان set filter رو تست کن.
set filter to codekala_f = codekala_x .and. contorol_f = vorood
sum tedad_f to tedadvorood_x
میدونم استفاده از فرامین sql به جای فرامین فاکس همیشه سرعت رو بیشتر میکنه.ولی کار نکردم.تو help فاکس کاملا توضیح داده.
برنامت تحت شبکه هست یا نه؟
سعید20
سه شنبه 30 مهر 1392, 09:43 صبح
اصولا دستور set filter کندتر عمل میکند و استفاده از این دستور باعث افت شدید سرعت میشود باید با این دستور محدود کار کرد
farhad_shiri_ex
سه شنبه 30 مهر 1392, 11:23 صبح
select a.codekala_f,sum(b.tedad_f) as inqty from listkala a,anbar b where a.codekala_f=b.codekala_f and cobtrol_f=vorod group by a.codekala_f union select a.codekala_f,sum(b.tedad_f) as outqty from listkala a,anbar b where a.codekala_f=b.codekala_f and cobtrol_f=khoroog group by a.codekala_f into cursor CalcQty
بهترین و سریعترین راه استفاده از دستورات T-sql می باشد برای مانده آخر هم از یک select دیگر استفاده کنید
farhad_shiri_ex
سه شنبه 30 مهر 1392, 11:37 صبح
اصولا دستور set filter کندتر عمل میکند و استفاده از این دستور باعث افت شدید سرعت میشود باید با این دستور محدود کار کرد
کی گفته اصولا کند تر هستش اتفاقا برای بلوک کردن بخشی از اطلاعات منتهی فقط در table خود فاکس خیلی هم سریع هستش ولی اینجا مطمئن باشید به کارتون نمی آید کلا با هر روشی میشه هر مسئله ای رو حل کرد منتهی بستگی به شرایط شما داره که چه جوری کد نویسی کنید .
سعید20
سه شنبه 30 مهر 1392, 15:06 عصر
تشکر آقای شیری
سعید20
سه شنبه 30 مهر 1392, 16:15 عصر
دستور فوق سریع جواب داد و برای هر کالا دو رکورد (یکی برای جمع ورود و دیگری برای جمع خروج میباشد) ولی مشخص نیست کدام ورود و کدام خروج . فیلد مشخص کننده ای ایجاد نشده است
farhad_shiri_ex
سه شنبه 30 مهر 1392, 17:00 عصر
دوست عزیز این ساده ترین شکل دستور T-sql هستش برای درک دستوراتش به MSDN یا کتاب T-sql مراجعه کنید بهتر است
1- a,b نام های مستعار برای جداول هستند که اختیاری هستند برای ساده نویسی
2- پس بنابراین a.codkala_f یعنی listkala.codekala_f
3- در دستورات sum بکار رفته در دستور select می توانید از عبارت as استفاده نمائید و خروجی را به یک فیلد نسبت دهید (پست بالا رو ویرایش کردم)
دوست عزیز سعی کنید از کلید تشکر استفاده کنید.
سعید20
سه شنبه 30 مهر 1392, 20:50 عصر
در مثال بالا بجای control_f باید b.control_f نوشته شود در غیراینصورت خطا میگیرد
اگر بخواهیم بجای دوتا ستون ( کد کالا و تعداد) ستونهای دیگری نیز در نظر گرفته شود (مانند نام کالا و .....) نام هرستونی را با نام مستعار قرار میدهیم باز هم خطا میگیرد
سعید20
چهارشنبه 01 آبان 1392, 13:52 عصر
در رابطه با محاسبه موجودی کالا وقتی بحث صورت گردش کالا در میان باشه یه مقدار گزارش گیری پیچیده تر میشه
با توجه به تعداد زیاد کالا و همینطور تعداد ورود خروج هر قلم کالا محاسبه فی میانگین موزون برای هر قلم کالا واجب میباشد و به همین خاطر بابت هر کالا یک بار فایل اطلاعات انبار فیلتر میشود و براساس تاریخ مرتب و از اول فایل تا آخر فایل کنترل ورود و خروج انجام میشود و فی میانگین محاسبه میگردد(در هر مقطع موجودی کالا صفر شود فی میانگین نیز صفر میشود) حال با این توضیحات متوجه میشوید که محاسبه خیلی طولانی میشود(به خاطر کثرت کالاها) روش دیگری شما میشناسید یا با دستورات T-sql میشود ؟
farhad_shiri_ex
شنبه 04 آبان 1392, 08:36 صبح
در رابطه با محاسبه موجودی کالا وقتی بحث صورت گردش کالا در میان باشه یه مقدار گزارش گیری پیچیده تر میشه
با توجه به تعداد زیاد کالا و همینطور تعداد ورود خروج هر قلم کالا محاسبه فی میانگین موزون برای هر قلم کالا واجب میباشد و به همین خاطر بابت هر کالا یک بار فایل اطلاعات انبار فیلتر میشود و براساس تاریخ مرتب و از اول فایل تا آخر فایل کنترل ورود و خروج انجام میشود و فی میانگین محاسبه میگردد(در هر مقطع موجودی کالا صفر شود فی میانگین نیز صفر میشود) حال با این توضیحات متوجه میشوید که محاسبه خیلی طولانی میشود(به خاطر کثرت کالاها) روش دیگری شما میشناسید یا با دستورات T-sql میشود ؟
دوست عزیز !
با دستورات T-sql شما امکان تهیه انواع مختلفی از پرس و جوها را خواهید داشت مطمئن باشید که هیچ محدودیتی نخواهید داشت شما می توانید با چند Query و Sub-Query به نتایج دلخواه خود برسید چه برای تعیین موجودی باشد چه برای محاسبه قیمت خوب البته برای محاسبه قیمت کار کمی پیچیده می شود اما اگر با دستورات T-sql آشنایی کافی ندارید می توانید از Query Designer Wizard خود v-fox استفاده نمائید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.