Avatar billede timmwillum Nybegynder
27. oktober 2008 - 21:42 Der er 5 kommentarer og
1 løsning

Underlig beregningsfejl ved opdatering af RS

Hej Eksperter

Jeg har en pudseløjerlig problemstilling ... jeg er helt blank, så jeg håber, at nogle af jer har en løsningside. Det her er så mærkeligt, at jeg næsten er villig til at udlove en softice til vinderen.

Jeg har en side, hvor jeg er ved at lægge et flersprogsmodul ind. Det er en shop, hvor beløb så skal ændres til fx EUR ved engelsk. Omregningen sker så ved en simpel valutaomregning, som virker fint alle steder. Men når jeg skal indsætte min total i et record set (RS) sker der pludselig en kommafejl, så der kommer et par nuller for meget. Min total hedder sTotal og skal så ned i RS("belob") ... det gør jeg sådan her.

        RS("belob") = FormatNumber((sTotal/sprogKurs*100),2)           

Men der kommer altså to nuller for meget på (og det virker fint, når jeg bare tilskriver variabler og ikke RS).

Det bliver først rigtig spøjst, når jeg udskriver mine værder på skærmen:

sTotal: 230
sprogKurs: 550
RS("belob"): 4182
FormatNumber((sTotal/sprogKurs*100),2): 41,82

RS beregnes med variablerne sTotal og sprogKurs, hvilket så giver 4182. Men når jeg udskriver beregningen direkte får jeg det rigtige resultat ... nemlig 41,82.
Avatar billede timmwillum Nybegynder
27. oktober 2008 - 21:42 #1
Jeg ved, det lyder helt sort. For en god ordens skyld er her min kode til udskrift af værdier.

    RS("omkostninger") = FormatNumber(((sShipping + sAdmin)/sprogKurs*100),2)           
    'bug hunting
    response.write "<br>sTotal: " & sTotal
    response.write "<br>sprogKurs: " & sprogKurs
    response.write "<br>RS(""belob""): " & RS("belob")
    response.write "<br>FormatNumber((sTotal/sprogKurs*100),2): " & FormatNumber((sTotal/sprogKurs*100),2)
Avatar billede timmwillum Nybegynder
27. oktober 2008 - 21:44 #2
arghh ... fejl. Det er naturligvis sTotal ... kopierede den forkerte linje - laver samme beregning for en forsendelsesomkostning ;-)

Korrekt:
    RS("belob") = FormatNumber((sTotal/sprogKurs*100),2)           
    'bug hunting
    response.write "<br>sTotal: " & sTotal
    response.write "<br>sprogKurs: " & sprogKurs
    response.write "<br>RS(""belob""): " & RS("belob")
    response.write "<br>FormatNumber((sTotal/sprogKurs*100),2): " & FormatNumber((sTotal/sprogKurs*100),2)
Avatar billede erikjacobsen Ekspert
27. oktober 2008 - 21:47 #3
Du må ikke have et komma i et beløb du skal regne videre på. Kun punktum: 41.82 eller hvis det er et stort beløb 7913423232.75  Generelt ved jeg ikke hvorfor du opbevarer et formatteret tal i databasen - brug formatnumber, når du skal skrive ud til brugeren.
Avatar billede timmwillum Nybegynder
27. oktober 2008 - 22:00 #4
hmmm ... sidder lige og tester uden Format.Number ... det ser sørme ud til, at du har ret. Det virker som om, databasen slet ikke vil acceptere kommatal. Det er vel egentlig det som er problemet ...!!!

Det virker i hvert tilfælde uden format.number ... og det er FEDT. Har brugt noget tid på det her. Smid et svar så beriger jeg dig med nogle point.
Avatar billede erikjacobsen Ekspert
27. oktober 2008 - 22:05 #5
Jeg samler slet ikke på point, tak. Svar selv, accepter dit eget svar.
Kommatal skal opbevares i databasens eget kommatal format (float/double ... eller hvad det hedder). Men hvis det er penge-tal, og databasen understøtter det, bør man bruge formatet DECIMAL med 2 decimaler.
Avatar billede timmwillum Nybegynder
27. oktober 2008 - 22:18 #6
Tak
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
Kurser inden for grundlæggende programmering

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