Hej, utgå från 100 %
1 % motsvarar en bild med en tjocklek på 1 px. Gör uträkningen och tex:
60 / 100 = 0.60
vilket motsvarar 60 %, alltså ska bilden loopas ut 60 ggr.
mvh Jörgen
16 svar · 351 visningar · startad av Cactuz
hur gör man ett diagram i asp? en sån som ibland visar resultat i en omröstning...
Hej, utgå från 100 %
1 % motsvarar en bild med en tjocklek på 1 px. Gör uträkningen och tex:
60 / 100 = 0.60
vilket motsvarar 60 %, alltså ska bilden loopas ut 60 ggr.
mvh Jörgen
hmm... kan du förklara lite bättre?
är inte bäst på asp... kan du visa hur scriptet ska se ut om den ska visa en stapel på 60% som ska "betyda" 320 o en på 90% som betyder 560? då kan jag lista ut hur det funkar
[Redigerat av Cactuz den 25 jan 2002]
Okey vi startar med lite matematik.
utgår från ett röstnings-script:
wF har fått 320 röster vilket motsvarar 60% av alla röster, antal röster totalt blir då:
1,6 * 320 = 512
detta innebär att stapeln wF ska ha en bredd på 60 pixlar.
dim intTotal
dim intVotes
dim intImageWidth
intTotal = RS("intTotal")
intVotes = RS("intVotes")
intImageWidth = Round((intVotes/intTotal)*100, 0)
<img src="bild.gif" width="<%=intImageWidth %>">
ungefär så här, har du många olika alternativ får du loopa igen uträkningen.
RED: bild.gif är 1 px bred
mvh Jörgen
den ska visa statistik över hur måsga besökare jag har olika datum... men jag får bara ut det senaste datumet...
<%
Do Until rs.EOF
%>
<%
SQL = "SELECT * FROM totalt"
Set rs = db.execute(SQL)
besok = "SELECT * FROM besok"
Set RecSet = db.execute(besok)
dim intTotal
dim intVotes
dim intImageWidth
intTotal = RS("besok")
intVotes = RecSet("antalbesok")
intImageWidth = Round((intVotes/intTotal)*100, 0)
%>
<%=RecSet("Datum")%><img src="kant.gif" height="10" width="1"><img src="bla.gif" height="10" width="<%=intImageWidth %>"><img src="kant.gif" height="10" width="1"><%=RecSet("Antalbesok")%>
<%
rs.MoveNext
Loop
%>
Vilka kolumner innehåller tabellerna besök och totalt och vad finns det för data i dom.
i besok ligger antalbesok och datum... där ligger hur många besök det är ett visst datum... i totalt ligger besok som är summan av alla antalbesok... man kan säkert göra detta smidigare genom att lägga ihop alla antalbesok men jag vet inte hur...
<%
dim intTotal,besok,intVotes,intImageWidth,rs
sql = "SELECT total FROM totalt"
Set RS = db.execute(sql)
intTtotal = rs("total")
rs.close
SQL = "SELECT * FROM besok order by datum desc"
Set rs = db.execute(SQL)
Do Until rs.EOF
intVotes = RS("antalbesok")
intImageWidth = Round((intVotes/intTotal)*100, 0)
%>
<% =RS("Datum")%><img src="kant.gif" height="10" width="1"><img src="bla.gif" height="10" width="<%=intImageWidth %>"><img src="kant.gif" height="10" width="1"><%=intVotes%>
<%
rs.MoveNext
Loop
%>
Det är otestat, och så vet jag inte vad alla kolumnnamn heter.
jag ändrade alla kolumnnamn
jag får felmeddelandet:
Körningsfel i Microsoft VBScript (0x800A000B)
Division med noll
det står att det ska vara fel här
intImageWidth = Round((intVotes/intTotal)*100, 0)
[Redigerat av Cactuz den 26 jan 2002]
Då ligger det 0 i den första posten du får från tabellen totalt, men det finns poster i tabellen besok.
Finns det flera poster i tabellen totalt så att du måste ha något villkor?
Du borde i och för sig ha en kontroll innan du går in i loopen
if clng(intTtotal) > 0 then
do until rs.eof
intVotes = RS("antalbesok")
intImageWidth = Round((intVotes/intTotal)*100, 0)
%>
<% =RS("Datum")%><img src="kant.gif" height="10" width="1"><img src="bla.gif" height="10" width="<%=intImageWidth %>"><img src="kant.gif" height="10" width="1"><%=intVotes%>
<%
rs.MoveNext
Loop
end if
%>
hmm.. samma fel meddelande.. o det ligger inte 0 nånstans
Hej, värdet av intVote eller intTotal måste vara 0 på något ställe.
red: stavar som en kratta
mvh Jörgen
Nu fixade det sig... intTotal hette intTtotal... jag fick oxå ta bort kontrollen för med den funkade det inte
[Redigerat av Cactuz den 26 jan 2002]
men det är ytterligare ett problem... nu är den i px per nr... allså.. om det är 40 så är stapeln 40px lång... jag vill ju att den som har högst värde ska vara width="100%"
det fixade sig tror jag
nix.. det gjorde den inte... om värdet är typ 2000 så blir stapeln väldigt lång
Matematiskt sett kan den bara bli 100 px under förutsättning att intVotes inte är större än intTotal, vilket inte borde vara möjligt.