Avatar billede bodyguard Nybegynder
01. september 2004 - 23:08 Der er 38 kommentarer og
1 løsning

Grafisk Statestik

Hejsa

Jeg mangler et script som laver en grafisk statestik over hvor mange personer hver admin har tilføjet...

DATABASE:
Ph.mdb

Listen(tabel) >> refid(række) hvor værdien er = session("id")
SELECT * FROM listen WHERE REFID = " & SESSION("ID") & "

Dette skal sammenlignes med:

Personale(Tabel) >> max_opret(række) værdien af dette skal trækkes fra antal af refid.
SELECT * FROM Personale WHERE ID = " & SESSION("ID") & "

dette var blot for at demonstrere hvor de forskellige data ligger.

Jeg vil have en "blæjke" om man vil med en indikation af hvor mange man har oprettet ud af ens kvote.

Max_Opret er det tal som beskriver hvor mange der må/skal oprettes.

Refid (Reference ID) er til at finde ud af hvor mange af alle dem i listen er inviteret af session("id") .

Statestikken skal gælde for ALLE personele som har Max_Opret værdi højre end 0.

Jeg håber at dette gav lidt mening...

Venligst
Mark Zweidorff
Avatar billede fennec Nybegynder
02. september 2004 - 08:23 #1
Hvis du vil lave grafer anbefaler jeg du får fat i et komponent til det. Bruger selv Chart FX, men den er meget dyr at anskaffe. Lav evt. en søgning på google efter chart og ASP, så får du en liste. Nogle af dem er gratis at bruge.

Ellers kan du selv gøre det med tabeller. Du skal så selv beregne %'erne. Men du skal bare få det til at ligne dette:

<table width="300" border="1">
<tr>
  <td width="100">Brian</td>
  <td>
    <table width="100%">
    <tr>
      <td bgcolor="#0000ff" width="50%">&nbsp;</td>
      <td width="50%">&nbsp;</td>
    </tr>
    </table>
  </td>
</tr>
<tr>
  <td>Benny</td>
  <td>
    <table width="100%">
    <tr>
      <td bgcolor="#0000ff" width="30%">&nbsp;</td>
      <td width="70%">&nbsp;</td>
    </tr>
    </table>
  </td>
</tr>
</table>
Avatar billede eagleeye Praktikant
02. september 2004 - 08:30 #2
Angående grak komponenter/kode så er her lidt:
Denne koster den masse dollers men kan en helt masse: http://www.hanengcharts.com/


Men det ikke altid man har lyst til at betale for en masse man aldrig får brug for så der findes heldigvis også alternativer som er gratis. Så alt efter behov kan en af disse måske bruges:
http://www.stigc.dk/projects/pureAspGraph/
http://home.t-online.de/home/lutz.tautenhahn/diagram/index.html?php_and_asp.html
http://www.bullschmidt.com/barchart.asp
Avatar billede bodyguard Nybegynder
04. september 2004 - 21:24 #3
Det ville også være fint at beregne det via % men jeg mangler stadig scriptet :)
Avatar billede eagleeye Praktikant
04. september 2004 - 22:34 #4
Hvis du downloader:  http://www.stigc.dk/projects/pureAspGraph/

Unzipper det. Kopier folderne  include  og  PureAspGraph  ind i den folder du vil havde din asp fil. HVis du kalder din asp fil personale.asp og det ligger i folderen personale så skal det se sådan her ud:

personale/include
personale/PureAspGraph
personale/personale.asp


Så kan koden se sådan her ud:

<!-- #include file="PureAspGraph/PureAspGraph.asp" -->
<% session.LCID=1030%>
<html>
<head>
<title>PureAspGraph Demo</title>
<LINK href="include/stylesheet.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("db2.mdb")

SQL = "select count(listen.id) as antal, Personale.navn, Personale.max_opret from Personale left join listen on Personale.id=listen.refid where Personale.max_opret>0 group by Personale.navn, Personale.max_opret"
Set rs=Conn.Execute(SQL)

do while not rs.EOF
  strNavn = strNavn & "|" & rs("navn") & " (" & round( ( (int(rs("antal")))/int(rs("max_opret")))*100,2) & "%)"
  strMax = strMax & "," & rs("max_opret")
  strAntal = strAntal & "," & rs("antal")
  rs.Movenext
loop

strNavn = Mid(strNavn,2)
strMax = Mid(strMax,2)
strAntal = Mid(strAntal,2)

    Dim a, b
    Dim h, i, j, k
   
    a = split(strNavn,"|")
    b = split(strMax,",")
   
    i = split(strAntal,",")
   
    Dim objGraph
    Set objGraph = New PureAspGraph
    objGraph.setTitle("Personale check brugt")
    Call objGraph.setYAxesTitle("Personale")
    Call objGraph.setXAxesTitle("Max antal")
       
    Call objGraph.setData(a,b)
    Call objGraph.addData(i)
   
    Call objGraph.addLabel("Max antal")
    Call objGraph.addLabel("Brugt")   

   
    Call objGraph.setType(0)   
    Call objGraph.setBarWidth(6)
    Call objGraph.print()
%>
</body>
</html>
Avatar billede eagleeye Praktikant
04. september 2004 - 22:44 #5
Lige nu lister den alle personer som er i pasonale tabllen og har max_opret>0
Lige en anden ting, den bruger i øjeblikket en kolonne som hedder: navn
Det var for at få navn på også måske din kolonne hedder noget andet så skal det jo lige rettes. Samt Connection stringen skal rettes :)
Avatar billede bodyguard Nybegynder
04. september 2004 - 22:51 #6
Microsoft JET Database Engine error '80040e21'

Cannot join on Memo, OLE, or Hyperlink Object (Personale.id=listen.refid).

/listen_statestik.asp, line 71
Avatar billede eagleeye Praktikant
04. september 2004 - 22:54 #7
?? det var nogle sjove typer. Jeg troed det var henhodsvis Autonummer/tal og tal kolonne.
Avatar billede eagleeye Praktikant
04. september 2004 - 22:57 #8
Er Personale.id ikke autonummer ?
Er listen.refid ikke en tal kolonne?
Avatar billede bodyguard Nybegynder
04. september 2004 - 23:05 #9
Refid = er notat
Avatar billede eagleeye Praktikant
04. september 2004 - 23:05 #10
Hvorfor ikke tal ?
Avatar billede bodyguard Nybegynder
04. september 2004 - 23:06 #11
hmmm tja, 2 sek laver det da bare om ;)
Avatar billede bodyguard Nybegynder
04. september 2004 - 23:14 #12
Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/listen_statestik.asp, line 71
Avatar billede eagleeye Praktikant
04. september 2004 - 23:16 #13
Det kunne måske være pga den kolonne jeg har brugt som hedder navn: Personale.navn
Har du en kolonne som indeholder navet på personen?
Avatar billede bodyguard Nybegynder
04. september 2004 - 23:22 #14
fornavn, brugernavn, efternavn ?
Avatar billede eagleeye Praktikant
04. september 2004 - 23:25 #15
Ok, vil du havde det listet på grafen?
Du kunne evt. starte med brugernavn så ret SQL søtningen til:

SQL = "select count(listen.id) as antal, Personale.brugernavn, Personale.max_opret from Personale left join listen on Personale.id=listen.refid where Personale.max_opret>0 group by Personale.brugernavn, Personale.max_opret"


samt denne linje:
  strNavn = strNavn & "|" & rs("navn") & " (" & round( ( (int(rs("antal")))/int(rs("max_opret")))*100,2) & "%)"

rettes til:
  strNavn = strNavn & "|" & rs("brugernavn") & " (" & round( ( (int(rs("antal")))/int(rs("max_opret")))*100,2) & "%)"
Avatar billede bodyguard Nybegynder
06. september 2004 - 22:09 #16
Nej tror vi misforstod hinanden.

Jeg vil stadig finde ud af hvor mange hver person(personale) har oprettet på listen...
Avatar billede eagleeye Praktikant
06. september 2004 - 22:11 #17
Det gør den også. Der en rød som er max_opret så er der en grøn som er antal der er oprettet.
Avatar billede eagleeye Praktikant
06. september 2004 - 22:12 #18
Du kan evt. fjerne den røde: max_opret hvis du ikke vil havde den vist som graf pr. person.
Avatar billede bodyguard Nybegynder
06. september 2004 - 22:16 #19
kan du lave det til procent grafen... altså en ultra simpel en som den på www.Opello.dk

i venstre side, afstemning ...
Avatar billede eagleeye Praktikant
06. september 2004 - 22:17 #20
Arh ok så du vil havde % tallet som grafen jo det kan jeg lige prøve.
Avatar billede bodyguard Nybegynder
06. september 2004 - 22:20 #21
oki jeg har asp koden til den graf hvis du får brug for den...
Avatar billede bodyguard Nybegynder
06. september 2004 - 22:32 #22
Nu er vi gået forbi hinanden igen, tror jeg...

Jeg vil helst ikke bruge pure asg graph, men nærmere:

                                                    <%
set conn=server.CreateObject("ADODB.Connection")
    strDSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " &_
    "DBQ=" & Server.Mappath("database/bgz.mdb") & "; password="
conn.Open strDSN
%>

<%
SQL="Select Count(vote) as Count from vote where vote=1"
set RS_8=Conn.execute(SQL)

SQL="Select Count(vote) as Count from vote where vote=2"
set RS_9=Conn.execute(SQL)

SQL="Select Count(vote) as Count from vote where vote=3"
set RS_10=Conn.execute(SQL)

Dim Good
Good=RS_8("count")/(RS_9("count")+RS_10("count")+RS_8("count"))*100
Dim fair
fair=RS_9("count")/(RS_8("count")+RS_10("count")+RS_9("count"))*100
Dim bad
bad=RS_10("count")/(RS_8("count")+RS_10("count")+RS_9("count"))*100
%>
<table border=0 cellspacing=0 cellpadding=0 width=100% class=menu>
<tr>
<td colspan=2 height=1px bgcolor=#518291>
</td>
</tr>
<tr>
<td colspan=2 height=10px width=100%>
</td>
</tr>
<tr>
<td colspan=2 align=left valign=middle width=100% class=main>
<font color=black>Hvad synes du om BodyGuardz.dk?</font>
</td>
</tr>
<tr>
<td colspan=2 height=10px width=100%>
</td>
</tr>
<tr>
<td align=left valign=middle width=50% class=main>
<font color=black>God</font>
</td>
<td align=center valign=middle width=50% class=main>
<font color=black><%=RS_8("count")%></font>
</td>
</tr>
<tr>
<td height=5px colspan=2>
</td>
</tr>
<tr>
<td align=left valign=middle colspan=2>
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td height=5px bgcolor=#518291 width="<%=Good%>">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height=5px colspan=2>
</td>
</tr>
<tr>
<td align=left valign=middle width=50% class=main>
<font color=black>Rimelig</font>
</td>
<td align=center valign=middle width=50% class=main>
<font color=black><%=RS_9("count")%></font>
</td>
</tr>
<tr>
<td height=5px colspan=2>
</td>
</tr>
<tr>
<td align=left valign=middle colspan=2>
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td height=5px bgcolor=#518291 width="<%=fair%>">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height=5px colspan=2>
</td>
</tr>
<tr>
<td align=left valign=middle width=50% class=main>
<font color=black>Dårlig</font>
</td>
<td align=center valign=middle width=50% class=main>
<font color=black><%=RS_10("count")%></font>
</td>
</tr>
<tr>
<td height=5px colspan=2>
</td>
</tr>
<tr>
<td align=left valign=middle colspan=2>
<table border=0 cellspacing=0 cellpadding=0>
<tr>
<td height=5px bgcolor=#518291 width="<%=bad%>">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2 height=10px width=100%>
</td>
</tr>
<tr>
<td colspan=2 height=1px bgcolor=#518291>
</td>
</tr>
</table>
<%
RS_8.Close
set RS_8=nothing
RS_9.Close
Set RS_9=nothing
RS_10.Close
Set RS_10=nothing
%>
Avatar billede eagleeye Praktikant
06. september 2004 - 22:34 #23
ok.
Avatar billede bodyguard Nybegynder
06. september 2004 - 22:35 #24
hvis du kan lave det sådan ville jeg blive utroligt GLAD !!!
Avatar billede eagleeye Praktikant
06. september 2004 - 22:35 #25
Ja prøver lige.
Avatar billede bodyguard Nybegynder
06. september 2004 - 22:36 #26
Weeeeei
Avatar billede eagleeye Praktikant
06. september 2004 - 22:54 #27
Så prøv sådan her:


<%session.LCID = 1030 %>
<html>
<head>
<title></title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("db2.mdb")

SQL = "select count(listen.id) as antal, Personale.brugernavn, Personale.max_opret from Personale left join listen on Personale.id=listen.refid where Personale.max_opret>0 group by Personale.brugernavn, Personale.max_opret"
Set rs=Conn.Execute(SQL)

do while not rs.EOF
  strNavn = strNavn & "|" & rs("brugernavn")
  strProcent = strProcent & "|" & round( ( (int(rs("antal")))/int(rs("max_opret")))*100,2)
  'strMax = strMax & "," & rs("max_opret")
  'strAntal = strAntal & "," & rs("antal")
  rs.Movenext
loop

strNavn = Mid(strNavn,2)
strProcent = Mid(strProcent,2)
'strMax = Mid(strMax,2)
'strAntal = Mid(strAntal,2)

    Dim a, b
       
    a = split(strNavn,"|")
    b = split(strProcent,"|")




%>

<table border=0 cellspacing=0 cellpadding=0 width=100% class=menu>
<tr>
  <td colspan=2 height=1px bgcolor=#518291></td>
</tr>
<tr>
  <td colspan=2 height=10px width=100%></td>
</tr>
<tr>
  <td colspan=2 align=left valign=middle width=100% class=main>
  <font color=black>Overskrft hre</font>
  </td>
</tr>
<tr>
  <td colspan=2 height=10px width=100%></td>
</tr>
<% for i=lbound(a) to ubound(a) %>
<tr>
  <td align=left valign=middle width=50% class=main>
  <font color=black><%=a(i)%></font>
  </td>
  <td align=center valign=middle width=50% class=main>
  <font color=black><%=b(i)%>%</font>
  </td>
</tr>
<tr>
  <td height=5px colspan=2></td>
</tr>
<tr>
  <td align=left valign=middle colspan=2 >
  <table border=0 cellspacing=0 cellpadding=0 width="<%=int(b(i))%>%">
  <tr>
  <td height=5px bgcolor=#518291 width="100%">
  </td>
  </tr>
  </table>
  </td>
</tr>
<tr>
<td height=5px colspan=2>
</td>
</tr>
<% next %>
</table>
</body>
</html>
Avatar billede bodyguard Nybegynder
06. september 2004 - 23:15 #28
Microsoft JET Database Engine error '80040e21'

Cannot join on Memo, OLE, or Hyperlink Object (Personale.id=listen.refid).

/listen_statestik.asp, line 68


Refid er IKKE et tal format, men NOTAT...

Og dette kan jeg ikke rigtigt lave om på...
Avatar billede eagleeye Praktikant
06. september 2004 - 23:17 #29
Så prøv at rette SQL'en til:

SQL = "select count(listen.id) as antal, Personale.brugernavn, Personale.max_opret from Personale left join listen on Personale.id=Int(listen.refid) where Personale.max_opret>0 group by Personale.brugernavn, Personale.max_opret"
Avatar billede bodyguard Nybegynder
06. september 2004 - 23:26 #30
Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.

/listen_statestik.asp, line 68
Avatar billede bodyguard Nybegynder
06. september 2004 - 23:27 #31
hvis det er kan jeg sende dig databasen ?
Avatar billede eagleeye Praktikant
06. september 2004 - 23:35 #32
Ja det kan godt være det nødvendigt. Eller kan du skrive hvad type kolonnerne som indgår i SQL sætning:

listen.id :
listen.refid :
Personale.brugernavn :
Personale.max_opret :
Avatar billede eagleeye Praktikant
06. september 2004 - 23:36 #33
Hvad kan der så stå i listen.refid kun tal?
Avatar billede bodyguard Nybegynder
06. september 2004 - 23:37 #34
Email?
Avatar billede eagleeye Praktikant
06. september 2004 - 23:38 #35
eagleeye (a) c.dk
Avatar billede eagleeye Praktikant
06. september 2004 - 23:53 #36
Så vidt jeg kan se har du ikke en kolonne brugernavn i tabellen Personale. Så du må bruge Fornavn og efternavn, prøv at rette SQL'en til.:

SQL = "select count(listen.id) as antal, Personale.fornavn, Personale.efternavn, Personale.max_opret from Personale left join listen on Personale.id=int(listen.refid) where Personale.max_opret>0 group by Personale.fornavn, Personale.efternavn, Personale.max_opret"


Prøv også at rette denne:
  strNavn = strNavn & "|" & rs("brugernavn")

Til denne:
  strNavn = strNavn & "|" & rs("Fornavn") & " " & rs("efternavn")
Avatar billede bodyguard Nybegynder
07. september 2004 - 00:14 #37
SUPER NICE !!!!

Hvis jeg nu laver et spørgsmål, med det samme hvor der kun skal vises statestik for den pågældne bruger er det så noget for dig?
Avatar billede bodyguard Nybegynder
07. september 2004 - 00:17 #38
Avatar billede eagleeye Praktikant
07. september 2004 - 00:17 #39
Ja men du kan rette SQL sætningen fra:

SQL = "select count(listen.id) as antal, Personale.fornavn, Personale.efternavn, Personale.max_opret from Personale left join listen on Personale.id=int(listen.refid) where Personale.max_opret>0 group by Personale.fornavn, Personale.efternavn, Personale.max_opret"


Til dette hvor du tilføjer en ID i where delen

id = Session("ID")
SQL = "select count(listen.id) as antal, Personale.fornavn, Personale.efternavn, Personale.max_opret from Personale left join listen on Personale.id=int(listen.refid) where id = " & id & " AND Personale.max_opret>0 group by Personale.fornavn, Personale.efternavn, Personale.max_opret"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Rambøll Management Consulting

Senior AI Engineer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen