Kod: Tümünü seç
ID
C_ID
ADI,
FIYATI
MIKTARI
TOPLAM (COMPUTED BY ALAN)

Kod: Tümünü seç
while not Sorgu.Eof do
begin
if Odenen < 0 then
begin
MessageBox(0, 'Ödeyecek para kalmadığı için döngüden çıkıldı...', 'Dikkat', MB_ICONWARNING or MB_OK);
Break;
end else
begin
//İlk Kayit İçin Değerler Alınıyor
Miktar := KAYDET.FieldByName('MIKTAR').AsCurrency;
Fiyat := KAYDET.FieldByName('FIYATI').AsCurrency;
Toplam := KAYDET.FieldByName('TOPLAM').AsCurrency;
Odenen := edt_odeme.Value;
ToplamLitre := (Odenen / Fiyat);
KalanLitre := (KalanLitre - Miktar); // Ödeyeceğim Değer
KalanPara := (KalanLitre * Fiyat); // Kalan Para
//----------------------------------------------------------------------
Guncelle := TIBQuery.Create(Self);
Guncelle.Database := Data1.IBData;
Guncelle.SQL.Add('UPDATE CARI_BORC_TOPLAM SET');
Guncelle.SQL.Add('MIKTAR = :MIKTAR');
Guncelle.SQL.Add('WHERE ID= :ID');
Guncelle.ParamByName('MIKTAR').AsFloat := Miktar - (ToplamLitre - KalanLitre);
Guncelle.ParamByName('ID').AsInteger := Sorgu.FieldByName('ID').AsInteger;
Guncelle.ExecSQL;
Guncelle.Transaction.CommitRetaining;
edt_odeme.Value := KalanPara;
Odenen := KalanPara; // Kalan Paranın Ödenen Değişkenine Aktarımı
Sorgu.Next; // Sonraki Kayda Geç ve Kayıt Bilgilerini Tekrar Al
//-------------------------------------------------
end;
end;
end;
Ödeme Yapıldıktan sonraki durum ise böyle:

Bu kadar basit bir hatayı göremediğime inanamıyorum artık incelememeye karar verdim çünkü son 2 gündür bunun üstünde gidip gidip geliyorum.
Lütfen döngüyü inceleyin ben nerde hata yapıyorum...
Bu listeye göre benim ödemem gereken toplam para 900 ytl ama ben 650 ödüyorum 500 YTL olan kayıt sıfırlanacak geriye kalan 150 YTL 300 YTL olan kayıttan düşülecek hepsi bu kendimden utanıyorum...