kodun dan hiç birşey anlaşılmıyor. diğer cevap veren arkadaşlarda zaten hep varsayım üzerine cevap yazmışlar bende sana yöntem tavsiye edicek.
Öncelikle
çok acil kelimelerini kullanma
Variant tip, tipi belli olmıyan değişkenler için kullanılır, yani atayacağın değer stringde olabilir integer da bunu bilmiyorsan ve kod yazıp if lerle ve bir sürü değişken yerine Tek bir isimli değişkende bunu yapabilmek için. Ama delphi bunu arka planda sen kullanmaya her kalktığında bunun tipini bilmek zorunda zararı şu, Marcu cantu kitabında geçiyordu, işlemi 12 kez yavaşlatıyor. diğer taraftanda eğer null olursada hata alırsın. Tipini biliyorsun o yüzden variant değil real double extended bunlardan birini kullan
Kod: Tümünü seç
if Para1.Text <> '' then...
//yerine
if Trim(Para1.Text) <> '' then
kullan nedeni space yani #32 leri de bertaraf etmiş olursun
Kod: Tümünü seç
if DBGrid1.Columns.Grid.Fields[4].AsString = DBEdit5.Field.AsString then
Grid.Fields[4] ya bu değişirse ? yani kolonların yerleri değişirse ne olucak ? senin program çatladı
DBEdit5.Field.AsString bu arkadaş kim ???
DBgrid olsun
DBedit olsun bu değerlere Table yada Query üzerinde erişin. "Table1.FieldByName('HEDEHODO').
asInteger"
hem kim kimdir anlaşılır hemde hata riskini azaltırsın
Kod: Tümünü seç
//a := StrToFloat(DBEdit2.Text);
A := Table1.FieldByName('HEDEHODO').[b]asFloat[/b];
b := StrToFloat(DBEdit3.Text);
try
c := (b / a);
except
C:= 0.0;
showmessage('sıfıra bölüm hatası')
end;
reserved word kullanmayın demiştim zaten "Exit"
Kod: Tümünü seç
if Exit = IDYES then
begin
DATA1.STOK.Edit; // Bu data1 kimdir ??? direk edirt denmiş ? cursor un position ı doğru yerdemi ki ? yani doğru kayıttamı ? daha öncede yazmıştım eğer kayıt yoksa Edit, Insert ü tetikler
DATA1.STOKFIYATI.AsFloat := (DBEdit1.Field.AsFloat + Para1.TextAsFloat);
DATA1.STOK.Post;
DATA1.STOK.Refresh;
IBTable1.Database.ApplyUpdates([IBTable1]);// demek ki cachedupdates i kullanmışsın
IBTable1.Refresh;
end else
begin
IBTable1.Cancel;// cachedupdates i kullanmışsan cancelupdates demen gerek
IBTable1.Refresh;
DATA1.STOK.Cancel;
DATA1.STOK.Refresh;
end;
IBX kullanmışsın ama bu gönderdiğin kodlarda transaction la ilgili hiç bi şey yok
ayrıca hata yakalamanın en güzel yolu berakpoint koyup stepbystep çalıştırmak, nerde hata veriyor o anda hangi değişkende ne değer var hepsini adım adım inceleyebilirsin
kolay gele