سؤالي كالتالي في الجدول الكبير على الجانب الأيسر DBGRID
أقوم بعملية الحساب وتخرج عندي ثلاث نتائج
النتيجة الاولى في EDIT 1 وفيها المبلغ الإجملي خارج الرسم(الكمية ضرب السعر )
في الخانة الثانية الرسم على القيمة المضافة 7 بالمئة(ضرب T_V_A في المبلغ الإجملي المقابل لها )
مثلا في مثالنا (4688 ضرب0.07 )+(4688 ضرب0.07 )
في الخانة الثالثة الرسم على القيمة المضافة 71 بالمئة(ضرب T_V_A في المبلغ الإجملي المقابل لها )
مثلا في مثالنا (2424 ضرب0.17 )+(2424 ضرب0.17 )
المشكل في الخانة الثانية والثالثة
PHP كود :
procedure TForm16.Button1Click(Sender: TObject);
var x,y,z,a,b,c:integer;
begin
z:=0;
ADOTable3.close;
ADOTable3.open;
while not ADOTable3.Eof do
begin
x:=ADOTable3.FieldByName('prix_P').Value ;
y:=ADOTable3.FieldByName('quantite').Value;
z:=z+(x*y);
ADOTable3.Next;
EDIT1.text:=FloatToStr(z);
edit2.Text:=FloatToStr(z*0.07);
end;
![[صورة: hI9x3.png]](http://im41.gulfup.com/hI9x3.png)
السلام عليكم و رحمة الله تعالى و بركاته
أخي جرب التغيير في تعريف المتغيرات الى متغير حقيقي لعلها تحل المشكل
var x,y,z,a,b,c:real;
بالتوفيق
شكرا أخ مخلوف على الرد لكن مشكلتي في الفلترة الحقل tva
فان كانت 7 بالمئة يقوم بجمع نتائجها في الخانة 2
وان كانت 17 بالمئة يقوم بجمع نتائجها في الخانة 3
لم أوفق في كتابة الشرط داخل الحلقة
العفو يا اخي
جرب هذا الكود لعله ينفع:
بالتوفيق
procedure TForm16.Button1Click(Sender: TObject);
var x,y,z,a,b,c:real;
begin
z:=0;
ADOTable3.close;
ADOTable3.open;
while not ADOTable3.Eof do
begin
x:=ADOTable3.FieldByName('prix_P').Value ;
y:=ADOTable3.FieldByName('quantite').Value;
z:=z+(x*y);
ADOTable3.Next;
EDIT1.text:=FloatToStr(z);
if (ADOTable3.FieldByName('tva').Value)=0.07 then
edit2.Text:=FloatToStr(z*0.07)
else
edit3.Text:=FloatToStr(z*0.17);
end;
بالتوفيق
هذا الكود يقوم بأخد القيمة في الخانة الاولي edit1 ويضربها في 0,07 ويضعها في edit 2لم يقم بفلترة tva
DJILANI كتب :هذا الكود يقوم بأخد القيمة في الخانة الاولي edit1 ويضربها في 0,07 ويضعها في edit 2لم يقم بفلترة tva
السلام عليكم و رحمة الله تعالى و بركاته:
أخي ما فهمته هو أن الحقل TVA فيه قيمتان 7 أو 17 فإن كانت القيمة 7 يضرب القيمة الموجودة في الخانة 1 في 0.07 أما إن كانت القيمة 17 يضرب القيمة الموجودة في الخانة الأولى في 0.17.
جرب هذا الكود
procedure TForm16.Button1Click(Sender: TObject);
var x,y,z,a,b,c:real;
begin
z:=0;
ADOTable3.close;
ADOTable3.open;
while not ADOTable3.Eof do
begin
x:=ADOTable3.FieldByName('prix_P').Value ;
y:=ADOTable3.FieldByName('quantite').Value;
a:=ADOTable3.FieldByName('TVA').Value;
z:=z+(x*y);
EDIT1.text:=FloatToStr(z);
if (a=0.07) then
edit2.Text:=FloatToStr(z*0.07);
if (a=0.17) then
edit3.Text:=FloatToStr(z*0.17);
ADOTable3.Next;
end;
end;
بالتوفيق
غيرت في الكود لكن النتيجة مازالت خاطئة
PHP كود :
var x,y,z,a,b,c:Real;
begin
z:=0; c:=0;
ADOTable3.close;
ADOTable3.open;
while not ADOTable3.Eof do
begin
a:=ADOTable3.FieldByName('T_V_A').Value ;
b:=ADOTable3.FieldByName('total_detail').Value;
x:=ADOTable3.FieldByName('prix_P').Value ;
y:=ADOTable3.FieldByName('quantite').Value;
z:=z+(x*y);
ADOTable3.Next;
if (ADOTable3.FieldByName('T_V_A').Value)=7 then
begin
c:=c+(a*b);
end;
EDIT1.text:=FloatToStr(z);
edit2.Text:=FloatToStr(c*7)
end;
أخي تحقق من قيمة TVA و أجر العملية قبل الإنتقال إلى السجل القادم
if (ADOTable3.FieldByName('T_V_A').Value)=7 then
begin
c:=c+(a*b);
end;
EDIT1.text:=FloatToStr(z);
edit2.Text:=FloatToStr(c*7
تكون قبل
ADOTable3.Next;
جرب بالتوفيق
السلام عليكم حاول كالتالي و ردلنا الخبر
PHP كود :
ADOTable3.First;
while not ADOTable3.Eof do
begin
{ ضع الكود الخاص بك هنا لا تستدعي الحقل التالي نكست
قبل ان تتم العمليات على الحقل الحالي}
ADOTable3.Next;
end;
السلام عليكم و رحمة الله تعالى و بركاته
هذا هو المثال أتمنى ان يكون هذا ما تبحث عنه
بالتوفيق