الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حل مشكلة المتوسط المرجح

مغلق
بدأه michaelnabil24 في 27 يوليو 2007 · 3 رد · 4,262 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بداية اود ان اشكر اسرة المنتدى على مجهودهم الرائع فى المنتدى و خصوصا المشرفة المميزة زهرة

بداية ارجو من القارئ لهذا الموضوع ان يسامحنى على ضعف معلوماتى و سوء اسلوبى فى شرح الفكرة

و الشرح التالى لفكرة المتوسط المرجح اساسا لان عندما نفهم الفكرة نفهم ما هو المطلوب برمجيا

المهم ان قانون المتوسط المرجح حسب المعلومات التى لدى من موضوع سابق فى المنتدى هو

السعر المتوسط المرجح= قيمة تكلفة الرصيد السابق + قيمة تكلفة الاضافة الجديدة /

كمية الرصيد السابق + كمية الاضافة الجديدة

و التسأول ما هى قيمة تكلفة الرصيد السابق ؟

و للأجابة على ذلك يجب ان نفكر كيف يجرى العمل فى نظام المخازن

بداية عند ورود صنف جديد تصبح تكلفتة هى رصيد اول المدة بالنسبة لهذا الصنف مثال : صنف وارد جديد كميتة 10 قطع و سعر القطعة 5 جنية فبالتالى تصبح تكلفتة هى 10×5 = 50 جنية

ثم تاتى كمية جديدة من هذا الصنف فتصبح اضافة جديدة للرصيد و ليكن 20 قطعة بسعر 2 جنية

فتصبح قيمة الاضافة هى 20×2=40

و بالتالى يصبح السعر المتوسط حسب القانون السابق

50+40 / 10+20=3

و الناتج السابق هو الذى يستخدم فى تسعير الكميات المنصرفة من المخزن بعد ذلك حتى تاتى اضافة جديدة

و فى هذة الحالة يصبح هناك تغيير بسيط فى تطبيق قانون السعر المتوسط و هو

السعر المتوسط المرجح = قيمة الرصيد السابق للأضافة الجديدة مسعر بالسعر المتوسط السابق + قيمة الاضافة الجديدة / كمية الرصيد السابق للأضافة الجديدة + كمية الاضافة الجديدة

و بالتطبيق على المثال السابق سوف نفترض اننا صرفنا من المخزن 5 قطع بسعر متوسط 3ج فيصبح قيمة الصرف 15 جنية و يقل رصيد المخزن 25 قطعة و قيمة المخزن هى 25×3= 75 جنية

و عند قدوم وارد جديد و عمل اضافة لة على الرصيد السابق يصبح الامر كالاتى :

اضافة 5 قطع سعر 1 جنية للقطعة فتصبح قيمة الاضافة الجديدة 5 جنية

و السعر المتوسط الجديد = 75+5 / 25+5=2.66666 جنية

و هكذا كلما تاتى اضافة جديدة نحسب السعر المتوسط من جديد و يمكنكم رؤية كارت الصنف المناسب لهذة الحالة من خلال تقرير كارت الصنف ملحوظة كود الصنف هو 2

الكود التالى موجود فى النموذج اضافة داخل الزر حفظ عند الحدث click 


Dim rst As ADODB.Recordset

Set rst = New ADODB.Recordset

 Dim rec1 As New ADODB.Recordset

Dim Result3 As Long   ' متغير نتيجة الحساب والخصم

 

Set rec1 = New ADODB.Recordset

الرصيد السابق // Me.txtCont2  

اذا كان يساوى الصفر فتعتبر هذة اول اضافة و بالتالى يتم قسمة اجمالى قيمة الاضافة على كمية الاضافة 

If (Me.txtCont2 = 0) Then			 

Me.avg1 = (Me.tprice) / (Me.F1_currency2)

Else

فى حالة اذا كانت هناك اضافة سابقة يتم استرجاع اخر قيمة مسجلة  للسعر المتوسط المرجح من الجدول //

 rec1.Open "select Last (table2.avg1) AS avg1 from table2 where [table2].[codepro]='" & Me.codepro & "' and [table2].[F1_Noa_AlAmaleya]='" & Me.F1_Noa_AlAmaleya & "'", CurrentProject.Connection, _

adOpenDynamic, adCmdText

اجمالى  قيمة الرصيد = السعر المتوسط الاخير × الرصيد السابق لهذا الصنف //

Me.tprice1 = rec1!avg1 * Me.txtCont2

اجمالى قيمة الرصيد السابق +اجمالى قيمة الاضافة / كمية الرصيد السابق +كمية الاضافة 

Me.avg1 = (Me.tprice1 + Me.tprice) / (Me.txtCont2 + Me.F1_currency2)

 

rec1.Close

End If

 

rst.Open "[table2]", CurrentProject.Connection, _

adOpenDynamic, adCmdTable

اضافة كافة المعطيات الجديدة و تخزينها فى الجدول //

rst.AddNew

rst!codepro = Me!codepro

rst!F1_DATE = Me!F1_DATE

rst![F1_currency2] = Me!F1_currency2

rst!F1_Noa_AlAmaleya = Me!F1_Noa_AlAmaleya

rst![almostand] = Me!almostand

rst!sup = Me!sup

rst!price = Me!price

rst!tprice = Me!tprice

rst!tprice1 = Me!tprice1

rst!oldstock = Me!txtCont2

 

rst!avg1 = Me!avg1

rst.Update

 

Me.codepro.Requery

 

 

MsgBox ("لقد تم ادخال الصنف")

استخراج الرصيد بعد الاضافة //

rec1.Open "SELECT Sum(table2.F1_currency2) AS SumOfF1_currency2,Sum(table2.F1_currency1) AS SumOfF1_currency1,nz(SumOfF1_currency2,0)-nz(SumOfF1_currency1,0) AS stock  from table2 where codepro='" & Me.codepro & "'", CurrentProject.Connection, _

adOpenDynamic, adCmdText

 

 Result3 = CLng(rec1!stock)

	  

 Me.txtCont3 = Result3

حفظ الرصيد بعد الاضافة فى الجدول // 

rst!stock = Me!txtCont3

rst.Update
rst.Close

اما بالنسبة للكود البرمجى فاعتقد اننى لم اجد الكود الصحيح تماما الذى ارضى عنة و لكن الكود المرفق يعمل بصورة جيدة حتى الان لكن يقابلنى مشكلة و هى فى حالة تغير سعر اضافة بعد ان تم التعامل معها و تحديد السعر المتوسط و ادخالة فى الجدول فان فى هذة الحالة يجب تعديل السعر المتوسط لكل الاضافات التالية لهذة الاضافة لكى يتحدث السعر المتوسط اى نقوم بكافة هذة الحسابات من جديدة و ليس هذا فقط بل من الممكن ان يتم تعديل كمية اضافة او كمية صرف و بالتالى سوف يتاثر الرصيد الذى نحسب علية كافة المعادلات و قد حاولت حل هذة المشكلة مبدئيا فى نموذج تعديل السعر لكن لم اوفق بسب عدم معرفتى لطريقة التنقل بين السجلات حتى الان لقلة خبرتى فى التعامل مع الكود لكن عندما اصل للحل سوف ارسلة فى المنتدى

اتمنى ان يكون هناك متابعة و تعليق على هذا الموضوع مع مراعاة قلة خبرتى بالنسبة لباقى الاعضاء و تقبلى للنقد البناء و التعلم من خبرات الاخرين و شكرا جزيلا

مرفق قاعدة بيانات ارفقها فى موضوع سابق احد الاعضاء و طلب حل هذة المشكلة و تعديل كارت الصنف

__________.rar

#2
Accessna كتب:
متعارف عليه بإسم السعر الوسطي

وبالإنجليزي Average Cost

عمل استعلامات للحصول على التكلفة الوسطية يميت البرنامج

وأكثر البرامج تضيف حقلا في جدول الأصناف بإسم إجمالي الكلفة

وبالإنجليزي Total Cost

وعلينا أن نحدث هذا الحقل مع كل عمليه إدخال أو إخراج للصنف

فمع عملية الشراء سوف نضيف تكلفة الشراء على التكلفة المخزنة سابقا

كذلك سنضيف الكميات على الرصيد الحالي للصنف

وبالإنجليزي Actual Stock

أما التكلفة الوسطية فلا داعي لتخزينها

فهي تتحصل من المعادلة التالية

إجمالي الكلفة / الرصيد الحالي

Total Cost / Actual Stock

/index.ph...st&p=646598

#3
Accessna كتب:

الاخ الفاضل شكرا على المرور و لكن ما اتكلم عنة فى هذاالموضوع ليس لة علاقة بما شرحتة فى تعقيبك على الموضوع لان ما تتكلم عنة هو متوسط عادى فالمتوسط المرجح هو

a weighted average

و الفرق كبير بين الاثنين اما من جهة بطئ البرنامج الذى يحسب المتوسط المرجح فلا اعرف اذا كان قصدك على البرنامج الذى ارفقتة ام قصدك عموما لذلك كنت اتمنى ان تقوم بتجربة البرنامج و اعطاء راى فى البرنامج الذى يعتمد فى عملة على اكواد

ado

التى نادرا ما تجد مبرمج اكسيس يستخدمها رغم امكانيتها الكبيرة لذلك ارجو ان نفتح نقاش يتناول هذا الموضوع بالذات

عموما هناك كتاب جديد فى الاكسيس يتناول كل المشاكل المالية و المحاسبية بطريقة برمجية صحيحة و هو

Access Data Analysis Cookbook

اتمنى اذا توافر لديك ان ترفقة لنا هنا فى المنتدى لاننى قرات عنة واعتقد ان بة حل قطعى لمشكلة المتوسط المرجح

و اخيرا اشكر لك اهتمامك

#4

ما طرحته وتطرحه أنت هو ماذكرته أنا سابقا وحاليا

لا فرق إلا في مقدار فهمك للمسألة

ليس عندي أكثر مما ذكرت .. وأنا بانتظارك حتى بعد عشر سنوات إن كان لنا عمر

فلن تأتي بغير السعر الوسطي وإن تعددت المسميات

هذا الموضوع مغلق.

مواضيع مشابهة