[ Brkic @ 31.10.2007. 09:31 ] @
u tabeli imam kolonu PROCENAT tipa decimal,probao sam da bude i float i double precision,real ali nista ne pomaze.

kada izvrsim upis u tabelu sa inser into ... u procenat se upise broj koji treba ali bez , -znaci umesto 1,23 on upise 123

kada rucno u procenat upisem 1,23 on ga takvog i snimi i sve je OK
ili ako upisem preko q.fieldbyname('procenat').asstring :=pom; gde je pom izracunata vrednost procenta isto bude OK.

Kako da resim problem sa insert into ???
jel neko imao takvih problema ??
[ Miloš Baić @ 31.10.2007. 10:04 ] @
Citat:

Da li si atribut deklarisao sa:
1) decimal
2) decimal(16,2)?

Umesto toga, hteo sam napisati, da li si atribut probao deklarisati:
1)DOUBLE PRECISION
2)NUMERIC(n,m)

Izvinjavam se.

Ako imaš polje u tabeli deklarisano kao NUMERIC(n,m), a uneseš 123, Firebird će taj broj upisati kao 123,m, a m predstavlja broj iza decimalnog zareza. Ako uneseš 1,23, te m ima vrednost, npr., 4, onda će Firebird tu vrednost evidentirati kao 1,2300.

[Ovu poruku je menjao Miloš Baić dana 31.10.2007. u 12:00 GMT+1]
[ savkic @ 31.10.2007. 10:11 ] @
> tabeli imam kolonu PROCENAT tipa decimal,probao sam da bude i float i double precision,real ali nista ne pomaze.

NUMERIC se uglavnom preferira u odnosu na DECIMAL.

> kada izvrsim upis u tabelu sa inser into ... u procenat se upise broj koji treba ali bez , -znaci umesto 1,23 on upise 123
> kada rucno u procenat upisem 1,23 on ga takvog i snimi i sve je OK

Pokaži tačnu definiciju tabele i kompletnu insert naredbu.
[ dogriz @ 31.10.2007. 10:17 ] @
Hajde da se nadovežem na ovu temu - da li je neko primetio da DoublePrecision zna da pravi grešku?
Npr. upišem broj 3 u bazu, a on bude snimljen kao 2,9999999 i sl.
To mi se dešavalo sa FB1.5 i nekim bazama gde mi je bilo potrebno upisivanje velikog broj decimala... U FB2.0 nisam ni probao kako ovo radi, jer sam morao problem da rešim na drugi način.
[ Brkic @ 31.10.2007. 11:12 ] @
@Miloš Baić probao sam i decimal(16,2) ali nista

CREATE TABLE promene(id int NOT NULL,ime Char(35),br1 int,br2 int,procenat numeric) CONSTRAINT PK_promene PRIMARY KEY (id))
iz tabele izcitava podatke i upisuje u promene
pom8:=floattostr((br2*100)/br1)-100); onda svojom funkciom broj smanjim na 2 decimale
insert into promene (id,ime,br1,br2,,procenat) values('+QuotedStr(pom)+','+QuotedStr(q3.fieldbyname('ime').asstring)+','+QuotedStr(q3.fieldbyname('br1').asstring)+',
'+QuotedStr(q3.fieldbyname('br2').asstring)+','+QuotedStr(pom8)+')');

sve se dobro upise sem procenta bez " , "
kada posebno proverim pom8 i QuotedStr(pom8) daju rezultat 1,23 ali upise u tabelu 123

kada PROCENAT stavim da bude char onda sve lepo radi bez greske,ali tada ne mogu da vrsim sortiranje PROCENTA po ascendind i descending
[ dogriz @ 31.10.2007. 12:36 ] @
Mislim da ti je problem u onom ",". Pokušaj da umesto QuotedStr(pom8) upišeš QuotedStr('1.23') za probu. Ako prođe, problem je u DecimalSeparator-u, kog ćeš morati da prebaciš iz "," u "."
[ savkic @ 31.10.2007. 13:01 ] @
> kada posebno proverim pom8 i QuotedStr(pom8) daju rezultat 1,23 ali upise u tabelu 123
> kada PROCENAT stavim da bude char onda sve lepo radi bez greske,ali tada ne mogu da vrsim sortiranje PROCENTA po ascendind i descending

Ti si polje PROCENAT zapravo deklarisao kao integer koji ne dozvoljava realne brojeve. Ako hoćeš realne onda ga moraš deklarisati sa odgovarajućim precisionom i scalom (npr NUMERIC(15,3)), pogledaj uputstvo za detalje i objašnjenja.
[ savkic @ 31.10.2007. 13:10 ] @
> Hajde da se nadovežem na ovu temu - da li je neko primetio da DoublePrecision zna da pravi grešku?
> Npr. upišem broj 3 u bazu, a on bude snimljen kao 2,9999999 i sl.
> To mi se dešavalo sa FB1.5 i nekim bazama gde mi je bilo potrebno upisivanje velikog broj decimala...

Nije to vezano za FB, već za način kako funkcioniše sistem za rad sa pokretnim zarezom, nemoguće je precizno predstaviti sve brojeve pa se koristi aproksimacija, ista je stvar i u Delphiu. Npr ako deklarišeš promenljivu tipa double i upišeš 3 on se zapravo čuva kao 2,999 (pa veliki broj devetki). Kada se takva vrednost preuzme iz baze u klijent programu trebalo bi da se dobije 3. Ako si ti direktno to polje iz baze castovao u char onda se doista dobija takav rezultat, ali ako prethodno castuješ u numeric pa u char onda bi trebalo da bude dobro.
[ Brkic @ 31.10.2007. 13:35 ] @
Resen proble,problem je u . i ,
ulaznim decimalnim brojevima se , mora prebaciti u . i onda u tabeli pise sa ,
ako je ulazni dec broj sa , onda u tabeli nema ni . ni ,

Mozda nekom zatreba.
hvala svima na pomoci.
[ schild @ 01.11.2007. 08:40 ] @
Citat:
Brkic: Resen proble,problem je u . i ,
ulaznim decimalnim brojevima se , mora prebaciti u . i onda u tabeli pise sa ,
ako je ulazni dec broj sa , onda u tabeli nema ni . ni ,

Da, to sam i ja primetio.
Recimo: CAST('110,1' as DOUBLE PRECISION) ce vratiti 1101 !?

Da li je to bug, ili ima neke logike u tome?
[ savkic @ 01.11.2007. 08:51 ] @
> Recimo: CAST('110,1' as DOUBLE PRECISION) ce vratiti 1101 !?
> Da li je to bug, ili ima neke logike u tome?

Nije bug, ',' je separator hiljada a '.' decimalni separator.
[ schild @ 01.11.2007. 09:55 ] @
Citat:
savkic: > Recimo: CAST('110,1' as DOUBLE PRECISION) ce vratiti 1101 !?
> Da li je to bug, ili ima neke logike u tome?

Nije bug, ',' je separator hiljada a '.' decimalni separator.
Pa jeste, ali onda bi se moglo očekivati i da vrati 110100?
Mislim, tako je kako je, bitno je da znamo kako funkcioniše.
[ savkic @ 01.11.2007. 20:03 ] @
> Pa jeste, ali onda bi se moglo očekivati i da vrati 110100?

Otkud ti to, vrlo je jednostavno, prilikom konverzije izbaci sve separatore hiljada na koje naiđe i šta ostane je krajnji broj. Da li je separator ispravno postavljen ili ne se ne gleda.
[ Brkic @ 15.11.2007. 22:21 ] @
kako da definisem promenljivu da bude broj ali da moze da je zapamti kao 10,00 ?? Sve koje sam probao pamte samo 10 dok na svakom fiskalnom racunu ima 10,00

kada u Alatu pogledam zapise budu 10,00 ali ih u tabeli ispisuje samo 10

[Ovu poruku je menjao Brkic dana 16.11.2007. u 00:02 GMT+1]
[ schild @ 16.11.2007. 11:05 ] @
Citat:
Brkic: kako da definisem promenljivu da bude broj ali da moze da je zapamti kao 10,00 ?? Sve koje sam probao pamte samo 10 dok na svakom fiskalnom racunu ima 10,00
kada u Alatu pogledam zapise budu 10,00 ali ih u tabeli ispisuje samo 10
Koji ti je to moćni, o Alat? Kombinerke?
[ savkic @ 16.11.2007. 21:15 ] @
> kako da definisem promenljivu da bude broj ali da moze da je zapamti kao 10,00 ?? Sve koje sam probao pamte samo 10 dok na svakom
> fiskalnom racunu ima 10,00

Tebi treba formatiranja brojeva za prikaz u klijent programu, to nema veze sa bazom. Ako koristiš Delphi onda je to DisplayFormat svojstvo.
[ Brkic @ 17.11.2007. 07:14 ] @
>schild malo ozbijnosti

1. nisu 'Kombinerke' vec 'kombinirke'
2. a ni jedno ni drugo nego 'kombinovana klesta'
cisto da znas da se ne brukas

inace alat je IBOConsole i IB Expert

hvala savkicu na odgovoru,probacu.