Avatar billede pjen2004 Nybegynder
08. maj 2005 - 17:34 Der er 28 kommentarer og
1 løsning

decimaltegn kan ikke blive komma?

Hvis jeg uploader nedenstående kode til en SBS-2003 server med IIS 6.0 viser den konsekvent decimaltegn som "." og ikke ",". Jeg har prøvet med og uden "Session.LCID = 1030" - uden forskel.

Regional Settings er sat til dansk - også under valuta, hvor decimaltegn er sat til ",". Jeg har haft genstartet serveren efter valg af Reginal Settings.

Det betyder at jeg ikke regne på tal fra en DB, hvor de tastet ind som f.eks. "1.500,75". På en lokal XP-Pro m. XPSp2 med IIS6.0 er der ingen problemer?

HJÆLP !!! Det ville være kanon, hvis nogen kan hjælpe!!!!!!!


<html>
<% Session.LCID = 1030 %>

<head>
<title></title>
</head>

<body>

<H5>

<%
TESTvar = 400/233
%>
<BR>
<BR>
<BR>
<%=TESTvar%>

</BODY>
</HTML>
Avatar billede busschou Praktikant
08. maj 2005 - 17:38 #1
Kan du ikke lave en replace på dem?
tal = 12.5
kommatal = replace(tal,".",",")
Avatar billede busschou Praktikant
08. maj 2005 - 17:41 #2
Ved godt det nok ikke er en optimal løsning at konvertere til en streng, udskifte komma, og konvertere til tal igen...
Men som nødløsning måske hvis ingen andre kan løse det :o)
Avatar billede winman Nybegynder
08. maj 2005 - 17:43 #3
hmm kan ikke rigtig sige andet en det burde virke... LCID'et er nemlig den eneste variable form for sprog opsætning for en ASP programør... som ikke har adgang til serveren... men jeg tror du skal kigge på om din server har mulighed for at bruge andre sprog osv... det er nemlig ikke altid de kan det...
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 17:46 #4
Neeeej,

hvis tal = 1.500,75 kan man vel ikke sådan lige replace. Hvis jeg skal regne på tallene fra DB'en skal de jo f.eks. laves om til "1,500.75". Eller passer de ikke med de øvrige tal der regnes på i scriptet - som alle vises med "." som decimaltegn.
Avatar billede busschou Praktikant
08. maj 2005 - 17:50 #5
ok nej ikke sådan lige. Men alt er muligt , omend lidt omsonst
Synes altså også det virker underligt det ikke virker "normalt"
Men jo du kan godt replace det som nødløsning
For du ved jo at kommaet altid er tredie sidst
Derfor kan du konvertere tallet til en streng
Splitte den i to ved kommaet
Den første del replace punktum til komma, vedhæfte punktum og rest igen
Og omvendt den anden vej
:/ - som nødløsning altså
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 17:51 #6
OK, - hvis nogen har en idé til at bytte rundt på "," og "." - må de også gerne melde sig. Altså: Hvordan man laver "1.500,75" om til "1,500.75"? (Det kan f.eks. også forekommer "215,50" - som så skal laves om til "215.50"
Avatar billede winman Nybegynder
08. maj 2005 - 17:51 #7
hov!!! lige en ting hvilken Database køre du fra ??? SQL eller ????
For hvis du gør det så skal du sikre dig at den også kan køre dansk..
Avatar billede winman Nybegynder
08. maj 2005 - 17:55 #8
altså det med replace kan man også godt... det jo bare at sige sådan... (men vil ikke anbefale det.)

Function SwapInNum(Expression)
  dim Output
  Output = replace(Expression,",","#")
  Output = replace(Output,".",",")
  Output = replace(Output,"#",".")
  SwapInNum = Output
End Function
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 17:55 #9
Jeg trækker på data fra både Access og MySQL. Men med "TESTvar = 400/233" får jeg jo også er resultat med "." som decimaltegn? Tallene der tastes ind i Access ligger som en tekststreng og bliver derfor vist som "1.500,75". Jeg har desværre ikke mulighed for at ændre på denne datatype (låst fra andet program). Data fra MySQL db'en vises alle med "." som decimaltegn.
Avatar billede busschou Praktikant
08. maj 2005 - 17:56 #10
pjen2004 som jeg sagde 17:50:37
for t=0 to len(tal)
if (tal[t] = ".") then
  nyttal = nyttal & ","
elseif (tal[t] = "," then
  nyttal = nyttal & "."
end if
next
Avatar billede busschou Praktikant
08. maj 2005 - 17:57 #11
hehe lær at opdatere..doh... nå men winmans er nok hurtigere swapping
Avatar billede busschou Praktikant
08. maj 2005 - 17:58 #12
winman >> hvorfor vil du ikke anbefale at replace? den giver jo det som ønskes..begge veje?
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 17:58 #13
Ja - I er hurtige... :-) Jeg kan slet ikke følge med... :-)
Avatar billede nielle Nybegynder
08. maj 2005 - 18:01 #14
Øhmmm? Hvis tallet ligger som "1.500,75" i databasen, så er de gemt som tekst istedet for rigtige tal. Det var måske en ide først at få dette rettet i en vis fart - hvis du altså har muligheden.

...og hvis det er det som er tilfældet, så kan jeg sagtens forstå hvorfor "Session.LCID = 1030" ikke makker ret.
Avatar billede winman Nybegynder
08. maj 2005 - 18:03 #15
Jeg vil ikke anbefale det, idet det ikke er den rigtige måde at gøre det på. Der kan forkomme problemer i scriptet på et eller andet tidspunkt... kan dog bare ikke lige give dig et event eksempel på hvornår problemet skulle komme...
End mere er, at det SKAL kunne lade sig gøre at ændre regions opsætningen på serveren...
Jeg havde engang selv problemet på en online shop jeg lavede for et firma, men kan sgu ikke lige komme på, hvad fejlen var den gang... sorry... men brug bare min swap function den virker jo som du selv siger... :o)
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 18:13 #16
nielle: Jeg kan ikke ændre på datatypen i Access-db'en - og ja de ligger som tekst-strenge - og det er ikke supersmart. Men alle andre tal fra MySQL ligger som tal - men de vises forkert (med punktum som dec.tegn)- selvom jeg bruger "Session.LCID = 1030".

winman: Ja, jeg fatter heller ikke at Reginal Settings ikke vil makke ret - men har prøvet at ændre det tusind gange... (samt genstartet IIS hver gang). P.t. er det vist swap funktionen der løser problemet lige nu...
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 18:39 #17
Jeg har lige testet med swap funktionen. Det ser ok ud! Men var jo ikke et "helt" svar på mit spørgsmål. Hvis du lægger et svar skal jeg nok give winman en stak point! :-)
Avatar billede busschou Praktikant
08. maj 2005 - 18:40 #18
Der kan man se
Man får ingen credits for at komme med ideen - får at vide det ikke er muligt
Man forklarer det er muligt
En anden giver en løsning som svarer til dette
Han tager alle credit
:o(
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 18:44 #19
Hmmm - tja point taken - hvis I begge lægger et svar kan I jo dele? Jeg havde dog overvejet at bruge replace - men kunne ikke lige magte at finde en swap-løsning...
Avatar billede busschou Praktikant
08. maj 2005 - 18:45 #20
hehe du bestemmer selv fordelingen - i øvrigt hvis du engang finder en anden løsning eller forklaring på problemet så post den endelig herinde :o)
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 19:02 #21
ok
Avatar billede pjen2004 Nybegynder
08. maj 2005 - 19:02 #22
ok
Avatar billede winman Nybegynder
08. maj 2005 - 23:29 #23
Er hermed svaret...
Du kan jo på et tidspunkt ændre din data type i din database ved at lave et script som løber igennem dit felt og derefter konvertere feltet til den rigtige data type
Avatar billede kjulius Novice
09. maj 2005 - 01:39 #24
Måske er jeg dum (og det er jo lidt sent, så hjernen fungerer ikke så godt), men virker LCID ikke kun ved formatering (formateret output)? Koden i spørgsmålet viser en direkte skrivning af variablen uden formatering.

Jeg ville prøve med en FormatNumber funktion.
Avatar billede kjulius Novice
09. maj 2005 - 01:47 #25
Replace funktionen som præsenteret synes jeg virker lidt omstændelig. Den må kunne cuttes ned til

Val(Replace(Replace("1.500,75",".",""),",","."))

Koden vil
1) Fjerne punktummer
2) Omdanne komma til punktum
3) Omdanne strengen til en numerisk værdi
Avatar billede winman Nybegynder
09. maj 2005 - 11:39 #26
pjen2004 -> hmm er det så nu man skal sige tak???
Avatar billede pjen2004 Nybegynder
09. maj 2005 - 17:25 #27
Winman: Hov, jeg kom vist til at afvise... Læg et svar igen!
Avatar billede winman Nybegynder
09. maj 2005 - 18:31 #28
svar... vi prøver igen
Avatar billede busschou Praktikant
09. maj 2005 - 19:34 #29
man kan jo ikke svare på lukkede spørgsmål, jeg må hellere være fair og oprette et
http://www.eksperten.dk/spm/616434
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