Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Percentuale difficile!

  1. #1

    Percentuale difficile!

    Ciao a tutti,

    piccolo problemino: ho una pagina che raccoglie i voti che l'utente
    ha espresso in una precedente pagina di sondaggio, sensa molti
    problemi riesco a raccoglierli e a scriverli nel DB, poi raccolgo i dati per tipo di voto e li visualizzo come nell'esempio:

    Qualita' del servizio:

    Buono Sufficiente Scarso
    4............3.............2

    per rendere i dati piu' leggibili vorrei trasformare
    i voti raccolti in percentuali, la formula che mi risulta piu' familiare è: percentuale= (votiparziali/votitotali)*100

    Per fare questo ho bisogno oltre che dei voti parziali(che gia' ho)
    anche di una variabile che contenga i voti totali, il problema consite nel fatto che appena ottengo tale dato e chiudo la connessione il dato stesso viene eliminato dalla memoria e non posso piu' recuperarlo per calcolare la percentuale.
    Diversamente se non chiudo la connessione il flusso va in errore
    perke' trova una connessione gia' aperta e non puo' aprirne una seconda.

    Di seguito il codice:

    <%function votitotali()%>
    <% Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/sondaggio.mdb")
    Set rs = Server.CreateObject("ADODB.Recordset")

    sql= "Select rispondenza FROM votazioni"
    rs.Open sql, conn ,3,3
    rs.moveLast
    contatot = rs.recordCount
    rs.close
    conn.close
    set rs = nothing
    set conn = nothing%>
    <%end function%>


    <%function percentuale()%>
    <% Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/sondaggio.mdb")
    Set rs = Server.CreateObject("ADODB.Recordset")

    sql= "Select * FROM votazioni where rispondenza='ottimo'"
    rs.Open sql, conn ,3,3
    if not(rs.eof) then
    rs.moveLast
    conta = rs.recordCount
    perc = (conta/contatot)*100
    response.write perc
    else
    response.write "0"
    end IF
    rs.close
    conn.close
    set rs = nothing
    set conn = nothing%>
    <%end function%>




    Qualcuno sa come uscire da questo tunnel?

    Grazie 1K,

  2. #2
    apri e chiudi il database due volte? suppongo si possa fare anche col join ma...nn è che lo abbia mai usato molto, ho paura di dirti qlke sciocchezza...
    ...Ignorance is bliss...

  3. #3
    codice:
    <%function votitotali()
      Set conn = Server.CreateObject("ADODB.Connection")
      conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/sondaggio.mdb")
      Set rs = Server.CreateObject("ADODB.Recordset")
    
      sql= "Select rispondenza FROM votazioni"
      rs.Open sql, conn ,3,3
      rs.moveLast
      contatot = rs.recordCount
      rs.close
      conn.close
      set rs = nothing
      set conn = nothing
      votitotali = contatot
    end function
    
    function percentuale(voto)
      Set conn = Server.CreateObject("ADODB.Connection")
      conn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/db/sondaggio.mdb")
      Set rs = Server.CreateObject("ADODB.Recordset")
    
      sql= "Select * FROM votazioni where rispondenza='"&voto&"'"
      rs.Open sql, conn ,3,3
      if not(rs.eof) then
        rs.moveLast
        conta = rs.recordCount
        perc = (conta/votitotali())*100
        response.write perc
      else
        response.write "0"
      end IF
      rs.close
      conn.close
      set rs = nothing
      set conn = nothing
      percentuale = perc
    end function%>
    così dovrebbe andare

    voto è il voto di cui vuoi trovare la percentuale...quindi tu chiamerai questa funzione in questo modo:

    codice:
    <%
      percOttimo=percentuale("ottimo")
      percBuono=percentuale("buono")
     etc etc
    %>
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

  4. #4
    Grazie a tutti per le risposte,
    provero' a meterle in atto... mi chiedevo se il problema della
    variabile che perde il valore a chiusura connessione non potesse essere legato al fatto che non le dichiaro con DIM...

    Vi faro' sapere!

    Grazie ancora

  5. #5
    non perde il valore all chiusura della connessione, ma quando finisce la funzione che chiami, non gliela facevi restituire
    Purtroppo bisogna imparare che il computer non sbaglia...fa solo quello che gli dici di fare

    www.netpolaris.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.