Taksitlendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Bulutiib
Üye
Mesajlar: 41
Kayıt: 13 Ara 2013 12:45

Taksitlendirme

Mesaj gönderen Bulutiib »

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;
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Taksitlendirme

Mesaj gönderen Lord_Ares »

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.
Bulutiib
Üye
Mesajlar: 41
Kayıt: 13 Ara 2013 12:45

Re: Taksitlendirme

Mesaj gönderen Bulutiib »

Cevaplarınız İçin Çok Teşekkür ederim.
Dedikleriniz Yaptım Ama Yine Aynı Hatayı Veriyor.
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: Taksitlendirme

Mesaj gönderen fesiharslan »

Merhaba;
Veri tabanındaki TaksitTaksit1 tablo alanının flot tipide olması gerekiyor. Bu alanını tahminimce integer olarak tanımlamışsınız.
Bulutiib
Üye
Mesajlar: 41
Kayıt: 13 Ara 2013 12:45

Re: Taksitlendirme

Mesaj gönderen Bulutiib »

Merhabalar Hocam
Alan Tabloda float olarak tanımlı. Ama yine hatayı veriyor gözden kaçırdığım bir nokta var herhalde.
Kullanıcı avatarı
mustafasoy
Üye
Mesajlar: 154
Kayıt: 02 Ağu 2013 05:00
Konum: istanbul
İletişim:

Re: Taksitlendirme

Mesaj gönderen mustafasoy »

bilgisayarınızdaki tarih,para birimi,basamak vs. ayarlarınızı kontrol ettiniz mi ?
http://www.mustafasoy.com.tr
Nasıl ki Soru sorarak öğrendiyseniz , öğrendiklerinizi cevap vererek öğretiniz.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Taksitlendirme

Mesaj gönderen Lord_Ares »

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(inttostr(strtoint(edit2.text) div strtoint(edit1.text)));
burada tip dönüşümde hata var inttostr kaldır.
birim_taksit:= strtofloat(edit2.text) div strtofloat(edit1.text);
2)
Dm.DsTaksitTAKSIT1.Value:=strtoint(edit2.text)-toplam
bu satırdaki gibi kullandıysan hata verir. strtoint olanları strtofloat ile değiştir.
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.
Bulutiib
Üye
Mesajlar: 41
Kayıt: 13 Ara 2013 12:45

Re: Taksitlendirme

Mesaj gönderen Bulutiib »

İlginize Çok teşekkür ederim arkadaşlar Sorun çözüldü.
Kullanıcı avatarı
bulutsuzluk_35
Üye
Mesajlar: 124
Kayıt: 06 Eki 2007 04:14
Konum: İzmir-Ankara-İstanbul-Antalya
İletişim:

Re: Taksitlendirme

Mesaj gönderen bulutsuzluk_35 »

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;
Bulutiib
Üye
Mesajlar: 41
Kayıt: 13 Ara 2013 12:45

Re: Taksitlendirme

Mesaj gönderen Bulutiib »

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.
Cevapla