صباح الخير
لدي استفسار
في استعلام حركة مادة في برنامج مستودعات
كيف يمكن عمل رصيد المادة تراكمي أي إذا كان هناك حقل لرصيد المادة بعد كل عملية إخراج أو أدخال كيف يمكن حساب الرصيد النهائي التراكمي للمادة
و لكم الشكر
صباح الخير
لدي استفسار
في استعلام حركة مادة في برنامج مستودعات
كيف يمكن عمل رصيد المادة تراكمي أي إذا كان هناك حقل لرصيد المادة بعد كل عملية إخراج أو أدخال كيف يمكن حساب الرصيد النهائي التراكمي للمادة
و لكم الشكر
صباح الخير للجميع
أرجو من أحد الخبراء مساعدتي على حل هذه المشكلة
و لكم كل الشكر
مساء الخير
هل السؤال صعب لهذه الدرجة
أرجو المساعدة من أحد الخبراء
و لكم الشكر
مساء الخير
ما زلت انتظر مساعدة من أحد الخبراء
و لكم الشكر
أخي العزيز جملة بسيطة
select item_id , sum(item_qty) from items group by item_id
[وسط][/وسط]إن أجري إلا على الله
إلى الأخ بشار شكرا على المساعدة
و لكن يبدو لي أن فكرتي غير واضحة فليس هذا ما أريد
إن ما أريد هو كالآتي
عندما قمت باستعلام لحركة المادة أنا لا أريد الرصيد النهائي بعد كل الحركات ولكن أريد بعد كل حركة (عملية بيع أو شراء ..
أن يقوم بحساب الرصيد الجديد
أي كمثال (كان لدي كمية من مادة 10 قطع
قمت ببيع 2 أريد أن يعطيني في حقل الكمية 8 ثم بعد ذلك اشتريت 3 فأريد أن يعطيني في حقل الكمية 11و هكذا حتى نهاية العمليات على المادة
أرجو أن تكون الفكرة واضحة الآن
و لك كل الشكر على المساعدة
silva_ko كتب:إلى الأخ بشار شكرا على المساعدةو لكن يبدو لي أن فكرتي غير واضحة فليس هذا ما أريد
إن ما أريد هو كالآتي
عندما قمت باستعلام لحركة المادة أنا لا أريد الرصيد النهائي بعد كل الحركات ولكن أريد بعد كل حركة (عملية بيع أو شراء ..
أن يقوم بحساب الرصيد الجديد
أي كمثال (كان لدي كمية من مادة 10 قطع
قمت ببيع 2 أريد أن يعطيني في حقل الكمية 8 ثم بعد ذلك اشتريت 3 فأريد أن يعطيني في حقل الكمية 11و هكذا حتى نهاية العمليات على المادة
أرجو أن تكون الفكرة واضحة الآن
و لك كل الشكر على المساعدة
الاخ العزيز Silva_ko إن الرصيد الجديد هو فعلياً الرصيد الكلي سواء بعت من المادة أو اشتريت بناءً على نوع الحركة فيفترض أنك عندما تبيع مادة ما تدخل( إما نوع الحركة) و لنفرض أنها بيع يجب أن يقوم النظام عندك بفهم أن الكمية في هذه الحركة هي عملية طرح، أو تدخل أنت الكمية بإشارة الناقص.
و بالتالي فإن الجملة التي رديت عليك فيها ستجمع و تطرح حتى يتم اظهار مجموع الكمية (الرصيد) الفعلي لديك.
select item_id, sum(qty) from transaction table where item_id = 'Item_ID' groups by item_id
هذا تعديل بسيط على الجملة التي كتبتها سابقاً
ضع مكان Transaction table إسم الجدول التذي يتم عليه حركات البيع و الشراء
ضع مكان 'item_id' إسم المادة التي تريد الاستعلام عنها
[وسط][/وسط]إن أجري إلا على الله
إلى الأخ بشار
أنا شاكرة جدا لمساعدتك
و لكن إن ما أريده مختلف
فأنا أريد من البرنامج أن يضع لي في حقل منفصل الرصيد بعد كل عملية و ليس الرصيد النهائي بعد كل العمليات
أي مرحلة بمرحلة و بعد كل مرحلة يطرح أو يضيف بحسب العملية التالية من الرصيد السابق
اي بفرض كان لدي 10 قطع و أضفنا 2 يصبح 12 و يكتب لي 12 في حقل الرصيد
ثم أريده أن يأخذ الرصيد 12 و بفرض بعت 3 قطع أن يعطيني الرصيد 9 في حقل الرصي و هكذا إلى النهاية
أتمنى أن أكون قد أوضحت الفكرة جيدا
و أنا شاكرة جدا لك على مجهودك
silva_ko كتب:فأنا أريد من البرنامج أن يضع لي في حقل منفصل الرصيد بعد كل عملية و ليس الرصيد النهائي بعد كل العملياتأي مرحلة بمرحلة و بعد كل مرحلة يطرح أو يضيف بحسب العملية التالية من الرصيد السابق
أهلاً بك أختي العزيزة
كيف تميزين حركات البيع من الشراء؟ هل هناك حقل إسمه نوع الحركة ؟ أم أنك عندما تبيعين تدخلي الكمية بإشارة الناقص؟
[وسط][/وسط]إن أجري إلا على الله
declare @SalesQty int, @purQty int, @Total int set @salesQty = (select sum(qty) from dbo.trans where trans_type_id =2) set @purQty = (select sum(qty) from dbo.trans where trans_type_id =1) select @total = @purQty - @salesQty select @salesQty as [كمية البيع],@purQty as [كمية الشراء], @total as [الرصيد]
هذا الكود يضع الرصيد الإجمالي لكل المواد بعد كل عملية إذا كنا نميز الحركات بنوع الحركة (حركة بيع أو شراء) و إذا أردنا مادة معينة نعدل السطر الثاني و الثالث ليصبح
set @salesQty = (select sum(qty) from dbo.trans where trans_type_id =2 and item_id ='item id set @purQty = (select sum(qty) from dbo.trans where trans_type_id =1 and item_id = 'Item ID'
ملاحظات :
where trans_type_id =2 أبدلي مكان رقم 2 رمز حركة البيع إذا كانت رقماً و إذا كانت رمزاً ضعيها بين ' ' و أبدلي الرقم واحد بنوع حركة الشراء
item_id = 'item id' أبدلي بعد إشارة = المادة التي فعلاً أنتي عليها
تم تعديل هذه المشاركة بواسطة بشار عواد في 4 يونيو 2008 في 14:16
[وسط][/وسط]إن أجري إلا على الله
صباح الخير
شكرا للأخ بشار على المساعدة
و لكن هل من الممكن أن تشرح لي الكود
و شكرا جزيلاً
بشار عواد كتب:declare @SalesQty int, @purQty int, @Total int set @salesQty = (select sum(qty) from dbo.trans where trans_type_id =2) set @purQty = (select sum(qty) from dbo.trans where trans_type_id =1) select @total = @purQty - @salesQty select @salesQty as [كمية البيع],@purQty as [كمية الشراء], @total as [الرصيد]هذا الكود يضع الرصيد الإجمالي لكل المواد بعد كل عملية إذا كنا نميز الحركات بنوع الحركة (حركة بيع أو شراء) و إذا أردنا مادة معينة نعدل السطر الثاني و الثالث ليصبح
set @salesQty = (select sum(qty) from dbo.trans where trans_type_id =2 and item_id ='item id set @purQty = (select sum(qty) from dbo.trans where trans_type_id =1 and item_id = 'Item ID'ملاحظات :
where trans_type_id =2 أبدلي مكان رقم 2 رمز حركة البيع إذا كانت رقماً و إذا كانت رمزاً ضعيها بين ' ' و أبدلي الرقم واحد بنوع حركة الشراء
item_id = 'item id' أبدلي بعد إشارة = المادة التي فعلاً أنتي عليها
أختي العزيزة
هذا الكود ممكن يكون Stored Procedure تستدعيه كلما صار هناك حركات على مادة معينة بحيث قمنا بشراء مادة كودها '10100A' بكمية 50 حبة
وتمت عملية الشراء بجدول إسمه Daily_Transaction بالمعلومات التالية
10100A , 50 , PUR, 02/06/2008
ثاني يوم قمنا ببيع 30 حبة من هذه المادة و في نفس الجدول
10100A,30,SLS,03/06/2008
لإخراج الرصيد الحالي
declare @SalesQty int, @purQty int, @Total int set @salesQty = (select sum(qty) from Daily_Transaction where trans_type_id ='SLS' and item_id = '10100A') set @purQty = (select sum(qty) from Daily_Transaction where trans_type_id ='PUR' and item_id = '10100A') select @total = @purQty - @salesQty select @salesQty as [كمية البيع],@purQty as [كمية الشراء], @total as [الرصيد]
الناتج : كمية البيع = 30
كمية الشراء = 50
الرصيد = 20
الكمية التي تريدينها أنتي هي (الرصيد)
و ممكن أن تستخدمي Parameter تمرري له Item_ID و تضعيه بدل '10100A' لجعل الكود يسري على جميع المواد التي تريدينها و ليس مادة واحدة
[وسط][/وسط]إن أجري إلا على الله