Koristeći ClientDataSet, DataSource i DBGrid za prikaz podataka,
imam sledeći problem: ako se za polje tipa TFMTBCDField u ClientDataSetu
(koje se automatski dobije kao takvo učitavajući podatke iz baze gdje je
definisano kao NUMERIC(9,4) koristeći SQLQuery komponentu i 'SELECT * FROM ...')
postavi DisplayFormat npr. '#,##0.00' onda dobijeni prikaz u gridu
zavisi od konkretnog podatka:
0,25 izgleda kao ,25
20,00 izgleda kao 20
15,55 izgleda kao 15,55
23,45 izgleda kao 23,45
3,90 izgleda kao 3,90
4,00 izgleda kao 4
Ovo je u Delphiju 2005, a u Delphiju7 je malo bolje, dodaje nulu ispred zareza.
Znači, korektno radi prikaz samo ako postoji i cijeli i decimalni dio.
I ovo je uslovno, ako se prikazuje na drugi broj decimala onda je opet drugačije
(npr. za '#,##0.0' 3,95 prikaže kao 4 a kad se unese 4 okruglo
onda ga prikaže kao 4,0)...
Goglajući našao sam da je najvjerovatnije problem samo sa TFMTBCDField, dok se kod
tipa TFloatField ovo ne pojavljuje. Izgleda da ne zavisi ni od SQL servera,
ja koristim Firebird, a drugi su isti problem imali npr sa PostgreSQL, Oracle...
Čudno je što se godinama vuče taj problem u Delphiju???
Da..., koristim XP i probao sam mijenjati postavke za regionalna podešavanja,
regiju, tastaturu, DecimalSeparator, Customize, ali u principu je isto.
Kako vi to rješavate?
[Ovu poruku je menjao delalt dana 21.12.2005. u 22:52 GMT+1]