webForumDet fria alternativet

konvertera string mot nummer med decimal

ASP

7 svar · 504 visningar · startad av doggelito

Medlem sedan juni 20003 076 inlägg
Frågan#1

har ett formulär med ett textfält där man fyller i ett tal, typ 12,5
sen kör jag en function som kollar så att det alltid är en decimal.
grejjen är sen när jag ska inserta till databasen, då är 12,5 en string.
går det att konvertera till ex. Cint, Clng, men fortfarande behålla decimalen?
eller ska jag byta format på kolumnen i databasen istället?

Medlem sedan juni 200032 967 inlägg
#2

Varför ska du konvertera? Du bygger väl upp SQL-frågan som en sträng, då är det helt onödigt att se till att delar av strängen byggs upp av saker av typen double (som är en decimaltalstyp).

Däremot så får du se till att du använder decimalpunkt i stället för decimalkomma, eftersom man i SQL-frågor använder kommatecken för att separera fält eller värden.

Vad har du för fälttyp på fältet i tabellen?

Mvh,

Medlem sedan dec. 19995 874 inlägg
#3

Det skall vara . istället för ,

Om du nu har

a = "12.5"

så skall det inte vara några problem att sätta in a i databasen.

Du kan ju alltid kontrollera först iofs, med IsNumeric(a)

Medlem sedan juni 20003 076 inlägg
#4

vad lär jag ha för datatyp på fältet i databasen, ska inte numeric funka med decimal?
(kan nämnas att jag på andra sidor använder SUM för att sumera detta fält)
är jag helt vilse i pannkakan, eller!!!

Medlem sedan juni 200032 967 inlägg
#5

Vad är problemet?
Hur ser din insert ut?

Medlem sedan juni 20003 076 inlägg
#6

så här ser det ut.

regtime = checkform_decimal(request.form("regtime"))

if errors = 0 then
strsql = "insert into hours (regtime) values (" & regtime & ") "
call mySql
end if

function checkform_decimal(strtext)
	strtext = Replace(strtext, ".",",")
	strvalue = isNumeric(strtext)
		if strvalue = False then
		errors = errors & 4
		else
		strtext = FormatNumber(strtext,1,-1)
		end if
	checkform_decimal = strtext
end function

byter punkt till komma gör jag bara för att på svenska (lcid) vill formatnumber ha det, och formatnumber använder jag för att om man skriver .5 så byter den till 0.5.
jag testade att köra inserten utan funktionen med värdet 12.5 men den lilla stackars sql-servern tar bort min decimal och lägger in bara 12, varför?
datatypen för regtime är numeric för att jag ska kunna sumera fältet på andra sidor.
visst är det väl numeric jag bör använda?

(jag vet: funktionen byter till komma så jag får byta tillbaka till punkt innan inserten)

Medlem sedan juni 200032 967 inlägg
#7

Använder du Access? SQL Server?

I SQL Server borde det finnas Float eller liknande, i Access ska du se till att ditt numeriska fält har egenskapen Double. Standardinställning där är nog Long (långt heltal), men det är just heltal, och då är det inte konstigt att decimalerna ramlar bort när du gjort din insert.

Mvh,

Medlem sedan juni 20003 076 inlägg
#8

oki, I´m on! :bire
ändrade till float och nu funkar det, jobbigt bara att i inserten lär det vara punkt och kollar man i sql-servern så är det komma.
är det beroende på vilket default språk man väljer för databasen?

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)