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

إظهار الرصيد الخاص بالصنف عند إختياره و بمعيار الفرع

بدأه qatar_ahmed_em في 25 نوفمبر 2008 · 20 رد · 3,476 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

مرفق مثال

Balance.rar

#2

إذا كان السؤال مبهم يمكنني التوضيح اكثر

#3

اخي الكريم

نعم السؤال غير واضح بالنسبة لي فماذا تقصد بالرصيد

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

الرجاء التوضيح اكثر مع اعطاء نتائج متوقعة للقيم الموجودة لديك .. ليتمكن الجميع من المساهمة في الحل

بالتوفيق

#4

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

#5

السلام عليكــم ورحمـة الله وبركاتــه

qatar_ahmed_em كتب:
السادة الكرام ارجو المساعدة فى إظهار الرصيد الخاص بالصنف عند إختياره و بمعيار الفرع

مرفق مثال

ما المقصود بمعيار الفرع

؟؟؟؟؟

شبكة سوارقريباً

Sewar

#6

اى ان يكون الرصيد هذا خاص بفرع من الفروع اى لكى يتم كتابة رصيد خاص بالمادة المعينة و للفرع المعين الذى تم إختيارة

#7

اخي qatar_ahmed_em

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

تم تغيير مسميات الجداول والحقول الى اللغة الانجليزية وبدون فراغات .

انظر الى الاستعلام qryFinalBalance .. هذا الاستعلام يكون هو محصلة جميع الارصدة لجميع الاصناف بكل فرع

ارجو ان يفيدك هذا الحل

Balance.rar

#8

السلام عليكــم ورحمـة الله وبركاتــه

وهذه طريقة اخرى بعد اذن اخي يوسف

Balance.rar

ناصر المصاروة

شبكة سوارقريباً

Sewar

#9

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

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

تم تعديل هذه المشاركة بواسطة qatar_ahmed_em في 28 نوفمبر 2008 في 10:08

#10
qatar_ahmed_em كتب:
الاخ يوسف و الاخ ناصر شكرا على المجهود الكبير و الاخ ناصر جاء قريب مما اريده و لكنى ارجو منه ان يشرح الطريقة التى اتى بها لتعم الفائدة

حياك الله يا اخي هذه الطريقة مشروحة بالصور

post-171591-1227898880_thumb.jpg

لاحظ انه اصبح لدينا حقلين للرصيد

حقل الرصيد الحقيقي في جدول الارصدة

وحقل الرصيد بعد العملية في جدول العمليات والذي يحتفظ بالرصيد بعد كل عملية

طبعاً لم ننتهي بعد ولكني اريد منك ان تحاول الاجابة على هذا السؤال لتختبر معلوماتك؟

لماذا لم يتم اضافة النموذج الفرعي"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

#11

الشرح ممتاز و جميل هل لى ببعض الاسئلة :

- هل هناك طريقة ابسط من ذلك فى معرفة الرصيد

- هل من الممكن تحويل من فرع الى فرع مع إظهار الارصدة لكل منهما

الموضوع عاجل - افهم صعوبة الامر و شكراً

#12
qatar_ahmed_em كتب:
الشرح ممتاز و جميل هل لى ببعض الاسئلة :

- هل هناك طريقة ابسط من ذلك فى معرفة الرصيد

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

qatar_ahmed_em كتب:
- هل من الممكن تحويل من فرع الى فرع مع إظهار الارصدة لكل منهما

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

فى حالة المبيعات يسجل في هذا الحقل (الفاتورة رقم :****)

في حال التوالف يسجل في هذا الحقل (سند توالف رقم :****)

وفي حالة التحويل يسجل في هذا الحقل (اسم المستودع الهدف ورقم سند التحويل)

ومع ذلك يفضل القيام بذلك بعمليتين( صادر و وارد)

وذلك ليتم تسجيل رصيد كل فرع بعد العملية كما شرحنا للغايات الجردية

برأيي اتباع الطرق الصحيحة حسب قوانين وانظمة المستودعات ياتي اهم من تبسيط العمليات

اي من المهم تبسيط العمليات ولكن بحيث لا تخل بانظمة العمل الصحيحة

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

اخوك ناصر المصاروة

تم تعديل هذه المشاركة بواسطة Naser Al Masarwa في 30 نوفمبر 2008 في 14:02

شبكة سوارقريباً

Sewar

#13

سيدى الكريم شكرا اخى الكريم على تعاونك و استأذنك فى معرفة كيفية عمل نموذج خاص بعملية التحويل و شكرا

#14

السلام عليكــم ورحمـة الله وبركاتــه

تم التعديل المطلوب

Balance.rar

ناصر المصاروة

شبكة سوارقريباً

Sewar

#15

الاخ الكريم ناصر الدين

الطريقة فعلا رائعة وجزاك الله احسن الجزاء وشكر الله لك

اخوك ابراهيم

#16
etqan54 كتب:
الاخ الكريم ناصر الدين

حياك الله اخي الكريم

إن شاء الله ان نكون واياك من ناصري الدين

ناصر المصاروة

شبكة سوارقريباً

Sewar

#17

سيدى ناصر اسف على التأخير فى شكرك و الاشادة بإبداعك نظراً لسفرى

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

و شكرا

#18

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

و شكراُ

A_.rar

#19

هلا من مجيب

#20

هل الفكرة صعبة ؟

#21

اخي الكريم عدل هذا الكود

عندك غير موجودة كلمة 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

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