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

عمليه الترصيد بين الجداول

بدأه ahmed amer في 26 يونيو 2008 · 15 رد · 3,776 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الأخوة الأفاضل

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

يا ترى في حل لهذه المشكلة

thisform.grid2.RecordSource=''

SELECT pro_CODE,SUM(in)from in1;

GROUP BY pro_CODE INTO CURSOR vahmed5

thisform.grid2.RecordSource = 'vahmed5'

*-----------

thisform.grid1.RecordSource=''

SELECT pro_code,SUM(out)from out1;

GROUP BY pro_code INTO CURSOR vahm5

thisform.grid1.RecordSource = 'vahm5'

*-----------------

thisform.grid6.RecordSource=''

SELECT product5.pro_code,product5.pro_name,product5.pro_kind,vahmed5.sum_in,;

vahm5.sum_OUT,vahmed5.sum_in-vahm5.sum_out net;

from product5,vahmed5,vahm5 ;

WHERE vahmed5.pro_code=product5.pro_code;

AND vahm5.pro_code=product5.pro_code;

into CURSOR vcalc1

thisform.grid6.RecordSource = 'vcalc1'

INDEX on pro_CODE TO aa

أخوكم

أحمد عامر

Document1.pdf

#2

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

اخى الكريم

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

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

لدينا طريقتين

1 - طريقة SQL

يمكنك استخدام الامر Insert into للاضافة كالتالى

INSERT INTO dbf_name [(FieldName1 [, FieldName2, ...])]

   VALUES (eExpression1 [, eExpression2, ...])

مثال

USE employee

INSERT INTO employee (emp_no, fname, lname, officeno);

   VALUES (3022, "John", "Smith", 2101)

يمكنك استخدام الامر update للتعديل كالتالى

 

UPDATE Target

   SET Column_Name1 = eExpression1 [, Column_Name2 = eExpression2 ...]

   [FROM [FORCE] Table_List_Item [[, ...] | [JOIN [ Table_List_Item]]]

   WHERE FilterCondition1 [AND | OR FilterCondition2 ...]

مثال

UPDATE MyProductsList;

	SET MyProductsList.in_stock = MyUpdateTable.prod_unit;

	FROM MyUpdateTable;

	WHERE MyProductsList.prod_name = "Chai"

2 - طريقة xBase

الامر append blank لاضافة سجل جديد

والامر replace لتعديل محتويات حقل او مجموعة حقول فى سجل او مجموعة سجلات

APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]

مثال

CLOSE DATABASES

CREATE TABLE curRandom (nValue N(3))

FOR nItem = 1 TO 10  

   APPEND BLANK

   REPLACE nValue WITH 1 + 100 * RAND( )  

ENDFOR



CLEAR

LIST

SELECT MIN(nValue) as nMinimum, MAX(nValue) AS nMaximum;

   FROM curRandom INTO CURSOR curMinMax

? 'The minimum value is: ', nMinimum

? 'The maximum value is: ', nMaximum

CLOSE DATABASES

اما كلامك بعد حيث

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

يا ترى في حل لهذه المشكلة

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

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

يفترض التالى

1 - لديك جدول للاصناف فيه اسم كل صنف والكود الخاص به

2 - لديك جدول للواردات من الاصناف يسجل فيه كود الصنف والكمية التى تم شرائها والسعر الذى تم الشراء عليه

3 - لديك جدول للفواتير الخاص بالمبيعات يسجل فيه رقم الفاتورة وكود العميل الذى قام بالشراء

4 - لديك جدول للاصناف التى تم شرائها فى كل فاتورة وسعر البيع الذى تمت عليه العملية.

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

فانه عند السحب لحساب الارباح يتم الفرض ان الذى يتم شرائه اولا من نفس الصنف يتم بيعه اولا

وعند حساب الرصيد يتم حسابه للمبيعات او الواردات

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

ويمكن ان يستثنى من الربح الاجمالى تكاليف جانبية مثل الكهرباء والايجار ورواتب الموظفين والمصاريف النثرية وهكذا

والله الموفق

تم تعديل هذه المشاركة بواسطة محمود سمير في 27 يونيو 2008 في 01:31

#3

السلام عليكم

اخي الكريم احمد عامر

ارجوا منك توضيح المشكله اكثر حتى استطيع حلها ان امكن

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#4
اقتباس
اخي الكريم احمد عامر

ارجوا منك توضيح المشكله اكثر حتى استطيع حلها ان امكن

اخى مصطفى

الاخ احمد عامر تغيب بعد وضع السؤال ان شاء الله يكون السبب خير

لو مشكلته انحلت واجب يعرفنا ولو حصل معاه ظروف ان شاء الله يطمنا عليه

والله الموفق

#5

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

اشكركم على الإهتمام بس انا والله لم اتغيب بس بحاول في حل المشكله بالطريقه الل شرحتها لي واشكر الأخ مصطفي للإهتمام بالمشكله . المشكله تمكن في الأتي .

1 - جدول الإصناف به الآسماء وبيانات الأصناف بكود الصنف طبعا مفهرس .

2- جدول الإدخال لتسجيل عمليات الشراء ويكون الإدخال بكود الصنف وبذلك استدعي بيانات الصنف من جدول الآصناف بـ select وreplce لحد هنا كويس جدا تاتى عمله اجمالي الكمية للصنف وتكون المعادلة كالاتي :-

sum in to a

repl all total _in with a

- في جدول الصرف .

يكون الوضع كالآتي

sum out to b

repl all total_out with b

لحساب الرصيد يكون .

repl all net with total_in -total _out

لحد هنا ايضا تمام

اريد ترحيل الرصيد بعد اخر عملية صرف الى جدول الإدخال حتى اعرف الأرصدة المتبقية للأصناف حيث انها غير معلومة لي .

حاولت في عمل الآتي

public lq

lq=pro_code

SET FILTER TO pro_code = lq

select 2

use product

loca for pro_code=lq

if eof()

wait window " هذا الرقم غير موجو "

endif

n=pro_name

c=pro_code

k=pro_kind

select 2

USE in1

loca for pro_code=lq

av=av_price

i=total_in

p=price

su=supp_name

SELECT 1

repl pro_name with n,pro_code with c,pro_kin WITH k,stock WITH i,av_price WITH av,price with p,supp_name WITH su

REPLACE ALL in1.net WITH in1.in-out1.out

GOTO BOTTOM

THISFORM.Refresh

بس للأسف لم يرحل الرصيد بس باقي الكود شغال في معظمه إلا

REPLACE ALL in1.net WITH in1.in-out1.out

اريد حل لها

هي دي المشكله اللي انا واقع فيها

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

اسف أخ محمود على التاخير على الرد بس والله اليوم حاولت بس مش عارف انا مش جاحد للدرجه دي

جزاكم الله عنا خيرأ

#6

السلام عليكم

اخي الكريم محمود سمير

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

اخي الكريم احمد عامر

ايه اخبارك ؟ لعلك بخير

ياريت يكون التوضيح مصحوبا بمثال من ملفات البيانات وفيها كام حركه مع توضيح مثال للمخرج المطلوب

لان الكود مش مفهوم بالنسبة لي ( مش عارف العيب اكيد في انا :resentful: )

يعني بتعمل سيليكت وريبليس ومش عارف مين بيروح فين انا تهت :unsure:

اللي فهمته ان عندك 3 جداول :

جدول فيه اكواد الاصناف والكميات.

وجدول للكميات الوارده.

وجدول للكميات المنصرفه.

وتريد ان تعدل الكميات في جدول الاصناف (حقل الكمية)

اذا كان ما فهمته صح

يمكنك عمل جملة سيليكت تأخد من جدولين وهذه الجملة تعرض رقم الصنف و صافي الكمية ( الوارد - الصادر )

ثم تقوم بعمل جملة تعديل في حقل الكمية التي في جدول الاصناف

تم تعديل هذه المشاركة بواسطة mostafa_fa في 30 يونيو 2008 في 00:45

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#7

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

الإخوة الأفاضل

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

اتمنى منكم التعليق بالشرح حيث انني ارسلت لكم كم مرة

5.rar

#8

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

الأخ الكريم أحمد أرجو المعذرة . حملت الملف اليوم وسامحنى إلى الغد إن شاء الله تعالى .

ولى كلمتان : الأولى ما معنى كلمة ترصيد وماذا تقصد بها ؟ والثانية لماذا ما زلت كما تقول تستخدم الويزارد ؟ أعلى هذا اتفقنا ؟

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

#9

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

طبعا انا بحاول جاهدا في التخلص منه والفضل لله عز وجل ولحضرتك في البرنامج عدد 2 فورم الخاصة اسماء الأصناف والموردين أرجو ان يكون هذا العمل الذي هو حصليه شرحكم ارجو تقيمه لي بس الفورم الخاصه الإدخال والإخراج لسه منتظر شرحكم في عمليه الربط بين الفورم وانا متابعكم بشغف في باب النماذج وتصميم الفورم وكل تجربه اعدلها في الفورم الخاصه بي .

1- اما الترصيد فهو

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

post-148883-1215007149_thumb.jpg

#10

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

الأخ الكريم أحمد عامر . أرسلت إلى حضرتك رسالة بالأمس ولا أدرى هل وصلتكم أم لا .

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

بالنسبة لإمكانية التغيير هذه نستخدم الأمر UPDATE وتكون صيغته كما ذكر الأخ محمود سمير .

فمثلا نفترض أن الجدول الحالى اسمه THISTABLE والآخر المطلوب التغيير فيه اسمه OTHERTABLE والحقل هنا اسمه THISFIELD والحقل فى الجدول الآخر اسمه changethat

وقد أدخلنا بيانات فى الحقل thisfield فنكتب الأمر التالى للتغيير :

update othertable set changethat = thistable.thisfield + othertable.changethat where othertable.changethat = thistable.thisfield

أرجو أن تكون الأمور قد وضحت .

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

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

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

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

تم تعديل هذه المشاركة بواسطة عبد المنعم محمد عبد الخالق في 4 يوليو 2008 في 15:25

#11

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

شكرا جدا على الإهتمام اما بخصوص طلبي فهو بالضبط ما وضحته لي في الشرح ما شاء الله بخصوص text1 خلافة طبعا انا لسه مش مبرمج ولكن مبتدئ حيث انني بعمل جدول على الأكسل واوضح فيه كل text بما يقابله في الجدول حتى تكون الورقه امامي باستمرار .

بالنسبة للكود الحمد لله والفضل لله عز وجل ولكم

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

update product SET total_in = in2.total_in + product.total_in where

product.code= in2.code

هل هو شبه منطقي كدا ولا فيه تعديل .

بالنسبة مش هافم يعني ايه لا يمكن الدخول فيه بسهوله طبعا انا عارف انه ملخبط من الناحية التنظيمية والبرمجية بس اللي يهمني فيه الأن هو النتيجة واما التعليم فانا مباشر مع حضرتك ومتابع جيد وانا بطبق كل اللي بتعلمه معك في نفس العمل بس بطريقة الإحلال والتجديد .

وانا إن شاء الله سوف اجرب الكود في الصباح في العمل حيث اليوم الجمعه وانا زي ما انت تعرف زيارات ونوم بعد عمل اسبوع

أما بخصوص الرساله فهي لو على الموبايل لم تصل لو من النت اخي عبد المنعم هو موقع سهل ومريح جدا في الرسائل بس لا تكتب صفرين قبل الرقم بل + ثم الرقم 966543240704 وإن شاء الله سوف تصل

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

تم تعديل هذه المشاركة بواسطة ahmed amer في 4 يوليو 2008 في 20:37

#12

السلام عليكم

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

update product SET total_in = in2.total_in + product.total_in where

product.code= in2.code

طبعا انا قمت بعمليات كثيرة لجميع الأصناف علشان اعمل ترصيد لها مرة واحد هل يوجد طريقة لعملية التحديث مرة واحدة حتى لا اقوم بالإضافة لكل الآصناف

يعني مثل

replece all أو update all وكتابة الكود في زر مثل زر تحديث مثلا

حيث ان عندي اكثر من 450 صنف علشان اعمل update لهم ها اقوم بإضافة 450 مرة في شاشة الإدخال و450 مرة في شاشة الصرف حتى يتم تحديث الرصيد في جدول الأصناف

أيه رايك في الورطه دي هو لو انا مش بعدل على عمل قائم بالفعل كان سهل بس للأسف انا شغال عيله من فترة من أول السنة

#13

السلام عليكم

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

استخدم مثلا الدواره FOR واتحرك سجل سجل يعني مثلا

SELECT in2
rcnt = RECCOUNT()
FOR i = 1 TO rcnt
GO i
xcde=in2.code
xtotin=in2.total_in
UPDATE product SET total_in = xtotin + total_in WHERE code= xcde
 ENDFOR

كده دورة الفور دي هتلف سجل سجل في جدول in2 وفي كل لفه هناخد بيانات من الجدول (الكود والمجموع) ونضع القيم في متغيرات ثم نعمل جملة التحديث على جدول الاصناف .

الطريقه دي انا بستخدمها ياريت تجربها وتقولي النتيجه

تم تعديل هذه المشاركة بواسطة mostafa_fa في 18 يوليو 2008 في 16:51

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#14

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

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

اهلا بك ونورت المنتدى

أخوك أحمد عامر

#15

وعليكم السلام

الحمد لله مر المصيف على خير بصراحه الواحد كان محتاج فعلا يصيف لان دماغي ليا 3 سنين مصيفتش

الحمد لله الذي هدانا لهذا وما كنا لنهتدي لولا ان هدانا الله

450x250_1.gif

طريقك لاحتراف برمجة قواعد البيانات باستخدام Visual FoxPro

#16

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

الحمد لله تمام النتيجة 100% بس بكرة إن شاء الله في الدوام سوف اجربها على الجدول حيث انني عملت تجربة في البيت والحمد لله تمام

جزاك الله خير

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

أخوك أحمد عامر

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