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

مشكلة في جمع عمود ناتج عن نسبة مئوية

بدأه YACIN في 6 فبراير 2009 · 6 رد · 1,603 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

بعد ما قسمة مبلغ والضرب و جمعت المبلغ لكن المبلغ يعطيني خاطئ وهو ناتج عن نسبة مئوية

مثلا الملبغ الصحيح يكون ---------------------- 19753.56

المبلغ الخاطئ ---------------------------------- 19753.55

اي الفرق هناء سنتيم ما الحل ليكون المبلغ صحيح هل من دالة

او شي اخر افيدونا بــــــارك الله فيكــــــــــــــــــــم

عملية القسمة والضرب في هذا المثال

DM.QMoCNSR22.Value:=(DM.QMoCNSSalaireP.Value/100*34.5);
#2
YACIN كتب:
عملية القسمة والضرب في هذا المثال

DM.QMoCNSR22.Value:=(DM.QMoCNSSalaireP.Value/100*34.5);

بتعديل طفيف فى طريقة القسمة والضرب ، هل هذا يحدث فارقاً؟ (لم أجرب الناتج)

DM.QMoCNSR22.Value:=(DM.QMoCNSSalaireP.Value*0.345);

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#3

سلام عليكم

شكرا لك اخي الفاضل ASPHP على ردك

لكن التعديل الذي اجريته نفس الشي لايحدث تغيير نفس المبلغ

اتمنى من لديه فكرة اكثر دقة بارك الله فيكم

#4

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

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#5

تحياتي لكم شكرا لك اخي ASPHP على تعاونك

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

وهذا هو الكود كامل فيما يخص القسمة والضرب

procedure TIPMI.QMoCNSCalcFields(DataSet: TDataSet);
begin

DM.QMoCNSR22.Value:=(DM.QMoCNSSalaireP.Value/100*34.5);


end;

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

كود

procedure TCNAS.Mt2Execute(Sender: TObject);
var
SumMt4:Real
begin
SumMt2:=0;
DM.QMoCNS.DisableControls;
DM.QMoCNS.First;
while not DM.QMoCNS.Eof do
begin
SumMT2:=SumMT2+DM.QMoCNSR22.Value;
DM.QMoCNS.Next;
end;
   DM.QMoCNS.EnableControls;
 Label2.Caption:=FormatFloat('0.00',SumMT2);
end;

والف شكر لكم جميعا اخوتي حياكم الله بهذا الموقع العلمي العربي الأكثر من رائع

#6

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

procedure TCNAS.Mt2Execute(Sender: TObject);
var
SumMt4:Real
begin
SumMt2:=0;
DM.QMoCNS.DisableControls;
DM.QMoCNS.First;
while not DM.QMoCNS.Eof do
begin
SumMT2:=SumMT2+DM.QMoCNSSalaireP.Value;
DM.QMoCNS.Next;
end;
SumMT2:=(SumMT2*0.345);
DM.QMoCNS.EnableControls;
Label2.Caption:=FormatFloat('0.00',SumMT2);
end;

مع ملاحظة ان الداله FormatFloat تقوم بعملية تقريب، بمعنى أن الرقم 19753.557 سيظهر 19753.56

راقب أفكارك ... لأنها تصبح كلمات

راقب كلماتك ... لأنها تصبح أفعالاً

راقب أفعالك ... لأنها تصبح عادات

راقب عاداتك ... لأنها تصبح شخصيتك

راقب شخصيتك ... لأنها تصبح مصيرك

#7

اولا شكرا لك اخي ASPHP كثيرا على مساعدتك

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

وفيما يخص النسبة المئوية

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

QMoCNSR22.Value:=StrToFloat(FormatFloat('0.00',(QMoCNSSalaireP.Value/100*34.5)));

على العموم اشكرك اخي ASPHP كثير على متابعتك وشكرا للجميع

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

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

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

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

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