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

[ تمت الإجابة ]برنامج لحساب الاندثار لمواد مختلفة

بدأه نورالعراق في 23 فبراير 2012 · 17 رد · 1,411 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

PUBLIC oo1,mt1

yy1=thisform.text1.Value

SELECT mast_fil

SET FILTER TO ALLTRIM(DAL)=ALLTRIM(t2)

SET FILTER TO mast_fil.year<=yy1

BROWSE

SET ORDER to 1 && ALLTRIM(DAL)

SET ORDER TO 2 && YEAR

IF mast_fil.year=yy1

BROWSE

MESSAGE("áÓäÉ ÊÓÇæí ÇáÓäÉ ÇáÍÇáíÉ ")

SKIP

ENDIF

IF mast_fil.year<yy1

BROWSE

SELECT mast_fil

IF mst_pr=mst_mtr then

mst_end=0

MESSAGE("áãÊÑÇßã íÓÇæí ÇáßáÝÉ")

SKIP

else

endif

IF mst_pr!= mst_mtr then

MESSAGEBOX("ÇáßáÝÉ áÇÊÓÇæí ÇáãÊÑÇßã")

SELECT mast_fil

GO TOP

DO WHILE !EOF()

STORE 0 TO mt3

IF mst_bal <> 0

REPLACE mt2 WITH mast_fil.mst_pr*xx +mst_end

replace marwa WITH mt2

?mt2,"áÓäæí ÇáÍÇáí ÇáÇäÏËÇÑ"

REPLACE mst_mtrs WITH mst_mtr+mt2

?mst_mtrs,"ÇáãÊÑÇßã ÇáÌÏíÏ"

replace mst_bal WITH mst_pr-mst_mtrs

? mst_bal,"hgvwd]"

REPLACE mr WITH mst_pr-mst_mtrs

?mr,"áÑÕíÏ"

REPLACE year WITH yy+1

SELECT aht

APPEND BLANK

replace n1 WITH mast_fil.mt2

replace n2 WITH mast_fil.mst_mtrs

replace n3 WITH mast_fil.mr

REPLACE da WITH mast_fil.dal

SKIP

*ENDIF

endif

ENDDO

ENDIF

endif

MESSAGEBOX("ooooooooovvvvvvveeeeeeeeeeeeerrrrrrrrrrrÇÊãÊÊ ÇáÍÓÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÇÈ")

thisform.grid1.Refresh

#3

جربي هذا الكود

 
SET TALK OFF
yy1=thisform.text1.Value 
SELECT mast_fil
SET FILTER TO
SET FILTER TO ALLTRIM(DAL)=ALLTRIM(t2) AND year=yy1
GO TOP 
thisform.Refresh
DO WHILE !EOF() 
IF mst_pr=mst_mtr 
mst_end=0
MESSAGE("work caluc")
ELSE 
STORE 0 TO mt3
IF mst_bal#0
REPLACE mt2 WITH mst_pr*xx +mst_end
replace marwa WITH mt2
REPLACE mst_mtrs WITH mst_mtr+mt2
replace mst_bal WITH mst_pr-mst_mtrs
REPLACE mr WITH mst_pr-mst_mtrs
REPLACE year WITH yy+1
SELECT aht
APPEND BLANK
GO BOTTOM 
replace n1 WITH mast_fil.mt2
replace n2 WITH mast_fil.mst_mtrs
replace n3 WITH mast_fil.mr
REPLACE da WITH mast_fil.dal
ENDIF 
ENDIF
SELECT mast_fil
GO TOP
ENDDO
MESSAGEBOX("OK")
SELECT aht 
BROWSE 
SELECT mast_fil
SET FILTER TO
GO top
thisform.Refresh

تم تعديل هذه المشاركة بواسطة lion iraq في 27 فبراير 2012 في 19:49 — السبب: اختصار في بعض الايعازات المتكررة والبحث ع

#4
lion iraq كتب:

جربي هذا الكود

 
SET TALK OFF
yy1=thisform.text1.Value 
SELECT mast_fil
SET FILTER TO
SET FILTER TO ALLTRIM(DAL)=ALLTRIM(t2) AND year=yy1
GO TOP 
thisform.Refresh
DO WHILE !EOF() 
IF mst_pr=mst_mtr 
mst_end=0
MESSAGE("work caluc")
ELSE 
STORE 0 TO mt3
IF mst_bal#0
REPLACE mt2 WITH mst_pr*xx +mst_end
replace marwa WITH mt2
REPLACE mst_mtrs WITH mst_mtr+mt2
replace mst_bal WITH mst_pr-mst_mtrs
REPLACE mr WITH mst_pr-mst_mtrs
REPLACE year WITH yy+1
SELECT aht
APPEND BLANK
GO BOTTOM 
replace n1 WITH mast_fil.mt2
replace n2 WITH mast_fil.mst_mtrs
replace n3 WITH mast_fil.mr
REPLACE da WITH mast_fil.dal
ENDIF 
ENDIF
SELECT mast_fil
GO TOP
ENDDO
MESSAGEBOX("OK")
SELECT aht 
BROWSE 
SELECT mast_fil
SET FILTER TO
GO top
thisform.Refresh

#5

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

اذا كانت السنة القيد اقل من سنة المدخلة نحسب اندثار وهكذا ..؟؟؟؟؟؟ :sad: :wacko:

#6

SET FILTER TO ALLTRIM(DAL)=ALLTRIM(t2) AND year<=yy1

هذا الفلتر اذا عدلتة ديدخل البرنامج في loop ومديطلع منها :sad:

#7

السلام عليكم

هل يمكن ارفاق الجدول ؟

أستغفر الله العظيم و أتوب إليه

#8

السلام عليكم والحمد لله على السلامة اخي عبد الله

اختي العزيزة نور الكود شغال عندي 100%

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

lion iraq كتب:

جربي هذا الكود

SET TALK OFF

yy1=thisform.text1.Value

SELECT mast_fil

SET FILTER TO

SET FILTER TO ALLTRIM(DAL)=ALLTRIM(t2) AND year<=yy1

GO TOP

thisform.Refresh

DO WHILE !EOF()

IF mst_pr=mst_mtr

mst_end=0

MESSAGE("work caluc")

ELSE

STORE 0 TO mt3

IF mst_bal#0

REPLACE mt2 WITH mst_pr*xx +mst_end

replace marwa WITH mt2

REPLACE mst_mtrs WITH mst_mtr+mt2

replace mst_bal WITH mst_pr-mst_mtrs

REPLACE mr WITH mst_pr-mst_mtrs

REPLACE year WITH yy+1

SELECT aht

APPEND BLANK

GO BOTTOM

replace n1 WITH mast_fil.mt2

replace n2 WITH mast_fil.mst_mtrs

replace n3 WITH mast_fil.mr

REPLACE da WITH mast_fil.dal

ENDIF

ENDIF

SELECT mast_fil

GO TOP

ENDDO

MESSAGEBOX("OK")

SELECT aht

BROWSE

SELECT mast_fil

SET FILTER TO

GO top

thisform.Refresh

اما عن العمل لاحظي نموذجك وهو نفس الكود الموجود

وفي النهاية يظهر لك جدول التخزين ويقوم باستبدال السنوات الموجودة لسنة الحالية وهذا حسب طلبكم

تحياتي للجميع

noor.zip

#9

شكرا استاذ بارك الله فيك تعبتك معي ولكن مااعرف شنو السبب عندما انفذة البرنامج مديطلع من loop عموما ماقصرت شكرا لجهودك المبذولة :clapping:

#10

شكرا استاذ للجهودك اسفة loopمظبوط بقى فقط المبالغ لااتغير اذا مشيت البرنامج مرة ثانية ؟؟؟ :sad:

#11
نورالعراق كتب:

شكرا استاذ للجهودك اسفة loopمظبوط بقى فقط المبالغ لااتغير اذا مشيت البرنامج مرة ثانية ؟؟؟ :sad:

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

الاندثار=

المتراكم=

الرصيد =

الاحتياطي=

المتراكم الاحتياطي=

الاندثار السنوي الحالي=

الرصيد الحالي=

الاندثار الشهري =

MARWA =

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

تحياتي للجميع

#12

استاذي العزيز اتاسف لتأخري بالرد

السعر*نسبة الاندثار=الاندثار السنوي

تاريخ القيد(الشهر فقط)=س

الشهر +1

الاندثار السنوي/12=الاندثار في شهر واحد

الاندثارفي شهر*س=مبلغ الاندثار السنوي

المتراكم =الاندثار السنوي+متراكم الاندثار

الرصيد=السعر-المتراكم

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

الان انا اريد امشي برنامجي الموجود امامك لكي اقوم بمايلي

السعر*نسبة=االاندثار السنوي الحالي

المتركم الحالي=المتراكم القديم+المتراكم الحالي

الرصيد الحالي=

السعر-المتراكم الحالي

الاندثار السنوي الحالي=الاندثار السابق+الاندثار الحالي

تم تعديل هذه المشاركة بواسطة نورالعراق في 11 مارس 2012 في 11:11

#13
نورالعراق كتب:

استاذي العزيز اتاسف لتأخري بالرد

السعر*نسبة الاندثار=الاندثار السنوي

تاريخ القيد(الشهر فقط)=س

الشهر +1

الاندثار السنوي/12=الاندثار في شهر واحد

الاندثارفي شهر*س=مبلغ الاندثار السنوي

المتراكم =الاندثار السنوي+متراكم الاندثار

الرصيد=السعر-المتراكم

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

الان انا اريد امشي برنامجي الموجود امامك لكي اقوم بمايلي

السعر*نسبة=االاندثار السنوي الحالي

المتركم الحالي=المتراكم القديم+المتراكم الحالي

الرصيد الحالي=

السعر-المتراكم الحالي

الاندثار السنوي الحالي=الاندثار السابق+الاندثار الحالي

السلام عليكم

اختي العزيزة نور

ارجو وضع القوانين النصية للمتغيرات المذكورة سابقاً

تحياتي للجميع

#14

اخي في الله الاندثارالسنوي هو field د\اخل فايل الماستر يستخرج من mast_pr *xxحيث xx هو ميموري فيربيل من النسب لذلك انا داعمل على ان املي حقول الفايل من خلا البرنامج

اما الاندثار السنوي الحالي هو فيلد ايضا داخل لاالماستر احفظ بي الاندثار بعد القطع وشكراااا

#15
نورالعراق كتب:

اخي في الله الاندثارالسنوي هو field د\اخل فايل الماستر يستخرج من mast_pr *xxحيث xx هو ميموري فيربيل من النسب لذلك انا داعمل على ان املي حقول الفايل من خلا البرنامج

اما الاندثار السنوي الحالي هو فيلد ايضا داخل لاالماستر احفظ بي الاندثار بعد القطع وشكراااا

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

سوف اعمل المثال على المتغيرات السابقة في البرنامج كمثال طبعا

#16

الاخت العزيزة لي سوال :هل في كل مرة ينقص السعر اي هل الرصيد - السعر يساوي السعر الجديد

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

حسب المعادلة الموجودة

تحياتي للجميع

#17

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

#18
نورالعراق كتب:

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

اختي العزيزة

في كل مرة لاتتغير القيم بسبب ثبوت القيم الاصلية

مثلا في كل مرة يجمع 1+1 الناتج هو 2 لاتتغير القيم بسبب ثبوت قيمة 1 الاولى وقيمة 1 الثانية

وبالحقيقة لم اصل الى قصدك

ولكن ادلك على طريق اكتبي المعادلة المرادة اخراج قيمها ضمن الشرط الثاني في DO WHILE

وسوف تظهر لك النتيجة المراد عرضها

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

تحياتي لك

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…