Kodun son hali bu demişsin sadece kodun bir kısmını silmişsin. Okadar bunları kullan dedikten sonra hiç dikkate alınmayınca insanın ağırına gidiyor. Anlat marko paşaya hesabı yani
Kod: Tümünü seç
..if DATA1.STOKCINSI.AsString=DATA1.SIPARISCINSI.AsString then...
değil
DATA1.STOK.FieldByName('CINSI').AsString=DATA1..FieldByName('SIPARISCINSI').AsString
şeklinde kullanın. Çok fazla ve hızlı işlmlerde "STOKCINSI" değişkenine değer atanmayabiliyor. Aslında Atanmıyor denemez ama işlemlerin işlenmesi sırasında senkron bozukluğu olabiliyor. Sonuçta mikisoft bu.Edinilmiş tecrübedir bu.
Kod: Tümünü seç
while not IBTable1.Eof do
begin
...........................
IBTable1.Next;
IBTable1.Database.ApplyUpdates( [IBTable1] );//Sipariş Tablosu
IBTable1.Refresh;
cahcedupdate kullanıyorsan applyupdates enson yapılması gereken işlem.yani bunu döngünün dışına koyman gerek.ve döngüyü try except içine alman gerek eğer hata olursa cancelupdate edebilmelisin.
Ayrıca IBTable1.Refresh; cursor ü herzaman başa döndürüyor olması lazım, bu yüzdende hiç bi zaman EOF (End Of File) olmaz ve kısır döngüye girer.
burasıda bana saçma geliyor
Kod: Tümünü seç
if DATA1.STOKCINSI.AsString=DATA1.SIPARISCINSI.AsString then
while not IBTable1.Eof do döngüsü içinde bunun bir anlamı yokki her seferinde IBTable1 döngü gereksiz yere çalışacak.
Daha önceki mesajımda dediğim gibi Transactionlar nerde ?
Yazım hatanların düzeliyor, ama mantığında gelişmeye ihtiyacın var. Benim hocamın söylediği şuydu.
Programı yazdıktan sonra ilk önce siz çalıştırın derdi, yani bilgisayar yerine siz satır satır çalıştırın kodu, değişkeleri bir kağıda yazarak tek tek çalıştırın. Dümdüz kod yazarsanız ve Run dediğinizde bunun çalışıyor olması programın doğru çalıştığı anlamına gelmez. Yazdığınız program doğru ve hatasız çalışmalı, basit bir hesaplama hatası müşterinize milyarlarca liraya maal olabilir
kolay gele