52 messaggi dal 15 aprile 2002
Faccio una select con join a due tabelle dopo aperto il recordset e avviato la lettura dello stesso ricevo questo errore:

Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto

la riga dove si verifica l'errore è quando assegno il valore del campo ad una variabile.

sql = "SELECT * FROM formazioni left JOIN voti ON formazioni.idgiocasq_form=voti.IDGIOCAVOTI WHERE idsoc_form=" & stridsoc & " AND id_cal = "& stridcalendario &" AND GIORNATA = " & stridcalendario

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn ,3,3
Do While Not rs.EOF
If contavoti <= 11 Then
voto = rs("VOTO")

Il campo è quello giusto ed è relativo alla seconda tabella.
Sono diverse ore che sto cercando di capire dov'è l'errore però sarà grande come una casa ma non lo vedo.
Grazie

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)
11.886 messaggi dal 09 febbraio 2002
Contributi
controlla che non ci sia un omonimo.
Mi spiego: se il campo "Voto" è presente sia nella tabella formazioni che in quella Voti potresti sperimentare problemi.

Soluzione 1 (ma non ci confido tanto):
voto = rs("Voti.voto")

Soluzione2:
seleziona esplicitamente nella select i campi che vuoi estrarre
"SELECT [/b]voti.voto[/b] FROM formazioni left JOIN voti ON formazioni.idgiocasq_form=voti.IDGIOCAVOTI WHERE idsoc_form=" & stridsoc & " AND id_cal = "& stridcalendario &" AND GIORNATA = " & stridcalendario
...
voto = rs("voto")

ciao

Enjoy learning and just keep making
3.122 messaggi dal 16 maggio 2002
Sei sicuro che ci sia il campo VOTO?
Se c'è prova a selezionare tutti i campi da ogni tabella singolarmente, cioè

sql = "SELECT formazioni.*, voti.* FROM formazioni left JOIN voti ON formazioni.idgiocasq_form=voti.IDGIOCAVOTI WHERE idsoc_form=" & stridsoc & " AND id_cal = "& stridcalendario &" AND GIORNATA = " & stridcalendario

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
52 messaggi dal 15 aprile 2002
Ho trovato un errore. Sbagliavo a indicare il nome del campo.
Ora però ho un errore diverso nel senso che il recordset risulta essere vuoto.
L'errore è questo:
Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.

La parte di codice dopo la query sql è questo e l'errore è sull'ultimo moveNext:
rs.Open sql, conn ,3,3
Do While Not rs.EOF
contavoti = contavoti + 1

If contavoti <= 11 Then
'calcolo punteggio secondo regola del regolamento

voto = rs("VOTO")
ruolo = rs("RUOLO")
goal = rs("GOL")
ammunito = rs("AMM")
espulso = rs("ESP")
rigore = rs("RIG")
autorete = rs("AUT")
assist = rs("a$")
gdv = rs("GDV")
gdp = rs("GDP")

If (voto <> "0") AND (ruolo <> "POR") Then

vototot = vototot + voto
vototot = vototot + rigore
vototot = vototot - ammunito
vototot = vototot - espulso
vototot = vototot - autorete
vototot = vototot + assist
vototot = vototot + gdv
vototot = vototot + gdp
response.write vototot & "<BR>"
else

If (voto <> "0") AND (ruolo = "POR") Then


vototot = vototot + voto
vototot = vototot - rigore
vototot = vototot - ammunito
vototot = vototot - espulso
vototot = vototot - autorete
vototot = vototot + assist
vototot = vototot + gdv
vototot = vototot + gdp
response.write vototot & "<BR>"
else

If (voto = "0") AND (ruolo <> "POR") Then
rs.update
rs.Close
'faccio una select sulla tabella societa per prelevare gli estremi della società

sql = "SELECT * FROM formazioni INNER JOIN voti ON formazioni.idgiocasq_form=voti.IDGIOCAVOTI WHERE idsoc_form=" & stridsoc & " AND RUOLO = '"&ruolo&"' AND titolari = 'NO' AND id_cal = " & stridgiorcal
'response.write sql
'response.end
Set rs = Server.CreateObject("ADODB.Recordset")
'response.write sql
'response.end

rs.Open sql, conn ,3,3
Do While Not rs.EOF

If rs("voto") <> "0" Then
vototot = vototot + voto
vototot = vototot + rigore
vototot = vototot - ammunito
vototot = vototot - espulso
vototot = vototot - autorete
vototot = vototot + assist
vototot = vototot + gdv
vototot = vototot + gdp
response.write vototot & "<BR>"
else

rs.MoveNext
end if
Loop

else

If (voto = "0") AND (ruolo = "POR") Then
rs.update
rs.Close
'faccio una select sulla tabella societa per prelevare gli estremi della società

sql = "SELECT * FROM formazioni INNER JOIN voti ON formazioni.idgiocasq_form=voti.IDGIOCAVOTI WHERE idsoc_form=" & stridsoc & " AND RUOLO = '"&ruolo&"' AND titolari = 'NO' AND id_cal = " & stridgiorcal
'response.write sql
'response.end
Set rs = Server.CreateObject("ADODB.Recordset")
'response.write sql
'response.end

rs.Open sql, conn ,3,3
Do While Not rs.EOF

If rs("voto") <> "0" Then
vototot = vototot + voto
vototot = vototot - rigore
vototot = vototot - ammunito
vototot = vototot - espulso
vototot = vototot - autorete
vototot = vototot + assist
vototot = vototot + gdv
vototot = vototot + gdp
response.write vototot & "<BR>"
else

rs.MoveNext
end if
Loop


else
end if
end if
end if
end if
end if
response.write vototot & "<BR>"
rs.MoveNext


Grazie

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)
2.584 messaggi dal 14 maggio 2001
Scusa ma:

Fai un loop fino alla fine del file
Do While Not rs.EOF
.....
Loop

Se utilizzi questa riga è logico che ti dia errore perché cerchi di andare ancora oltre fine file...
rs.MoveNext

Domanda: a cosa ti serve?
52 messaggi dal 15 aprile 2002
Per un errore nel tagli ed incolla non è venuta una riga.
Considerate che dopo l'ultimo re.MoveNext c'è Loop.
Forse la logica non è troppo chiara, provo a riassumerla:
faccio la select
avvio lo scorrimento del recordset
verifico se il contavoti è minore o uguale ad 11 (numero massimo dei voti possibili)
Se rientro in questa condizione prelevo i dati del record
Controllo se si tratta di voto positivo e ruolo diverso da por
se condizione è vera determino il voto
Altrimenti verifico se si tratta di voto positivo e ruolo POR
se condizione è vera calcolo voto
Altrimenti verifico se si tratta di voto = zero e ruolo diverso da POR
se condizione è vera devo chiudere il recordset e fare una nuova query per cercare il giocatore di pari ruolo però non titolare
Controllo se il voto è positovo e calcolo il voto.
Altrimenti verifico se si tratta di voto = zero e ruolo uguale POR
se condizione è vera devo chiudere il recordset e fare una nuova query per cercare il giocatore di pari ruolo però non titolare

Non so se questa logica sia corretta.

Cordialità Donaz
Animula, vagula, blandula, Hospes, comesque corporis, Quae nunc abibis in loca? Pallidula, rigida, nudula Nec, ut soles, dabis jocos. (Publius Aelius Hadrianus)

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.