Konu: Sahanın decimal boyu.
Numerik bir field'in (view veya cursor) decimal boyunu nasıl buluruz?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Veritabanı, Tablo, View, Index ve SQL Syntax » Sahanın decimal boyu.
Numerik bir field'in (view veya cursor) decimal boyunu nasıl buluruz?
İstediğin sonucu veren bir fonksiyon olup olmadığını bilmiyorum ama aşağıdaki komutlarla decimal hane sayısını hesaplayabilmek mümkün.
nSayi = 0.000 && curTablo.miktar
? len(strextract(transform(nSayi-icase(nSayi=0,1,0)), '.'))
veya
? len(transform((mod(nSayi-icase(nSayi=0,1,0), 1))))-2
Fonksiyon set decimal to dan olumsuz etkilenmiyor. Ama yinede metinin dediği gibi istenmeyen sonuçlar çıkabilir.
Haklısın bunu direkt veren fonksiyon yoksa bunlarla olabilir.
Teşekkürler.
o şekilde field bilgisini alamazsın. bunu kullan:
?ftype("borc",.t.)
FUNCTION ftype
LPARAMETERS xfname,xfull_type
xfname=UPPER(PADR(m.xfname,10,"*"))
LOCAL ARRAY aDummy[1]
LOCAL undefined,xret,onerr,xret3,xret4,xftop,i
onerr=ON("error")
ON ERROR undefined=.t.
xftop=AFIELDS(aDummy)
FOR m.i=1 TO m.xftop
adummy(m.i,1)=PADR(adummy(m.i,1),10,"*")
NEXT
xret=aDummy[ASCAN(aDummy,m.xfname,1,m.xftop,1,9),2]
IF xfull_type
xret3=TRANSFORM(aDummy[ASCAN(aDummy,m.xfname,1,m.xftop,1,9),3])+","
xret4=TRANSFORM(aDummy[ASCAN(aDummy,m.xfname,1,m.xftop,1,9),4])
ENDIF
ON ERROR &onerr
IF m.undefined
RETURN "U"
ELSE
IF xfull_type AND !INLIST(m.xret,"D","T","I")
IF m.xret="B"
RETURN m.xret+"("+xret4+")"
ELSE
RETURN m.xret+"("+xret3+xret4+")"
ENDIF
ELSE
RETURN m.xret
ENDIF
ENDIF
En son bununla çözdüm. Herkese teşekkürler
FUNCTION deciboyu (param1)
AFIELDS(ladecibul)
lnyeri=ASCAN(ladecibul,UPPER(param1))
IF lnyeri>0
lnyeri=INT(lnyeri/18)+1
RETURN ladecibul(lnyeri,4)
ELSE
RETURN -1
ENDIF
Cemal,
Kod versiyon bagimli. VFP7'de calismaz, gelecekteki bir versiyonda afields() donen kolon sayisi degisirse gene calismaz. Soyle daha iyi gibi:
FUNCTION deciboyu(param1)
LOCAL ARRAY laDeciBul[1]
AFIELDS(ladecibul)
lnyeri=ASCAN(ladecibul,m.param1,1,-1,1,1+2+4+8)
IF m.lnyeri>0
return laDeciBul[m.lnYeri,4]
ELSE
RETURN -1
ENDIF
fox4um » Veritabanı, Tablo, View, Index ve SQL Syntax » Sahanın decimal boyu.