webForumDet fria alternativet

decimaler punkt eller komma???

ASP

10 svar · 1 066 visningar · startad av room

Medlem sedan mars 2001270 inlägg
Frågan#1

Tja.. ENKELT borde det varra och lägga in ett decimaltal. Men ICKE

Jag har ett form där användaren knappar in ett decimaltal i form av 66,95 eller liknande. När jag ska stoppa in det i databasen (access) så får jag typblandningsfel och jag antar att det är så att kommandotolken vill ha punkt istället för komma så då kör jag:

I Request har jag exvis värdet 66,95

decimalYta = Replace(Request("decimaltal"), ",", ".")

och sedan för att stoppa in det i mitt rs

objektData("yta") = decimalYta

Men i tabellen får jag värdet 6695 utan decimaler.

Varför!???!

Medlem sedan juni 200032 967 inlägg
#2

Har du ställt in i fältegenskaperna i tabellen att tillåta decimaler då?

Medlem sedan mars 2001270 inlägg
#3

Självklart... så här ser fältegenskaperna ut:

Fältstorlek: Decimal
Format: Tal
Precision: 18
Skala: 2
Decimaler: 2
Indatamask:
Titel:
Standardvärde: 0
Verifieringsuttryck:
Verifieringstext:
Obligatorisk: Nej
Indexerat: Nej
Smarta etiketter:

Man kan ju bli gråhårig för mindre. Det här borde ju vara så elementärt!

Medlem sedan feb. 200112 078 inlägg
#4

Mmm. Access tolkar punkter i ditt decimaltal som felaktiga (eller liknande) och tar helt sonika bort dem. Om man för in samma värde i ett sådant fält med kommatecken istället för punkt, fungerar det alldeles utmärkt.

Testa följande:

objektData("yta") = Formatnumber(decimalYta,2)
Medlem sedan mars 2001270 inlägg
#5

Nope det hjälper inte.. jag får forfarande bara ett enda långt heltal av det.

Och om jag kör bara formatnumber(Request("decimaltal"), 2) så får jag scriptkörningsfel:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'FormatNumber'
/admin/objekt_add.asp, line 13

Medlem sedan juni 20022 599 inlägg
#6

Om du har svenskt LCID så tolkar ADO:n (inte Access) punkt som tusenseparator och "66.95" blir "6695", vilket är helt korrekt.

Om du måste "replaca" så ska du "replaca" till det som är decimalseparator i din LCID och sen ta CSng på resultatet.

Medlem sedan feb. 200112 078 inlägg
#7

niko skrev:

..och sen ta CSng på resultatet.

En blandning av CLng och CStr? ;)

Medlem sedan juni 200032 967 inlägg
#8

Snarare CDbls lillebror.

Medlem sedan juni 20022 599 inlägg
#9

CSng omvandlar en sträng till ett decimaltal.

Formatnumber omvandlar ett decimaltal till en sträng, vilket är raka motsatsen till vad vi vill. (Inkompatibla typer.)

Medlem sedan feb. 200112 078 inlägg
#10

Ah! :)

Blir det verkligen en sträng? Jag brukar visserligen använda det i kombination med CDbl() med framgång i liknande fall.

Medlem sedan juni 20022 599 inlägg
#11
<%=TypeName (FormatNumber(1,0))%>
260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)