webForumDet fria alternativet

Nullvärde i Access

ASPur ASP

7 svar · 327 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Hej

Har gjort en poll med Adminsystem o hela köret.
Pollen har fem olika svaralternativ och man kan byta fråga osv.

Men byter man fråga, som det är nu, sätts alla antal svar till 1, vilket blir totalt 5 röster, dvs, 20% vardera.

Man kan ju itne ange NOLL (0) i fälten i databasen, för då vill den inte ladda frågan överhuvudtaget.

Hur gör jag för att lösa det här?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Varför kan du inte ange 0 i fältet? Det är ett fullt giltigt tal.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Ok, jag kanske KAN det, mendå blir det fel när den sedan ska räkna ut procent mm.

Sidan visas iaf inte...

Resultaten visas som:

-Procent
-En "bar"

Sen längst ner så visas antalet totala röster.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Visas inte sidan? Felmeddelande?

KoTTeNMedlem sedan sep. 20011 722 inlägg
#5

0/1 ger ju fel i datorvärlden.
Du får göra så att kolla med en if-sats om värdet är 1 eller mer och om, så ska den köra koden för att räkna ut antal procent.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#6

Ny_fraga.asp (del av koden)

fraga = Request.Form("fraga")
svar1 = Request.Form("svar1")
svar2 = Request.Form("svar2")
svar3 = Request.Form("svar3")
svar4 = Request.Form("svar4")
svar5 = Request.Form("svar5")
res1 = "0"
res2 = "0"
res3 = "0"
res4 = "0"
res5 = "0"
initDate = Date()
aktiv = "Ja"

'________________________________________________

strSQL = "INSERT INTO Poll_data (Fraga, Svar1, Svar2, Svar3, Svar4, Svar5, Res1, Res2, Res3, Res4, Res5, initDate, Aktiv) VALUES ('" &_
fraga & "','" & Replace(svar1, "'", "''") & "','" & Replace(svar2, "'", "''") & "','" & Replace(svar3, "'", "''") & "','" & Replace(svar4, "'", "''") & "','" & Replace(svar5, "'", "''") &_
"','" & Replace(res1, "'", "''") & "','" & Replace(res2, "'", "''") & "','" & Replace(res3, "'", "''") & "','" & Replace(res4, "'", "''") & "','" & Replace(res5, "'", "''") &_
"','" & Replace(initDate, "'", "''") & "','" & aktiv & "');"

'________________________________________________

Set oRec = oConn.Execute(strSQL)

I Visa_Poll.asp Rad 56 ligger felet:

total = CInt(res1) + CInt(res2) + CInt(res3) + CInt(res4) + CInt(res5)

pro1 = Replace(round(res1 / total * 100), ",",".") <== Rad 56
pro2 = Replace(round(res2 / total * 100), ",",".")
pro3 = Replace(round(res3 / total * 100), ",",".")
pro4 = Replace(round(res4 / total * 100), ",",".")
pro5 = Replace(round(res5 / total * 100), ",",".")

JAg ve titne vad det beror på, det är väl beräkningen som blr fel, när den inte kan avrunda 0.

KoTTeNMedlem sedan sep. 20011 722 inlägg
#7

Jo, som jag skrev ovan så är det omöjligt att dividera med 0.
Gör såhär istället:

If res1 = 0 Then
  pro1 = 0
Else
  pro1 = Replace(round(res1 / total * 100), ",",".") 
End If

If res2 = 0 Then
  pro2 = 0
Else
  pro2 = Replace(round(res2 / total * 100), ",",".") 
End If

osv
MickeA.comMedlem sedan feb. 20034 441 inlägg
#8

Just det, det funakr ju, tack & bock

130 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)