Ho fatto delle correzioni al codice, leggi i commenti, perchè molto probabillmente facendo rs.movenext vai a eof e ti dà errore. Se non è chiaro qualcosa chiedi. Ciao
codice:
'For i = 1 To rs.RecordCount
'prima di questo ci deve essere la select con open sul recordset
Do Until rs.EOF
If UCase(Left(rs("cdsuc_alu0"), 4)) = "FIAA" Or UCase(Left(rs("cdsuc_alu0"), 4)) = "FI1A" Then
cont_maternestra = cont_maternestra + 1
End If
classeb = Trim(Left(rs("clat_alu0"), 1))
If IsNull(Trim(Left(rs("citd_alu0"), 3))) Then
cont_emptycitt = cont_emptycitt + 1
'cittadinanze vuote
End If
Me.txt_cittàvuote.Text = cont_emptycitt
If tmp_cdalu = rs("cdsuc_alu0") Then
sw2 = False
If UCase(Left(rs("citd_alu0"), 3)) <> "ITA" And Left(rs("citd_alu0"), 3) <> "" Then
vett_cdsuc_alu0(X) = rs("cdsuc_alu0")
' On Error Resume Next
vett_naz(X) = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
X = X + 1
tmp = conta_sessi1(cont_femmine1, cont_maschi1)
tmp = conta_sessi2(cont_femmine2, cont_maschi2)
tmp = conta_sessi3(cont_femmine3, cont_maschi3)
tmp = conta_sessi4(cont_femmine4, cont_maschi4)
tmp = conta_sessi5(cont_femmine5, cont_maschi5)
m = m + 1
f = f + 1
Else
'perchè questo ??????????????? ti sposti sul record successivo
'quello che leggi dopo è un altro record e potrebbe già essere EOF e darti errore (***)
rs.MoveNext
End If
Else
sw2 = True
If UCase(Left(rs("citd_alu0"), 3)) <> "ITA" And Left(rs("citd_alu0"), 3) <> "" Then
vett_cdsuc_alu0(X) = Trim(rs("cdsuc_alu0"))
' temp_var = Left(rs.Fields("citd_alu0"), 3)
' On Error Resume Next
vett_naz(X) = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
X = X + 1
cont_femmine1 = 0
cont_maschi1 = 0
cont_femmine2 = 0
cont_maschi2 = 0
cont_femmine3 = 0
cont_maschi3 = 0
cont_femmine4 = 0
cont_maschi4 = 0
cont_femmine5 = 0
cont_maschi5 = 0
tmp = conta_sessi1(cont_femmine1, cont_maschi1)
tmp = conta_sessi2(cont_femmine2, cont_maschi2)
tmp = conta_sessi3(cont_femmine3, cont_maschi3)
tmp = conta_sessi4(cont_femmine4, cont_maschi4)
tmp = conta_sessi5(cont_femmine5, cont_maschi5)
m = m + 1
f = f + 1
' For a = 1 To 10000
' vett_naztemp(a) = ""
' Next a
tmp_cdalu = rs("cdsuc_alu0")
' Else
End If
End If
'questo è fuori dalle if quindi se sei entrato (***) sei sul record successivo ATTENZIONE
If rs("citd_alu0") = cittadinanza Then
Else
cittadinanza = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
vett_cdsuc_alu0(X) = Trim(rs("cdsuc_alu0"))
vett_naz(X) = UCase(CStr(Left(rs("citd_alu0"), 3) & ""))
X = X + 1
cont_femmine1 = 0
cont_maschi1 = 0
cont_femmine2 = 0
cont_maschi2 = 0
cont_femmine3 = 0
cont_maschi3 = 0
cont_femmine4 = 0
cont_maschi4 = 0
cont_femmine5 = 0
cont_maschi5 = 0
tmp = conta_sessi1(cont_femmine1, cont_maschi1)
tmp = conta_sessi2(cont_femmine2, cont_maschi2)
tmp = conta_sessi3(cont_femmine3, cont_maschi3)
tmp = conta_sessi4(cont_femmine4, cont_maschi4)
tmp = conta_sessi5(cont_femmine5, cont_maschi5)
m = m + 1
f = f + 1
End If
rs.MoveNext
ProgressBar.Value = i
DoEvents
Loop
PS: Spero di non aver fatto errori, perchè,logicamente, non ho potuto provarlo.