webForumDet fria alternativet

Decimaltal

Databaser & SQL

8 svar · 346 visningar · startad av Havregryn

Medlem sedan juni 200288 inlägg
Frågan#1

Hmm... sitter och pillar med MySQL-front, men förgäves.
Hur jag än gör så lyckas jag inte hitta någon typ som tar emot decimaltal. Jag vill att man skall få 0.20 poäng när man loggar in, men det fungerar inte. Har testat med double och float, men inget funkar... tacksam för hjälp.

Medlem sedan juli 20033 147 inlägg
#2

Har du prövat Varchar?

Medlem sedan juni 200288 inlägg
#3

Jo, men Varchar är väl gentligen menat för textsnuttar?

Medlem sedan juli 20033 147 inlägg
#4

Jag är ingen specialist på MySQL Front men det borde funka med Varchar och vad spelar det för roll om det är gjort för textsnuttar? :)

Medlem sedan juni 200032 967 inlägg
#5

Argh!

Det spelar en jäkla roll! Tal äro tal och icke strängar. Varför tror du det finns olika datatyper, om man ändå ska ha allt i samma fälttyp?

Man skall lagra tal i talfält för att:
*) kunna sortera korrekt, annars kommer 10 före 2.
*) kunna räkna i SQL-frågan.

Taltyperna tar generellt också mindre lagringsutrymme.

- - - - - - - -

Havregryn, vad menar du med 'inte fungerar'? Du anger talet med decimalpunkt i SQL-frågorna?

Medlem sedan dec. 200012 464 inlägg
#6

Typen decimal borde vara lämplig.

Flyttas från ASP.

Medlem sedan juni 200288 inlägg
#7

Använder:

loginPoints = RecSet("loginPoints") + 0.20

när man loggar in.

Fel: När jag sedan kollar databasen med hjälp av MySQL-front så har det inte hänt någonting.
Jag har testat med double b la.

Med typen decimal får jag följande fel:

Körningsfel i Microsoft VBScript fel '800a000d' 

Inkompatibla typer 

sida.asp, rad 59

Känner mig rättså förvirrad.

Medlem sedan juni 200032 967 inlägg
#8

Om du ska räkna med med fältvärdena i ASP så måste du se till att subtypskonvertera så du använder samma datatyper. En sträng som innehåller "0.20" är inte samma sak som ett decimaltal med värdet 0.20. I ASP kan du kan använda CDbl() för att konvertera en variant till subtypen double, som är ett decimaltal.

Du måste visa mer kod också, om det ska gå att hjälpa till.

Mvh

Medlem sedan juni 200288 inlägg
#9

Okej, jag skall visa mer kod. Följande lilla stycke använder jag när man loggar in:

' Lägger till poäng
Set RecSet = Connect.Execute("Select * from tblstatus where username = '"& Request.Form("username")&"'") 
If RecSet("loginDate") = date then
	' Ger inga poäng
Else
	dblLoginPoints = RecSet("loginPoints") + 0.2
	dtmLoginDate = date
	Connect.Execute("UPDATE tblstatus SET loginDate = '"& dtmLoginDate &"', loginPoints = '"& dblLoginPoints & "' where username = '"& Request.Form("username") &"'") 
End if

Och jag har som sagt testat en rad olika typer på dblLoginPoints, men inget verkar fungera. Vore glad om du kunde förklara lite mer utförligt!

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)