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.
Editmask (###.##) Stack Overflow Hatası
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Editmask (###.##) Stack Overflow Hatası
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.
Re: Editmask (###.##) Stack Overflow Hatası
Ö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.
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.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Editmask (###.##) Stack Overflow Hatası
'###.##' yerine '###,##' virgül koyup deneyin
Mücadele güzelleştirir!
Re: Editmask (###.##) Stack Overflow Hatası
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.
Re: Editmask (###.##) Stack Overflow Hatası
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.
Re: Editmask (###.##) Stack Overflow Hatası
Problemi şu şekilde çözdüm.
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.
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.###';
İşlemden sonra ise tekrar displayformat verip isteğim formatta gösteriyorum.
Sorun çözüldü ama niye hata verdiğini hala anlamış değilim.