s.a.
genel olarak bir iki tavsiye vermek istiyorum....
- tablolaraa isimler ver. adotable3,adotable4 bizim için hiçbir şey ifade etmiyor. hangisi stok hangisi master vs. tablolara isimler verirsen daha anlaşılır olur.
- birde döngü meselesi var... eğer bir tabloyu baştan aşağı tarıyacaksan while döngüsü for döngüsüne göre daha uygun bir döngü olur.
-döngü içinde hem tabloyu delete etmişsin hemde next demişsin. bu yanlış. delete komutu zaten bir sonraki kaydı seçiyor. o yüzden tekrar next demenize gerek yok.
-locate yaptığınız zaman kaydı bulamazsa ne yapacak?
bu bilgiler ışığında kodları şöyle bi düzenliyelim.
Kod: Tümünü seç
if application.MessageBox('Bu fatura ve faturaya ait stoklar iptal edilecek emin misiniz?','Uyarı!',mb_yesno+48)=mryes then
begin
adotable3.First;
adotable4.First;
while not adotable3.eof do
//for i:=0 to adotable3.RecordCount-1 do
begin
if adotable4.Locate('STOK_KODU',adotable3['STOK_KODU'],[]) then
begin
adotable4.Edit;
adotable4.FieldByName('STOK_MEVCUT_ADET').AsInteger:= adotable4.FieldByName('STOK_MEVCUT_ADET').AsInteger+strtoint(adotable3['CIKIS_ADET']);
adotable4.Post;
end;//locate
adotable3.Delete;
end;//while
end;
böyle bişeyler olması lazım.
kolay gelsin.