Taksitlendirme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Taksitlendirme
Merhaba Arkadaşlar Aşağıdaki Kodda Taksitlendirme Yapabiliyorum Ama Küsüratlı Bir Sayı Girdiğimde "is not a valid integer value" Hatasını Alıyorum.Yardımlarınız İçin Şimdiden Teşekkür Ederim.
procedure TTaksitlendirme.AdvGlassButton1Click(Sender: TObject);
var
b : Integer;
birim_taksit:real;
toplam:real;
taksit_sayi:integer;
tarih:tdate;
begin
toplam:= 0;
birim_taksit:= strtofloat(inttostr(strtoint(edit2.text) div strtoint(edit1.text)));
taksit_sayi:=strtoint(edit1.text);
tarih:=Date;
// strtofloat
for b:= 1 to ( taksit_sayi-1 ) do
begin
Dm.DsTaksit.Insert;
Dm.DsTaksitTARIH.Value:=IncMonth(Datem);
Dm.DsTaksitTAKSITSAYISI.Value:=b;
Dm.DsTaksitTAKSIT1.Value :=birim_taksit;
Dm.DsTaksit.Post;
toplam:= toplam+birim_taksit; /
tarih:= IncMonth(tarih);
end;
Dm.DsTaksit.Insert;
Dm.DsTaksitTARIH.Value:=IncMonth(Datem);
Dm.DsTaksitTAKSITSAYISI.Value:= taksit_sayi ;
Dm.DsTaksitTAKSIT1.Value:=strtoint(edit2.text)-toplam;
// strtoint
Dm.DsTaksit.Post;
Dm.DsTaksit.Refresh;
Dm.DsTaksit.Last;
procedure TTaksitlendirme.AdvGlassButton1Click(Sender: TObject);
var
b : Integer;
birim_taksit:real;
toplam:real;
taksit_sayi:integer;
tarih:tdate;
begin
toplam:= 0;
birim_taksit:= strtofloat(inttostr(strtoint(edit2.text) div strtoint(edit1.text)));
taksit_sayi:=strtoint(edit1.text);
tarih:=Date;
// strtofloat
for b:= 1 to ( taksit_sayi-1 ) do
begin
Dm.DsTaksit.Insert;
Dm.DsTaksitTARIH.Value:=IncMonth(Datem);
Dm.DsTaksitTAKSITSAYISI.Value:=b;
Dm.DsTaksitTAKSIT1.Value :=birim_taksit;
Dm.DsTaksit.Post;
toplam:= toplam+birim_taksit; /
tarih:= IncMonth(tarih);
end;
Dm.DsTaksit.Insert;
Dm.DsTaksitTARIH.Value:=IncMonth(Datem);
Dm.DsTaksitTAKSITSAYISI.Value:= taksit_sayi ;
Dm.DsTaksitTAKSIT1.Value:=strtoint(edit2.text)-toplam;
// strtoint
Dm.DsTaksit.Post;
Dm.DsTaksit.Refresh;
Dm.DsTaksit.Last;
Re: Taksitlendirme
Ramazan arkadaşımızın dediği gibi sorun integer bir alana float değer girmeye çalışmandan kaynaklanıyor. İnteger değişkenler tam sayı değer alabilir (örnek 1 2 3 4 gibi ) küsüratlı bir rakam kullanacaksanız (örneğin 1,5 gibi) değişkeninizin tipi integer değil currency olmalı. Veritabanında küsüratlı değerler kaydedecekseniz alan tipini integer yapmayın aksi halde çok sorun yaşarsınız. Editten bilgiyi alıp kaydederken de ramazan arkadaşımızın gösterdiği şekilde strtofloat diyerek dönüştürmeniz gerekir.
Re: Taksitlendirme
Cevaplarınız İçin Çok Teşekkür ederim.
Dedikleriniz Yaptım Ama Yine Aynı Hatayı Veriyor.
Dedikleriniz Yaptım Ama Yine Aynı Hatayı Veriyor.
- fesiharslan
- Üye
- Mesajlar: 591
- Kayıt: 20 Eki 2006 11:37
- Konum: Erzurum
- İletişim:
Re: Taksitlendirme
Merhaba;
Veri tabanındaki TaksitTaksit1 tablo alanının flot tipide olması gerekiyor. Bu alanını tahminimce integer olarak tanımlamışsınız.
Veri tabanındaki TaksitTaksit1 tablo alanının flot tipide olması gerekiyor. Bu alanını tahminimce integer olarak tanımlamışsınız.
Re: Taksitlendirme
Merhabalar Hocam
Alan Tabloda float olarak tanımlı. Ama yine hatayı veriyor gözden kaçırdığım bir nokta var herhalde.
Alan Tabloda float olarak tanımlı. Ama yine hatayı veriyor gözden kaçırdığım bir nokta var herhalde.
- mustafasoy
- Üye
- Mesajlar: 154
- Kayıt: 02 Ağu 2013 05:00
- Konum: istanbul
- İletişim:
Re: Taksitlendirme
bilgisayarınızdaki tarih,para birimi,basamak vs. ayarlarınızı kontrol ettiniz mi ?
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Re: Taksitlendirme
Aldığın hata rakamsal olan bir alana, rakam olmayan bir değer girmeye çalıştığını söylüyor. Sebebi integer olan bir alana , real bir değer veya text bir değer girmeye çalışıyor olmandan kaynaklı. Bunu göz önünde bulundurarak Veri tabanındaki alanlar ile değişkenlerinin aldığı değerleri kontrol ederek integer bir alana real değer mi girmeye çalışıyorum diye bak. Ya da en kolay yolu rakamsal olan tiplerini değişkenlerde ve veritabanında real yap.
1)
birim_taksit:= strtofloat(edit2.text) div strtofloat(edit1.text);
2)
3) Veri tabanındaki Dm.DsTaksitTAKSIT1.Value alanlarının tipini kontrol et integer tanımlamış olabilirsin. Mesela bu alana integer bir değer gelmiyor. Bu alanı currency bir değer tanımlaman gerekir.
1)
burada tip dönüşümde hata var inttostr kaldır.birim_taksit:= strtofloat(inttostr(strtoint(edit2.text) div strtoint(edit1.text)));
birim_taksit:= strtofloat(edit2.text) div strtofloat(edit1.text);
2)
bu satırdaki gibi kullandıysan hata verir. strtoint olanları strtofloat ile değiştir.Dm.DsTaksitTAKSIT1.Value:=strtoint(edit2.text)-toplam
3) Veri tabanındaki Dm.DsTaksitTAKSIT1.Value alanlarının tipini kontrol et integer tanımlamış olabilirsin. Mesela bu alana integer bir değer gelmiyor. Bu alanı currency bir değer tanımlaman gerekir.
Re: Taksitlendirme
İlginize Çok teşekkür ederim arkadaşlar Sorun çözüldü.
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: Taksitlendirme
sorun çözüldü demek yerine sorunun nasıl çözüldüğünü söylersen başkaları için de yararlı olabilir.
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
Re: Taksitlendirme
Kusura bakmayın arkadaşlar sorun veritabanındaki alanın integer olmasından kaynaklanıyormuş. Veritabanındaki taksit1 alanını real alana çektim sorun halloldu.
İlginiz için çok teşekkür ederim.
İlginiz için çok teşekkür ederim.