room Medlem sedan mars 2001 270 inlägg Frågan 1 dec. 2003 12:54 #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!???!
@nders Medlem sedan juni 2000 32 967 inlägg Har du ställt in i fältegenskaperna i tabellen att tillåta decimaler då?
room Medlem sedan mars 2001 270 inlägg 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!
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg 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)
room Medlem sedan mars 2001 270 inlägg 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
N niko Medlem sedan juni 2002 2 599 inlägg 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.
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg
niko skrev:
..och sen ta CSng på resultatet.
En blandning av CLng och CStr? ;)
N niko Medlem sedan juni 2002 2 599 inlägg 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.)
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg Ah! :)
Blir det verkligen en sträng? Jag brukar visserligen använda det i kombination med CDbl() med framgång i liknande fall.
N niko Medlem sedan juni 2002 2 599 inlägg <%=TypeName (FormatNumber(1,0))%>