Avatar billede Slettet bruger
03. oktober 2006 - 10:11 Der er 9 kommentarer og
1 løsning

Komma-værdier til small money felt driller

Hejsa.

Jeg har en lille C# applikation, der styrer nogle ordrer.
Når en ordre oprettes i sql server databasen med en komma-værdi i ordrepris, bliver værdien af feltet automatisk ganget med 10.

Efter lang tids test fandt jeg ud af dette, men er ikke helt sikker på om det er datatypen, der er valgt forkert.

Hvis ordreprisen er 142,5 bliver den altså 1425 kroner og det er jo ikke noget mange kunder vil finde vandvittigt morsomt på deres faktura :-)

Ellers virker applikationen fint.
Skal lige sige, at alle værdier der genereres i aplikationen undervejs er double og disse skrives altså så til felter af typen small money. Dette virker som skrevet med hele tal, men ikke med komma-tal.

Skal jeg vælge at andet format til felterne i tabellerne, eller skal det være et andet format i selve applikationen?
Avatar billede torotune Nybegynder
03. oktober 2006 - 14:37 #1
Hej, det drillede også mig på et tidspunkt. Prøv at lave datatypen om til

Decimal(9,2)
Avatar billede Slettet bruger
03. oktober 2006 - 14:57 #2
Hejsa.
Jeg ændrede datatypen til Decimal(8,2) (tror jeg det var), mendet virkede ikke.
Hvad er det konkret Decimal(9,2) står for?
Avatar billede torotune Nybegynder
03. oktober 2006 - 19:00 #3
Hej. Det er et decimaltal med op til 9 tal foran kommaet og 2 efter kommaet. Men hvordan ser det ud med datatypen på den ordrepris du sætter ind i selve din applikation? Den skal også gerne være af typen Decimal.
Avatar billede Slettet bruger
03. oktober 2006 - 20:33 #4
Datatypen i selve applikationen er double. Jeg startede faktisk med decimal, men rendte ind i nogle problemer når jeg skulle lave beregninger og ændrede den så til double.
Avatar billede torotune Nybegynder
03. oktober 2006 - 21:10 #5
Okay, prøv at ændre det. Det skulle gerne virke, også med beregninger. (Nu ved jeg self ikke hvilke beregninger du foretager). tallet skulle gerne blive vist som eks. xxx,xx
og uden at skubbe nuller ind bagved kommaet.

Se evt. Arnes forklaring her, på hvorfor det kan være uhensigtsmæssigt at anvende bl.a. DOUBLE og FLOAT i valuta-sammenhænge.

http://www.eksperten.dk/spm/728119
Avatar billede Slettet bruger
03. oktober 2006 - 21:50 #6
Hejsa.
Jeg har vidst selv fået løst problemet.

Hvis man lavet er cast virker det.

CAST('" + order.OrderPrice.ToString().Replace(",", ".") + "' AS SMALLMONEY)
Avatar billede torotune Nybegynder
03. oktober 2006 - 22:41 #7
Okay, det kunne være den ville have . som seperator i stedet for ,

?
Avatar billede Slettet bruger
03. oktober 2006 - 22:49 #8
Ja, det virker i hvert fald. Jeg får ikke den samme fejl mere med komme-værdier. Måske  lidt omsonst at skrive alt den kode, men hovedsagen lige nu er at det kører.
Avatar billede torotune Nybegynder
03. oktober 2006 - 23:41 #9
Fino :-)
Avatar billede arne_v Ekspert
04. oktober 2006 - 02:11 #10
parameters !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester