كيف يمكن حساب جميع قيم جدول dbgrid
#1
سؤالي كالتالي في الجدول الكبير على الجانب الأيسر 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]
الرد
#2
السلام عليكم و رحمة الله تعالى و بركاته
أخي جرب التغيير في تعريف المتغيرات الى متغير حقيقي لعلها تحل المشكل
var x,y,z,a,b,c:real;
بالتوفيق
الرد
#3
شكرا أخ مخلوف على الرد لكن مشكلتي في الفلترة الحقل tva
فان كانت 7 بالمئة يقوم بجمع نتائجها في الخانة 2
وان كانت 17 بالمئة يقوم بجمع نتائجها في الخانة 3
لم أوفق في كتابة الشرط داخل الحلقة
الرد
#4
العفو يا اخي
جرب هذا الكود لعله ينفع:

بالتوفيق

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;

بالتوفيق
الرد
#5
هذا الكود يقوم بأخد القيمة في الخانة الاولي edit1 ويضربها في 0,07 ويضعها في edit 2لم يقم بفلترة tva
الرد
#6
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;
بالتوفيق
الرد
#7
غيرت في الكود لكن النتيجة مازالت خاطئة
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; 
الرد
#8
أخي تحقق من قيمة 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;
جرب بالتوفيق
الرد
#9
السلام عليكم حاول كالتالي و ردلنا الخبر
PHP كود :
ADOTable3.First;
while 
not ADOTable3.Eof do
begin
{ ضع الكود الخاص بك هنا لا تستدعي الحقل التالي نكست
 قبل ان تتم العمليات على الحقل الحالي
}

ADOTable3.Next;
end; 
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
الرد
#10
السلام عليكم و رحمة الله تعالى و بركاته
هذا هو المثال أتمنى ان يكون هذا ما تبحث عنه
بالتوفيق


الملفات المرفقة
.rar   bit.rar (الحجم : 11.25 ك ب / التحميلات : 64)
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم