Editmask (###.##) Stack Overflow Hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
habikus
Üye
Mesajlar: 69
Kayıt: 14 Eyl 2011 04:23

Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen habikus »

Firedac datasetlerini kullanıyorum ve datasetin fieldinda editmask olarak(###.##) ayarlıyorum. Fatura satırlarında matematiksel işlem yaptırırken virgülden sonra iki hane olması gereken yere yanlışlıkla virgülden sonra 3 hane veya daha fazla girince Stack Overflow hatası alıyorum. İstiyorum ki virgülden sonra iki haneden fazlasına izin vermesin veya girilse bile hata vermesin.

İyi çalışmalar.
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen tayipk »

bence bu işlemi editmask yerine dbspinedit kullanırsan işini çözebilirsin diye düşünüyorum. birde almış olduğun hata bence matematiksel işlemlerde program sonsuz döngüye giriyor bence editmask yerine hatayı matemtiksel işlemlerde ara derim.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
habikus
Üye
Mesajlar: 69
Kayıt: 14 Eyl 2011 04:23

Re: Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen habikus »

Öncelikle ilginizden dolayı teşekkür ederim. Mevzuyu tam anlatmaya çalışayım.
FDQuery1.FieldByName('tutar').AsFloat:=FDQuery1.FieldByName('miktar').AsFloat * FDQuery1.FieldByName('fiyat').AsFloat;

Bu formül normalde çalışıyor. Ama ne zaman ki bu fieldların DisplayFormat özelliğini '###.##' simgelerden anlaşılacaği gibi virgülden sonra 2 rakamla sınırlandırıyorum, bu durumda bu alanlara virgülden sonra 3 rakamlı bir sayı girince Stack Overflow hatası veriyor. Virgülden sonra 2 veya daha az rakam girince sorun olmuyor.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen greenegitim »

'###.##' yerine '###,##' virgül koyup deneyin
Mücadele güzelleştirir!
habikus
Üye
Mesajlar: 69
Kayıt: 14 Eyl 2011 04:23

Re: Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen habikus »

Denedim mesele virgül değil. Yani DisplayFormatta maske olarak virgülden sonra kaç hane belirlemiş isem o okadar girebiliyorum daha fazla giremiyorum, eğer ###.### yaparsam üçe müsaade ediyor fakat 4-5 li küsürat girince hata veriyor(stack ovferflow). Hem firedac hemde fibplus datasetleri ile denedim aynı hata oluyor.
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen tayipk »

peki dönen sonucu ROUND ederek virgülden sonraki rakam sayısını belirleyip ondan sonra maskedit yapmayı denediniz mi?
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
habikus
Üye
Mesajlar: 69
Kayıt: 14 Eyl 2011 04:23

Re: Editmask (###.##) Stack Overflow Hatası

Mesaj gönderen habikus »

Problemi şu şekilde çözdüm.

Kod: Tümünü seç

   
    FDQuery1tutar.DisplayFormat:='';
    FDQuery1fiyat.DisplayFormat:='';
    FDQuery1miktar.DisplayFormat:='';

FDQuery1tutar.Value:=FDQuery1fiyat.Value*FDQuery1miktar.Value;

    FDQuery1tutar.DisplayFormat:='###,###,##0.##';
    FDQuery1fiyat.DisplayFormat:='###,###,##0.###';
    FDQuery1miktar.DisplayFormat:='###,###,##0.###';
Yani matematiksel işlemden önce formatı kaldırdım bu durumda istediğim uzunlukta ve küsüratta sayı girip matematiksel işlem yaptırabiliyorum.
İşlemden sonra ise tekrar displayformat verip isteğim formatta gösteriyorum.
Sorun çözüldü ama niye hata verdiğini hala anlamış değilim.
Cevapla