Avatar billede zed_one Praktikant
02. september 2008 - 10:22 Der er 10 kommentarer og
1 løsning

sikre sig at input er skrevet med komma

Jeg har et inputfelt hvor en bruger kan indtaste et kommatal (et enkelt decimal), som efterfølgende bliver gemt i en access-database. Hvis brugeren vælger at bruge punktum istedet, går den helt gal. Kan jeg tilrette dataen inden den skrives i databasen?

Er angiveligt omvendt når serveren scriptet er på, er dansk.
Avatar billede zed_one Praktikant
02. september 2008 - 10:23 #1
eller dvs, den sidste linje jeg skrev, er jeg ikke sikker på.
Avatar billede fennec Nybegynder
02. september 2008 - 10:30 #2
Du kan replace . med ,

data = "123.45"
data = replace(data,".",",")
Avatar billede softspot Forsker
02. september 2008 - 10:33 #3
Du kan lave en replace på punktum i data inden du gemmer i databasen.

Den hurtige løsning:

val = replace(Request.Form("tallet")&"", ".", ",")

hvilket vil udskifte alle kommaer i feltet "tallet". Det kan dog have en negativ sideeffekt, hvis brugeren rent faktisk har brugt punktum som tusindskiller, så derfor kan du evt. starte med at tjekke om dette er tilfældet (men det er stadig ikke en helt sikker metode):

tallet = Request.Form("tallet")&""
start = 1
antal = 0
do
  dotpos = instr(start, tallet, ".")
  if dotpos > 0 then antal = antal + 1
until dotpos = 0

if antal <= 1 then
  tallet = replace(tallet, ".", ",")
end if

hvis der er mere end et punktum i teksten, så udskiftes det ikke...
Avatar billede softspot Forsker
02. september 2008 - 10:35 #4
Ups! Der mangler lige en forøgelse af startpositionen (ellers bliver det en laaaang løkke :-))

tallet = Request.Form("tallet")&""
start = 1
antal = 0
do
  dotpos = instr(start, tallet, ".")
  if dotpos > 0 then antal = antal + 1
  start = dotpos + 1
until dotpos = 0

if antal <= 1 then
  tallet = replace(tallet, ".", ",")
end if
Avatar billede softspot Forsker
02. september 2008 - 10:54 #5
Well.. ret beset er det jo ikke nødvendigt at udskifte punktumer, når man ved der ikke er nogen at udskifte, så den sidste if kan bare tjekke på antal = 1 i stedet:

if antal = 1 then
  tallet = replace(tallet, ".", ",")
end if
Avatar billede zed_one Praktikant
02. september 2008 - 12:03 #6
Hej

Det virkede :) skulle dog lige tilføje et "loop" før dit "Until"

Mange tak! Smid et svar og du får point :)
Avatar billede zed_one Praktikant
02. september 2008 - 12:04 #7
Det skal dog siges at det benyttes til en vægttabs-graf jeg er ved at bikse sammen, så tal over 1000 dukker FORHÅBENTLIGT ikke op :)
Avatar billede softspot Forsker
02. september 2008 - 12:16 #8
Nej, det må man ikke håbe! :D

Velbekomme :)
Avatar billede softspot Forsker
02. september 2008 - 12:16 #9
Eller mente du fennec???
Avatar billede zed_one Praktikant
02. september 2008 - 12:27 #10
Nej du har vist lagt nooget mere arbejde i dit svar - omend hans også var korrekt :)
Avatar billede softspot Forsker
02. september 2008 - 12:41 #11
Jamen, så tak for point da :)
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

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