QReport'ta yazdırma sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
esraakarslan
Üye
Mesajlar: 28
Kayıt: 30 Haz 2004 02:24

QReport'ta yazdırma sorunu

Mesaj gönderen esraakarslan »

Arkadaşlar yazdırma butonunun altına bu komutu yazdığımda verdiği hata da "is not a valid floating point value"

toplam:=0;
toplam := toplam+StrToFloat (isubildirgefrm.subilgitableTahakkuk.AsString);
raportekbildirgefrm.QRAngledLabel37.Caption := (FormatCurr('#,### TL',toplam));

Tahakkuk alanın tipi Float
nerede yanlış va bana yardımcı olabilirseniz çok memnun olurum.
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Debug yaparak

Kod: Tümünü seç

isubildirgefrm.subilgitableTahakkuk.AsString
Değerini bir kontrol et.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.

Kod: Tümünü seç

toplam:=0; 
toplam := toplam+StrToFloat (isubildirgefrm.subilgitableTahakkuk.AsString); 
raportekbildirgefrm.QRAngledLabel37.Caption := (FormatCurr('#,### TL',toplam)); 
kodunu

Kod: Tümünü seç

toplam:=0; 
if isubildirgefrm.subilgitableTahakkuk.AsString<>'' then
toplam := toplam+StrToFloat (isubildirgefrm.subilgitableTahakkuk.AsString); 
raportekbildirgefrm.QRAngledLabel37.Caption := (FormatCurr('#,### TL',toplam)); 
olarak değiştir.
sanırım tablodaki değer nul olduğu için böle bi hata veriyor.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
esraakarslan
Üye
Mesajlar: 28
Kayıt: 30 Haz 2004 02:24

Mesaj gönderen esraakarslan »

Tamam bu şekilde çözüldü ama formda eğer Tahakkuk alan boş ise yine aynı hatayı veriyor ne denediysem bir türlü başaramadım. Bunu nasıl çözebilirim arkadaşlar.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Sorun belli
hata verdiği satırı bulup hatadan vermeden önce kontrol işlemi yaptıracaksın veya tabloda alana varsayılan bir değer (mesala 0-sıfır-) vereceksin.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
esraakarslan
Üye
Mesajlar: 28
Kayıt: 30 Haz 2004 02:24

Mesaj gönderen esraakarslan »

Değer Float olduğu için 0 kabul etmiyor. Ama bu kontrol ettirme olayını anlayamadım. Eğer bana örnek ile açıklayabilirseniz çok memnun olurum.
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Aşağıdaki kod işini görmesi lazım.. eğer değer boş ise sonuç 0 TL dönecektir.

Kod: Tümünü seç

raportekbildirgefrm.QRAngledLabel37.Caption := FloatToStrF(isubildirgefrm.subilgitableTahakkuk.ASFloat,ffCurrency,18,0);
Burada dikkat edilmesi gereken işletim isteminin default para birimini kullanmasıdır. Eğer para birimini farklı yapmak istiyorsanız

Kod: Tümünü seç

raportekbildirgefrm.QRAngledLabel37.Caption := FloatToStrF(isubildirgefrm.subilgitableTahakkuk.ASFloat,ffNumber,18,0)+' $';
gibi bir kod kullanabilirsiniz..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Flaot değeri 0 (sıfır) ı kabul etmemesi gibi bişey olamaz. Ama 0 string değilse tabi..

Aslangeri'nin kodunuda açıklama yaparsak.

Kod: Tümünü seç

toplam:=0; // toplam burada 0 lanıyor program bu satıra her geldiğinde

if isubildirgefrm.subilgitableTahakkuk.AsString<>'' then // eğer sen tahakuk field'ın null değil ise (tabi burada boşluk falan ise hata alabilirsin) 
toplama atıyorsun, bu değeri string aldığın için StrtoFloat ile  çeviriyorsun

toplam := toplam+StrToFloat(isubildirgefrm.subilgitableTahakkuk.AsString); // normalde stringten dönşen değer toplama aktarılıyor. Toplam hep sıfır olduğu için direk toplam:=StrToFloat(isubildirgefrm.subilgitableTahakkuk.AsString); diyede atabilirsin.

raportekbildirgefrm.QRAngledLabel37.Caption := (FormatCurr('#,### TL',toplam)); // bu kısımda da toplamın değerini yazdırıyorsun eğer fieldin null ise toplamın zaten 0 olduğu için 0 yazarsın

birde toplam değerini eğer tanımlamadıysan real falan tanımla.

birde try except e alıp dene Tabi burada exeni direk çalıştırman lazım Delphi dışından

Kod: Tümünü seç

toplam:=0;
if isubildirgefrm.subilgitableTahakkuk.AsString<>'' then begin
   try
       toplam :=toplam+StrToFloat(isubildirgefrm.subilgitableTahakkuk.AsString);
  except
     toplam:=0;
  end;
end;
raportekbildirgefrm.QRAngledLabel37.Caption := (FormatCurr('#,### TL',toplam));
Birde bu şekilde dene..
olmaz sa tekrar yazarsın.
Cevapla