منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
رصيد الصنف عقب كل عملية - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : رصيد الصنف عقب كل عملية (/showthread.php?tid=25139)

الصفحات: 1 2 3 4 5 6 7


رصيد الصنف عقب كل عملية - atefkhalf2004 - 28-05-18

اطرح علي السادة الزملاء موضوع يهم كثير من الناس واولهم انا العبد الغلبان

هو

تاريخ                        الصنف     كمية شراء         كمية بيع          رصيد
1/1/2018               شاي            14                      0                  14
2/1/2018                شاي           5                         0                  19
5/1/2018                شاي           0                         6                  13

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


RE: رصيد الصنف عقب كل عملية - elgokr - 29-05-18

(28-05-18, 11:14 PM)atefkhalf2004 كتب : اطرح علي السادة الزملاء موضوع يهم كثير من الناس واولهم انا العبد الغلبان

هو

تاريخ                        الصنف     كمية شراء         كمية بيع          رصيد
1/1/2018               شاي            14                      0                  14
2/1/2018                شاي           5                         0                  19
5/1/2018                شاي           0                         6                  13

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


يمكنك استخدام الاستعلام التالى
كود :
SELECT invsun, invqu, purqu, it_balance, invdate FROM adraseed WHERE it_balance <> 0

او الاستعلام التالى لعرض الجدول كاملاً
كود :
SELECT * FROM adraseed WHERE it_balance <> 0

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

تحياتى لك
وتمنياتى لك التوفيق



RE: رصيد الصنف عقب كل عملية - atefkhalf2004 - 29-05-18

حضرتك انا عايز الرصيد يظهر عقب كل عملية ويكون الناتج كما هو  موجود بالصورة

اي الرصيد يعرض كما في الشكل السابق

حضرتك  الكود  المرفق  يعض  رصيد موجود
لكن انا عايزه  ينتج   عقب كل عملية بيع او  شراء    ( اضافة ) او ( حذف)

شكرا

يا سادة الموضوع هام ربنا يخليكم


RE: رصيد الصنف عقب كل عملية - elgokr - 29-05-18

(29-05-18, 03:09 AM)atefkhalf2004 كتب : حضرتك انا عايز الرصيد يظهر عقب كل عملية ويكون الناتج كما هو  موجود بالصورة

اي الرصيد يعرض كما في الشكل السابق

حضرتك  الكود  المرفق  يعض  رصيد موجود
لكن انا عايزه  ينتج   عقب كل عملية بيع او  شراء    ( اضافة ) او ( حذف)

شكرا

لرؤية فكرة الاستعلام شكلياً وليس عملية فى البرمجة تابع

الشكل لفرز منتج واحد
كود :
SELECT invsun as `الصنف`, SUM(purqu) as `كمية شراء`, SUM(invqu) as `كمية بيع`, SUM(purqu - invqu ) as `رصيد` FROM adraseed WHERE invsun = 'شاحن اصلى 3'  GROUP BY invsun

الشكل لعرض جميع المنتجات
كود :
SELECT invsun as `الصنف`, SUM(purqu) as `كمية شراء`, SUM(invqu) as `كمية بيع`, SUM(purqu - invqu ) as `رصيد` FROM adraseed GROUP BY invsun

طيب عملياً طيف يتم تطبيق الفكرة لاستخدامها فى البرمجة
فى البداية ستحتاج الى عمل استعلام للتحقق (الاستعلام يتم عمل من الاحدث للاقدم)
ان الجدول يحتوى منتج فى حركة المبيعات والمشتريات ام لا

ثانياً عند التحق وكان الناتج لا
سيتم عمل كود الاضافة مباشر عادى
وعند قيمة عمود it_balance الخاص بالرصيد
سيتم جلبه من خلال (قيمة الشرء - قيمة البيع) 
الطبيعى اول ادخال لمنتج جديد هيكون شراء
هيكون الشكل هو (5 - 0) = 5 وهنا ده قيمة الرصيد

ثالثاً: فى حالة التحقق كان الناتج ايجابى / نعم يوجد منتج بالجدول
هنا هنلجاء ليمة الاستعلام وهناخد اول قيمة من الاستعلام
للتوضيح اكثر : مثلاً الاستعلام اخرج النتائج التالية
1- شاي  0 1 4
2- شاي 5 0 5

وهنا لما قلت من الاحدث الى الاقدم لانك ستلجاء لاول قيمة
ولتسهيل الامور اكثر وهو عند عمل الاستعلام وعمل من الاحدث للاقدم يمكنك عمل جلب يمة واحدة
بحيث انه يعرض الناتج التالى فقط
1- شاي 0 1 4

يارب حتى الان لا تكون تهت منى فى الشرح
ومن ثم عند عمل الاضافة لعملية حركة جديدة لشاء او بيع
يتم اخد قيمة الرصيد من الاستعلام واللى هيكون 4
من ثم يتم عملية الجمع والطرح من خلال الاضافة
(4 + قيمة الشراء - قيمة البيع)
لتبقي عملية الحسابية هذه للرصيد ى الاضافة الجديدة

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

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

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

ومع كل عملية اضافة او حذف
تقوم فقط بعملية الحسابية
(قيمة رصيد المخازن + الشراء - البيع)
واليمة دى تتم ادراجها فى قيمة الرصيد عن اضافة حركة بيع وشراء
وايضاً يتم بتحديثها فى جدول المنتجات للمنتج

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


تحياتى لك
وتمنياتى لك التوفيق


RE: رصيد الصنف عقب كل عملية - atefkhalf2004 - 29-05-18

دائما الشرح ممتاز

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


RE: رصيد الصنف عقب كل عملية - elgokr - 29-05-18

(29-05-18, 05:10 AM)atefkhalf2004 كتب : دائما الشرح ممتاز

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


صافى الرصيد هو نفسه الرصيد

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

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

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

من ثم تطبيق الكود التالى ( الكود كا مثال )
كود :
INSERT INTO adraseed (invdate, invsun, purqu, invqu, it_balance) VALUES ('قيمة التاريخ', 'اسم المنتج', 'قيمة الشراء', 'قيمة البيع', 'عملية حسابية لـ اخر رصيد للمنتج + قيمة الشراء - قيمة البيع')

تحياتى لك
وتمنياتى لك التوفيق



RE: رصيد الصنف عقب كل عملية - atefkhalf2004 - 29-05-18

شكرا لك علي الفكرة الجيدة

وهي

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

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


RE: رصيد الصنف عقب كل عملية - elgokr - 29-05-18

(29-05-18, 02:27 PM)atefkhalf2004 كتب : شكرا لك علي الفكرة الجيدة

وهي

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

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


الشكر لله

بالعكس انا قمت بشرحها
فى ثانياً / ثالثاً

تعال نطبق عملى بالكود على الملف المرفق لك مسبقاً

كود الاضافة الافتراضي
كود :
INSERT INTO adraseed (itcod, invsun, invqu, purqu, it_balance, invprc, invdate, purprc, makas) VALUES ('1302','شاحن اصلي 3','0','10',((SELECT LAST(it_balance) FROM adraseed WHERE itcod = 1302)+10-0),'60','29/05/2018','35','ش ص 3')

مع اخد بالاعتبار الجزء التالى فى كود الاضافة
كود :
((SELECT LAST(it_balance) FROM adraseed WHERE itcod = 1302)+10-0)

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

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

فى الوقت ده هيكون قاعدة البيانات مختلفة
ويجب ان يكون فى عدد 2 جدول
الاول خاص بالمنتجات ( جميع المنتجات بالمخازن بدون تكرار برقم كود غير مكرر )

الثاني وهو نفس الجدول الذى تتعامل معه بدون اى اختلاف من ثم تطبق الكود التالى

كود :
INSERT INTO adraseed (itcod, invsun, invqu, purqu, it_balance, invprc, invdate, purprc, makas) SELECT itcod, invsun, (0) as invqu, (10) as purqu, (it_balance + 10 - 0) as it_balance, (60) as invprc, ('29/05/2018') as invdate, (35) as purprc, ('ش ص 3') as makas FROM NameTable WHERE itcod = 1302

فكرة الكود ده التالى
انه بيعمل اضافة بناءاً على رقم كود المنتج المدخل فى Form
مع البيانات التالية وهى (كمية الشراء - كمية البيع - سعر الشراء - سعر البيع - تاريخ الفاتورة)
بحيث ان ما تم ذكر اسمائهم من الطبيعي غير موجدين فى جدول المنتجات لكن فقط فى جدول حركة المحزن

طيب نوضح اكتر كل جزء بالكود ليعم الفائدة على الجميع

الجزء الاول من الكود:
كود :
INSERT INTO adraseed (itcod, invsun, invqu, purqu, it_balance, invprc, invdate, purprc, makas)

هنا عبارة عن كود الاضافة عادى لكن بدون
كود :
VALUES ('قيم الاضافة')

وتم استبداله بهذا الجزء من الكود وهو

الجزء الثانى من الكود:
كود :
SELECT itcod, invsun, (0) as invqu, (10) as purqu, (it_balance + 10 - 0) as it_balance, (60) as invprc, ('29/05/2018') as invdate, (35) as purprc, ('ش ص 3') as makas FROM NameTable WHERE itcod = 1302

وهنا هو عملية استعلام لجلب بيانات المنتج من جدول المنتجات بنائاً على رقم المنتج المدخل فى Form

مع التوضيح التالى 
كود :
SELECT itcod, invsun,

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

ومن حيث كلاً من ما يشابه التالى
كود :
(0) as invqu, (10) as purqu

وهو عملية ادراج اعمدة غير موجودة فى جدول المنتج
مثل كمية الشراء - كمية البيع - تاريخ الفاتورة - .... الخ

عند التعديل على الجزء ده هيكون مكان كل من رقم 0 و 10 والتاريخ
هو textbox لكل جزء فى الفورم

وبخصوص هذا الجزء
كود :
(it_balance + 10 - 0) as it_balance

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

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

الجزء الخاص بـ
كود :
FROM NameTable

وهنا مكان NameTable هو اسم جدول المنتجات

ويبقي فى النهاية

الخزء الخاص بـ
كود :
WHERE itcod = 1302

وهنا هو فلتر لرقم المنتج المدرج بنائاً على Form لاضافة حركة مخازن

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

تحياتى لك
وتمنياتى لك التوفيق



RE: رصيد الصنف عقب كل عملية - atefkhalf2004 - 29-05-18

هناك جملة  iif وليس  if
انا متأكد اني شفتها  في كود  سطر  واحد  يعرض كارت الصنف 

تاريخ                        الصنف     كمية شراء         كمية بيع          رصيد
1/1/2018               شاي            14                      0                  14
2/1/2018                شاي           5                         0                  19
5/1/2018                شاي           0                         6                  13
هي جملة طويلة لكن ان شاء الله


RE: رصيد الصنف عقب كل عملية - elgokr - 29-05-18

(29-05-18, 09:50 PM)atefkhalf2004 كتب : هناك جملة  iif وليس  if
انا متأكد اني شفتها  في كود  سطر  واحد  يعرض كارت الصنف 

تاريخ                        الصنف     كمية شراء         كمية بيع          رصيد
1/1/2018               شاي            14                      0                  14
2/1/2018                شاي           5                         0                  19
5/1/2018                شاي           0                         6                  13
هي جملة طويلة لكن ان شاء الله


كود :
IIf(TestMe > 1000, "Large", "Small")

الفكرة منها انك تعملى تحقق if مع else
ولكن ما تتحدث عنه من الممكن ان الشخص كان قام بانشاء Class او Sub
وقام باستدعاء داخل اذا تحقق الشرط
من حيث اذا كان أ يساوى منتج قم بعرض الجدول للمنتج فقط
اذا كان لا فقم بعرض جدول لجميع المنتجات

تحياتى لك