Avatar billede Daldof Nybegynder
19. november 2010 - 14:04 Der er 5 kommentarer og
1 løsning

Asp/Vb-script geni søges til løsning af scriptfejl; ProdukUdregning; Vb, Vba, Asp

Jeg bøvler med et program, hvor at jeg via et asp-dokument skal lave en faktura, hvor at resultat skal vises altid med 2 decimaler, eks. kr. 89,95, udanset om det har decimaler 12,5 --> 12,50 eller ej 74 --> 74,00

Til det formål har jeg lavet en kode i asp som virker, men har enkelte undtagelser. For at teste om dette var et rent tilfælde, omskrev jeg det vbscript for at se om det virkede der, men med samme resultat.

Koden ser således ud:
-----------------------------------------------------------------

<html>
<head>
</head>
<body>

<html>
<head>
</head>
<body>

<Script Language="VBS">

'Denne funktion sikre at et tal altid har 2 decimaler.
'Men prøv at sætte antal til 5800
'og sæt pris til et sted imellem 1,34 og 1,37
'når du gør dette, vil funktioner tilsidesættes, med hvorfor?

'Prøv at fordouble eller halvere tallene, samme problem,
'også når man vender tallene omvendt (altså indføre 5800 til sidst),
'så det er ikke rækkefølgen der er noget galt med, men selve tallet.


Antal = Inputbox("Indfør venligst et antal")
Pris = Inputbox("Angiv en pris per styk")

No = Antal * Pris

msgbox No ' Checker summen af tallene (kun som test)

If 100 * No = Int(100 * No) then ' checker for mere end 2 decimaler (i så fald vil betingelse ikke være opfyldt)
    if 10 * No = Int(10 * No) then ' checker om nummeret fra nøjagtig 2 decimaler (i så fald vil betingelse ikke være opfyldt)
        If No = Int(NO) then ' ' checker om nummeret fra nøjagtig 1 decimal (i så fald vil betingelse ikke være opfyldt)
            msgbox Tmp2 & No & ",00" & chr(13) & chr(10) ' 0 Decimaler
        Else
            msgbox Tmp2 & No & "0" & chr(13) & chr(10) ' 1 Decimal
        End if
    Else
        msgbox Tmp2 & No & chr(13) & chr(10) ' 2 Decimaler
    End if
Else
    msgbox Tmp2 & Int(100 * No) / 100 & chr(13) & chr(10) ' (Mere end) 2< decimaler
End if

</Script>

</body>
</html>

-----------------------------------------------------------------
Jeg er selvfølgelig åben for andre forslag, men ser helst at denne fejl kunne løse direkte uden at skulle ændre på for meget kode da det skal skrives tilbage til asp når fejlen er fundet...

en anden "detalje" kan det passe at true false kontra sandt falsk i Ie 8 gør at jeg skal køre uk version og ikke kan køre server Dk og client Dk

På forhånd tak.
Avatar billede tofte Juniormester
19. november 2010 - 14:09 #1
Måske forstår jeg ikke helt opgaven, men har du set på den indbyggede funktion:
FormatNumber(val,2)

Vh
Rasmus
Avatar billede Daldof Nybegynder
19. november 2010 - 14:31 #2
kender godt funktionen, det er sådan set ikke det der driller mig, men mere det faktum at hvis jeg angiver udvalgte numre, som indsat i koden, så kan den sgu ikke regne rigtigt, eller det gør den men den "glemmer" betingelserne og sætter ikke decimaler.
Avatar billede supertekst Ekspert
19. november 2010 - 16:11 #3
Har du prøvet at erklære variablerne. Skulle kunne anvendes i ASP.

Dim pris As Currency, no As Currency
Dim antal As Long
Avatar billede Daldof Nybegynder
22. november 2010 - 08:02 #4
jeg kan ikke direkte definere variabler i VBScript og dermed heller ikke i ASP, da programmeringssproget er afledt af (er en udvidet form for) VBScript, men man kan gøre det indirekte som her:

Dim Pris ‘Erklærer variablen Pris
Dim No ‘Erklærer variablen No
Dim Antal ‘Erklærer variablen Antal

Pris = CCur(Pris) ‘CCur, konvertere Pris til Currentcy
No = CCur(No) ‘CCur, konvertere No til Currentcy
Antal = CLng(Antal) ‘CLng, konvertere Antal til Long

Hvilket jeg også har gjort, men uden held, det vil stadig ikke virke hvis man køre scriptet. Prøv det selv, det der især undrer mig er at den tilsidesætter betingelsen men kun ved visse tal...
Avatar billede supertekst Ekspert
23. november 2010 - 09:02 #5
Ok - anvender ikke ASP.

VBA nævnes også i dit spørgsmål? Her er der jo andre muligheder.
Avatar billede Daldof Nybegynder
24. november 2010 - 08:03 #6
Fandt en løsning hvor jeg efterfølgende kontrollerer decimaler og tilretter dem. Nedlægger derfor tråden, tak for hjælpen.
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