السادة الكرام ارجو المساعدة فى إظهار الرصيد الخاص بالصنف عند إختياره و بمعيار الفرع
مرفق مثال
السادة الكرام ارجو المساعدة فى إظهار الرصيد الخاص بالصنف عند إختياره و بمعيار الفرع
مرفق مثال
إذا كان السؤال مبهم يمكنني التوضيح اكثر
اخي الكريم
نعم السؤال غير واضح بالنسبة لي فماذا تقصد بالرصيد
هل هو رصيد الصنف المتوفر ويزيد عند اضافة وارد وينقص عند اضافة صادر .. ام انه ناتج عملية حسابية معينة.
الرجاء التوضيح اكثر مع اعطاء نتائج متوقعة للقيم الموجودة لديك .. ليتمكن الجميع من المساهمة في الحل
بالتوفيق
نعم سيدى الكريم هو رصيد الصنف المتوفر يزيد عند اضافة وارد وينقص عند اضافة صادر
اى ان يكون الرصيد هذا خاص بفرع من الفروع اى لكى يتم كتابة رصيد خاص بالمادة المعينة و للفرع المعين الذى تم إختيارة
اخي qatar_ahmed_em
طالما ان حقل الرصيد يتم حسابه بحيث يزيد عند كل عملية وارد وينقص عند كل عملية صادر فأرى بأن حقل الرصيد ليس مكانه جدول العمليات
تم تغيير مسميات الجداول والحقول الى اللغة الانجليزية وبدون فراغات .
انظر الى الاستعلام qryFinalBalance .. هذا الاستعلام يكون هو محصلة جميع الارصدة لجميع الاصناف بكل فرع
ارجو ان يفيدك هذا الحل
الاخ يوسف و الاخ ناصر شكرا على المجهود الكبير و الاخ ناصر جاء قريب مما اريده و لكنى ارجو منه ان يشرح الطريقة التى اتى بها لتعم الفائدة و ارجو منه ان يظهر الرصيد قبل وضع الكمية الوارده او الصادرة و عند وضع الكمية يتم الطرح او الاضافة فى حقل اخر و ذلك لكي يتم عمل كنترول على ما يمكن ان يصدر او ان الرصيد لا يكفى و شكراً
الاخ يوسف المثال واضح و لكن هل يمكن إظهار الرصيد من الاستعلام هذا فى النموذج ليتم معرفة الرصيد الحالى و القرار فى الزيادة او النقص عليه حتى لا يسمح بتصدير كمية مواد الرصيد لا يسمح بها و هذا هو الهدف من إظهار الرصيد فى نموذج العملية
تم تعديل هذه المشاركة بواسطة qatar_ahmed_em في 28 نوفمبر 2008 في 10:08
qatar_ahmed_em كتب:الاخ يوسف و الاخ ناصر شكرا على المجهود الكبير و الاخ ناصر جاء قريب مما اريده و لكنى ارجو منه ان يشرح الطريقة التى اتى بها لتعم الفائدة
حياك الله يا اخي هذه الطريقة مشروحة بالصور
لاحظ انه اصبح لدينا حقلين للرصيد
حقل الرصيد الحقيقي في جدول الارصدة
وحقل الرصيد بعد العملية في جدول العمليات والذي يحتفظ بالرصيد بعد كل عملية
طبعاً لم ننتهي بعد ولكني اريد منك ان تحاول الاجابة على هذا السؤال لتختبر معلوماتك؟
لماذا لم يتم اضافة النموذج الفرعي"branch item subform" الى النموذج "صادرS" كنموذج رئيسي؟ وما حاجتنا الى النموذج الرئيسي "صادر"
الخطوة التالية :
وضعت الكود التالي الى الحقل "رمز الفرع" عند الاجراء "بعد التحديث"
وهذا الكود مجزءاً
Private Sub رمز _الفرع_AfterUpdate() If IsNull(Me![كود الصنف]) Then Exit Sub
الخطوة الاولى من الكود تبحث في الحقل "كود الصنف" فاذا كان فارغاً يخرج من العملية
Forms![صادر]![branch item subform].Form.Requery If Not IsNull(Forms![صادر]![branch item subform].Form![itemid]) Then Exit Sub
الخطوة الثانية من الكود تجبر النموذج الفرعي "branch item subform " على اعادة الاستعلام ليعطينا رصيد الصنف المطلوب في الفرع المطلوب اذاكان الفرع المطلوب يحتوي على الصنف المطلوب فان قيمة الكمية سيتم ترحيلها الى الحقل الذي اضفناه باسم "Mount" في نموذج ال"صادرS" وتخرج من العملية.
وهذه هي اجابة سؤلك التالي
qatar_ahmed_em كتب:ارجو منه ان يظهر الرصيد قبل وضع الكمية الوارده او الصادرة و عند وضع الكمية يتم الطرح او الاضافة فى حقل اخر و ذلك لكي يتم عمل كنترول على
ستجد الكمية في الحقل المسمى "Mount"
سؤال : ماذا اذا لم يحضر النموذج الفرعي "branch item subform" اي قيمة ؟؟ بمعنى اخر الفرع المطلوب لايحتوي على هذا الصنف؟
DoCmd.RunSQL "INSERT INTO [branch item] ( itemid, Branchid, Mount )SELECT '" & Me![كود الصنف] & "' AS idb, '" & Me![رمز الفرع] & "' AS idi, 0 AS mount;" Forms![صادر]![branch item subform].Form.Requery
جواب : ستقوم جملة ال "Sql" الظاهرة بالكود اعلاه بالحاق سجل جديد في جدول الارصدة يحتوي هذا السجل على "رمز الفرع" و "كود الصنف" اما الكمية فسيتم تعيينها الى "صفر"
ثم سيتم اعادة الاستعلام على النموذج الفرعي "branch item subform" من جديد
سؤال : قلت في الخطوة الاولى من الكود اذا كان فارغاً يخرج من العملية فكيف يتم الاستعلام بعد ملء خانة كود الصنف
جواب: قمت باضافة الكود التالي الى الحقل "كود الصنف" والذي يكرر العملية السابقة بشكل معكوس. اي يبحث في الحقل "رمز الفرع" فاذا كان فارغاً يخرج من العملية والا يجبر النموذج الفرعي "branch item subform " على اعادة الاستعلام ليعطينا رصيد الصنف المطلوب في الفرع المطلوب.
Private Sub كود_الصنف_AfterUpdate() If IsNull(Me![رمز الفرع]) Then Exit Sub Forms![صادر]![branch item subform].Form.Requery If Not IsNull(Forms![صادر]![branch item subform].Form![itemid]) Then Exit Sub DoCmd.RunSQL "INSERT INTO [branch item] ( itemid, Branchid, Mount )SELECT '" & Me![كود الصنف] & "' AS idb, '" & Me![رمز الفرع] & "' AS idi, 0 AS mount;" Forms![صادر]![branch item subform].Form.Requery End Sub
مازلت لم اجيب على سؤالك
qatar_ahmed_em كتب:و ذلك لكي يتم عمل كنترول على ما يمكن ان يصدر او ان الرصيد لا يكفى و شكراً
هذه الخطوة لم اضيفها ولكي تحقق ذلك
قم بتعديل الجملة التالية والتي تم شرحها في الخطوة الثانية من الكود
Forms![صادر]![branch item subform].Form.Requery If Not IsNull(Forms![صادر]![branch item subform].Form![itemid]) Then Exit Sub
قم بتعديل الجملة الى الشكل التالي في الحدثين السلبقين ( "كود الصنف"بعد التحديث) و ("رمز الفرع" بعد التحديث)
Forms![صادر]![branch item subform].Form.Requery If Not IsNull(Forms![صادر]![branch item subform].Form![itemid]) Then Msgbox"الرصيد غير متوفر" Exit sub End If
عندما يكون الرصيد صفر فانع ستظهر لك رسالة تفيد بان الرصيد غير متوفر
ما زلنا لم ننتهي بعد
الخطوة التالية:
الكود التالي في حقل "الصادر" وعند الاجراء "بعد التحديث"
Private Sub الصادر_AfterUpdate() Dim sf sf = Forms![صادر]![branch item subform].Form Forms![صادر]![branch item subform].Form.Requery
الخطوة الولى من الكود لتعيين متغير باسم "Sf" ليمثل النموذج الفرعي "branch item subform" بدلاً من كتابة اسمه في كل مرة
sf![Mount] = sf![Mount] - Me![الصادر] Me![الصادر] = sf![Mount] End Sub
الخطوة الثانية من الكود لتعديل قيمة الحقل "Mount" والذي يمثل الرصيد في النموذج الفرعي "branch item subform"
ليساوي قيمته الاولى مطروحاً منها قيمة الحقل "الصادر"
طبعاً في هذه الحالة اذا كانت قيمة الصادر اكبر من قيمة الرصيد سيصبح الرصيد بالسالب
اما اذا اخطانا وحذفنا حقل "الصادر" فستحصل كارثة وهي تعيين قيمة الرصيد الى "Null" قيمة فارغة وهنا علينا ان نعيد جرد المستودع لمعرفة الرصيد :lol:
ولذلك قم بتعديل هذا الكود كالتالي:
اضف هذين الكودين قبل الخطوة الثانية
If IsNull(Me![الصادر]) Then Me![الصادر] = 0
الكود الاول اذا كانت قيمة الحقل الصادر خالية فانه يتم تعديلها الى صفر
If Me![الصادر] > sf![Mount] Then MsgBox "كمية غير متوفرة" Me![الصادر] = 0 Exit Sub End Iff
هذا الكود يتأكد من ان الكمية المطلوبة اقل من الرصيد والا يعطي رسالة "كمية غير متوفرة"
ثم يعين قيمة الحقل "الصادر" الى صفر
ثم يخرج من العملية
انتهى برنامج الصادر
كرر نفس الاجراءات بالنسبة لنموذج الوارد باستثناء الاضافة بدل الطرح عند ادخال اي قيمة في حقل "الوارد"
لا حاجة لاضافة رسائل "كمية غير متوفرة"
انتهى بحمد الله ورعايته
ارجو ان اكون قد وفقت بالشرح
ناصر المصاروة
تم تعديل هذه المشاركة بواسطة Naser Al Masarwa في 28 نوفمبر 2008 في 23:58
شبكة سوارقريباً
Sewar
الشرح ممتاز و جميل هل لى ببعض الاسئلة :
- هل هناك طريقة ابسط من ذلك فى معرفة الرصيد
- هل من الممكن تحويل من فرع الى فرع مع إظهار الارصدة لكل منهما
الموضوع عاجل - افهم صعوبة الامر و شكراً
qatar_ahmed_em كتب:الشرح ممتاز و جميل هل لى ببعض الاسئلة :- هل هناك طريقة ابسط من ذلك فى معرفة الرصيد
ربما يكون هناك طريقة ابسط ولكن يجب الاحتفاظ بالرصيد النهائي بجدول مستقل وكذلك تسجيل الرصيد بعد كل عملية بجدول العمليات وذلك لاغراض الجرد
qatar_ahmed_em كتب:- هل من الممكن تحويل من فرع الى فرع مع إظهار الارصدة لكل منهما
قبل ذلك وفي كل الاحوال اضافة حقل الى جدول العمليات يسمى "الوجهة" بكسر الواو وبذلك يمكن معرفة الى اين ذهبت البضاعة
فى حالة المبيعات يسجل في هذا الحقل (الفاتورة رقم :****)
في حال التوالف يسجل في هذا الحقل (سند توالف رقم :****)
وفي حالة التحويل يسجل في هذا الحقل (اسم المستودع الهدف ورقم سند التحويل)
ومع ذلك يفضل القيام بذلك بعمليتين( صادر و وارد)
وذلك ليتم تسجيل رصيد كل فرع بعد العملية كما شرحنا للغايات الجردية
برأيي اتباع الطرق الصحيحة حسب قوانين وانظمة المستودعات ياتي اهم من تبسيط العمليات
اي من المهم تبسيط العمليات ولكن بحيث لا تخل بانظمة العمل الصحيحة
ممكن ان تقوم بذلك بعملية واحدة من خلال اضافة نموذج خاص بعملية التحويل بحيث يتم ادخال البيانات مرة واحدة ثم يقوم هذا النموذج بالحاق سجلين في جدول العمليات سجل للصادر وسجل للوارد
اخوك ناصر المصاروة
تم تعديل هذه المشاركة بواسطة Naser Al Masarwa في 30 نوفمبر 2008 في 14:02
شبكة سوارقريباً
Sewar
سيدى الكريم شكرا اخى الكريم على تعاونك و استأذنك فى معرفة كيفية عمل نموذج خاص بعملية التحويل و شكرا
الاخ الكريم ناصر الدين
الطريقة فعلا رائعة وجزاك الله احسن الجزاء وشكر الله لك
اخوك ابراهيم
سيدى ناصر اسف على التأخير فى شكرك و الاشادة بإبداعك نظراً لسفرى
ارجو من سيادتك التكرم بمساعدتى فى عملية التحويل بشكل ان يكون التحويل لاكثر من صنف ففى مخليتى ان يكون لفورم التحويل نموذج فرعى كمثل الصادر او الوارد و الاختيار للفروع من النموذج الرئيسي و النموذح الفرعى به كمية التحويل و إظهار الارصدة و ارجو منك الشرح للتعلم
و شكرا
هلا من مجيب
هل الفكرة صعبة ؟
اخي الكريم عدل هذا الكود
عندك غير موجودة كلمة Refresh
Private Sub ßæÏ_ÇáÕäÝ_Exit(Cancel As Integer) Refresh Forms![æÇÑÏ]![branch item subform1].Form.Requery If IsNull(Forms![æÇÑÏ]![branch item subform1]) Then Exit Sub [Forms]![æÇÑÏ]![SæÇÑÏ].[Form]![Mount] = Forms!æÇÑÏ![branch item subform1].Form!Mount End Sub
واذا هذه الطريقة لم تنفع لاني لم اشاهد البرنامج كما يجب اكتب لي في المشاركة التالية
اخوك ماجد شاور
قلقيلية
فلسطين
الكتابة باللغة العربية داخل الكود ملخبطة لهذا ننصح الجميع بالكتابة باللغة الانكليزية
تم تعديل هذه المشاركة بواسطة shawar في 18 فبراير 2009 في 22:39