08. maj 2005 - 17:34Der 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!!!!!!!
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)
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...
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.
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å
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"
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
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.
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
Ø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.
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)
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...
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! :-)
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(
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...
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
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.
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.