Newsgroup: it.comp.www.asp
Titolo: problema con if

ciao a tutti,
ho questo script che dopo una select esegue l'aggiornamento del campo
"punti" in base a 10 condizioni. La variabile "punti" dovrebbe ,in base ai
dati già presenti nel db,assumere valore 20 e invece assume valore 31!!!
Com'è possibile???
ecco lo script:
strSQL= "SELECT TOP 10 Pronostico.ID, Pronostico.gpv_diff,
Risultati.gpv_diff, Abs([Risultati].[gpv_diff]-[Pronostico].[gpv_diff]) AS
differenza FROM Pronostico INNER JOIN Risultati ON [Pronostico].[id_gp]
=[Risultati].[id_gp] WHERE [Pronostico].[id_sessione]=3 AND
[Pronostico].[id_gp]='"&id_gp&"' order by
Abs([Risultati].[gpv_diff]-[Pronostico].[gpv_diff]) ASC"
response.write strSQL
rs.Open strsql,Conn,1,3
i=0
punti=0
For i=1 to 10
if rs.eof then exit for
i=i+1
'recupero id record attuale
id=rs("id")
'condizioni assegnamento punteggio
if i=1 then
punti=punti+20
end if
if i=2 then
punti=punti+15
end if
if i=3 then
punti=punti+12
end if
if i=4 then
punti=punti+10
end if
if i=5 then
punti=punti+8
end if
if i=6 then
punti=punti+6
end if
if i=7 then
punti=punti+4
end if
if i=8 then
punti=punti+3
end if
if i=9 then
punti=punti+2
end if
if i=10 then
punti=punti+1
end if
'aggiornamento del campo punti per il record corrente
SQL="UPDATE pronostico set punti="&punti&" where id="&id&""
Conn.Execute(SQL)
RS.MoveNext
Next
rs.Close
response.write punti
%>
ciao!

 i=i+1
Eccolo l'errore aggiungi 1 alla variabile i ma la stessa variabile viene
utilizzata nel ciclo for-next
--
ITHost (your host company)
Technical Manager
C. Paparelli (MCSE,MCSD,MCDBA)
http://www.ithost.ch

 utilizzata nel ciclo for-next
si in effetti quell' i=i+1 non centra nulla!! e' un errore di copia/incolla
;-))
però ho scoperto che il problema è nella query select, ho fatto un
response.write del recordcount e mi riporta 3 record quando invece dovrebbe
restituire 1...in quanto c'è un solo record nella tabella pronostici che ha
id_sessione=3...come mai?? Puoi controllare la query???
Ecco la versione attuale:
strSQL= "SELECT TOP 10 Pronostico.ID, Pronostico.gpv_diff,
Risultati.gpv_diff, Abs([Risultati].[gpv_diff]-[Pronostico].[gpv_diff]) AS
differenza FROM Pronostico INNER JOIN Risultati ON [Pronostico].[id_gp]
=[Risultati].[id_gp] WHERE [Pronostico].[id_sessione]=3 AND
[Pronostico].[id_gp]='"&id_gp&"' order by
Abs([Risultati].[gpv_diff]-[Pronostico].[gpv_diff]) ASC"
ciao e grazie


Il fatto che la query ti restituisca 3 record è da attribuire al fatto che
hai un inner join tra le tabelle pronostico e risultati.
Presumo che nella tabella risultato tu abbia effettivamente un solo
risultato con id_sessione=3 ma nella tabella pronostico hai 3 record con
id_gp='" & id_gp & "'.
Ecco perchè la query restituisce 3 record.
L'unica soluzione è quella di effettuare una query di raggruppamento con
GROUP BY.



la situazione dei record è questa: nella tabella risultati ho 3 record con
id_gp='" & id_gp & "', solo 1 di questi ha id_sessione=3. Stessa situazione
nella tabella pronostici.
Puoi darmi una mano con GROUP BY???
ciao!

 Puoi darmi una mano con GROUP BY???
No problem, inviami una copia db ovviamente solo con le tabelle in questione
e con dati di esempio, ed eventualmente con una tabella d'esempio di cosa
hai bisogno di ottenere, all indirizzo 
norepl...@ithost.ch
 (rimuovi
nopreplay).


 nopreplay).
inviato!!!
ciao e grazie
maurizio