162 messaggi dal 07 novembre 2003
AH, ok come immaginavo...
Ma devo fare 4 select diverse o integrare quella che mi hai scritto tu per i 4 campi?
Anche perchè se ne faccio 4 diverse avrò quattro risultati come votocorrente e quattro come votomassimo, quindi poi dovrei sommarli anche loro; credo di essermi risposto da solo, vero?
Provo a scrivere il codice e poi te lo posto se dopo averlo testato non funge...se puoi dammi risposta alla domanda stupida che ti ho fatto, cosi parto con il piede giusto subito...

Grazie :)
2.584 messaggi dal 14 maggio 2001
Puoi mettere tutto nella stessa select

SELECT Max(Voto1) AS Max1, Max(Voto2) AS Max2, ...., Sum(Voto1) AS Somma1, ... , Count(ID) AS Conteggio WHERE ID=3

votocorrente e votomassimo dovrai averne comunque 4 perché il votomassimo sul campo1 non sarà lo stesso del campo2 o del campo3...
162 messaggi dal 07 novembre 2003
Prima della sub:
<%
ID=request.queryString("ID")
sql="SELECT Max(voto1) AS Max1, Max(voto2) AS Max2, Max(voto3) AS Max3, Max(voto4) AS Max4 WHERE ID="&ID
sql2="SELECT Sum(voto1) AS somma1, Sum(voto2) AS somma2, Sum(voto3) AS somma3, Sum(voto4) AS somma4, Count(Id) AS Conteggio WHERE ID="&ID VotoCorrente = rst.fields("<span style="color:red">somma</span>") / rst.fields("conteggio") 
call apridb(sql, sql2, rs, conn)
  if rs.recordcount>0 then
    voto1=rs("voto1")
    voto2=rs("voto2")
    voto3=rs("voto3")
    voto4=rs("voto4")
  end if
call chiudidb(rs, conn)
%>

inizio sub:
<%

Sub MostraVoto(VotoCorrente, VotoMassimo, NumeroImmagini)
NumeroImmagini = 5
VotoMassimo = 
VotoCorrente =
....

Allora nell'sql2, quando fai l'operzione dividi la somma per il conteggio; ora io non ho somma, ma somma1... somma4! Quindi bisogna definire somma?
Ora VotoMassimo e VotoCorrente comeli ottengo?

Grazie :)
162 messaggi dal 07 novembre 2003
Ho modificato il codice cosi ora:
<%
ID=3
sql1="SELECT Max(voto1) AS Max1, Max(voto2) AS Max2, Max(voto3) AS Max3, Max(voto4) AS Max4 FROM voto_locale WHERE locale_ID="&ID
sql2="SELECT Sum(voto1) AS somma1, Sum(voto2) AS somma2, Sum(voto3) AS somma3, Sum(voto4) AS somma4, Count(locale_ID) AS Conteggio FROM voto_locale WHERE locale_ID="&ID& VotoCorrente = rst.fields("somma1+somma2+somma3+somma4") / rst.fields("Conteggio") 
strSQL = sql1 & sql2
call apridb(strSQL, rs, conn)
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, Conn, adOpenStatic, adLockReadOnly, adCmdText
  if rs.recordcount>0 then
    voto1=rs("voto1")
    voto2=rs("voto2")
    voto3=rs("voto3")
    voto4=rs("voto4")
  end if
call chiudidb(rs, conn)
%>

<%

Sub MostraVoto(VotoCorrente, VotoMassimo, NumeroImmagini)
NumeroImmagini = 5
VotoMassimo = voto1+voto2+voto3+voto4
VotoCorrente = VotoCorrente
Voto = VotoCorrente/VotoMassimo*5
...

Come mai mi dice necessario oggetto:" in riga dell'sql2?

Grazie :)
2.584 messaggi dal 14 maggio 2001
Un po' di cose...

Le select le puoi ragruppare così:
..
ID=3
sql="SELECT Max(voto1) AS Max1, Max(voto2) AS Max2, Max(voto3) AS Max3, Max(voto4) AS Max4, Sum(voto1) AS somma1, Sum(voto2) AS somma2, Sum(voto3) AS somma3, Sum(voto4) AS somma4, Count(locale_ID) AS Conteggio FROM voto_locale WHERE locale_ID="&ID

Cosa intendi con VotoCorrente? non capisco perché vuoi fare la somma di questi valori:
VotoCorrente = rst.fields("somma1+somma2+somma3+somma4") / rst.fields("Conteggio")

call apridb(SQL, rs, conn)
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open strSQL, Conn, adOpenStatic, adLockReadOnly, adCmdText
if rs.recordcount>0 then
'NON esistono questi campi! dal recordset hai preso e puoi usare solo Max1, Max2, ..., Somma1, Somma2 e Conteggio
voto1=rs("voto1")
voto2=rs("voto2")
voto3=rs("voto3")
voto4=rs("voto4")
end if
call chiudidb(rs, conn)

Quando apri un recordset con la Call puoi usare di lì in poi solo i campi che hai scelto...
162 messaggi dal 07 novembre 2003
Ok per il resto
Per la somma:
devo sommare tutte le somme dei valori per poi dividerle, nella prima tua ipotesi, usavi "somma", ma questo per un campi solo, ora iu Sum sono 4 e quindi devo sommare tutti i campi,no?

Ora mi da questo errore, tra l'altro mai riscontrato:
L'istruzione SELECT include una parola riservata o un argomento scritto in modo errato o mancante oppure la punteggiatura non è corretta .
Modificato da milanopleasure il 10 febbraio 2004 16.01 -

Grazie :)
2.584 messaggi dal 14 maggio 2001
Devi fare quattro somme distinte perché la media per ogni singolo valore è data da:
somma di tutti i valori inseriti per un determinato campo / numero di record

Per il secondo errore inserisci il codice... ricorda di mettere le virgole fra un campo e l'altro e ricordati di non usare parole come Sum, Max, First come nomi di campi o di alias
162 messaggi dal 07 novembre 2003
Allora gli AS li ho fatti diventare per il voto: v1, v2... per la somma: s1, s2...

Ora mi da errore di prevista fine istruzione in sql1!

------

Ma se devo trovare un solo VotoCorrente cosi non va bene?
VotoCorrente = rst.fields("s1"+"s2"+"s3"+"s4") / rst.fields("Conteggio")

Grazie :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.