[VB6] Nel codice di seguito ho dovuto inserire un "Do ... Loop" apparentemente inutile per fare si che una Tabella venga aggiornata.
Senza questo frammento di procedura non ottengo l'aggiornamento.
Aggiungo che il DB è Access 2000.
Qualcuno sa dirmi dove sbaglio?

codice:
Sub SelezionaDaAgenti()
On Error GoTo error_SelezionaDaAgenti

    Dim i As Integer, k As Integer, Vuoto As Integer
    Dim rcrdstAgenti As ADODB.Recordset, rcrdstMix As ADODB.Recordset, rcrdstProvince As ADODB.Recordset
    Dim sSQL As String
    
    Set rcrdstAgenti = New ADODB.Recordset
    Set rcrdstMix = New ADODB.Recordset
    Set rcrdstProvince = New ADODB.Recordset
                    
    sSQL = "SELECT CodAg, Selezionato From Agenti WHERE (((CodAg)='1'))"
    rcrdstAgenti.Open sSQL, ConnettiDBlocale, adOpenStatic, adLockOptimistic

    sSQL = "SELECT DISTINCT Prov From Clienti WHERE (((Escluso_1)<>-1) AND ((CodAg)='1'))"
    rcrdstMix.Open sSQL, ConnettiDBlocale, adOpenStatic, adLockOptimistic

    sSQL = "SELECT CodZn, OrdProv, Prov, Selezionato From DatiTerritoriali WHERE (((DescrProv)<>'Estero')) ORDER BY CodZn, OrdProv, Prov"
    rcrdstProvince.Open sSQL_Prov, ConnettiDBlocale, adOpenStatic, adLockOptimistic

    If rcrdstAgenti(1) = -1 Then
        rcrdstMix.MoveFirst
        Do Until rcrdstMix.EOF
            rcrdstProvince.MoveFirst
            Do Until rcrdstProvince.EOF
                If rcrdstMix("Prov") = rcrdstProvince("Prov") Then
                    rcrdstProvince("Selezionato") = -1
                    rcrdstProvince.Update
                End If
                rcrdstProvince.MoveNext
            Loop
            rcrdstMix.MoveNext
        Loop
    End If

'    **********************************************************************************************************
'    Ho dovuto inserire il frammento di procedura qui sotto altrimenti non esegue correttamente la Sub "SelezionaDaProvince".

     rcrdstProvince.Close
     rcrdstProvince.Open sSQL_Prov, ConnettiDBlocale, adOpenStatic, adLockOptimistic

     Do Until rcrdstProvince.EOF
          rcrdstProvince.MoveNext
     Loop
                        
'    Invece dopo avere eseguito questa procedura, la tabella "rcrdstRegioni" della Sub "SelezionaDaProvince" è aggiornata. Senza questo "Do ... Loop" la Tabella non si aggiorna
'    '**********************************************************************************************************
        
    k = 0
    rcrdstProvince.MoveLast
    rcrdstProvince.MoveFirst
    For i = 0 To rcrdstProvince.RecordCount - 1
        If rcrdstProvince("Selezionato") = True Then
            If k = 0 Then
                k = i
            End If
            ListaProvince.Selected(i) = True                    'ListaProvince è una ListBox
        ElseIf rcrdstProvince("Selezionato") = False Then
            ListaProvince.Selected(i) = False
        End If
        rcrdstProvince.MoveNext
    Next i
        
    ListaProvince.TopIndex = k
    
    SelezionaDaProvince_1
    
    rcrdstAgenti.Close
    rcrdstMix.Close
    rcrdstProvince.Close
    
    Set rcrdstAgenti = Nothing
    Set rcrdstMix = Nothing
    Set rcrdstProvince = Nothing

    Exit Sub
error_SelezionaDaAgenti:
    MsgBox "Errore nella Sub ''SelezionaDaAgenti''": " & Err.Number & " - " & Err.Description
End Sub



Private Sub SelezionaDaProvince()
On Error GoTo error_SelezionaDaProvince

    Dim i As Integer, k As Integer
    Dim rcrdstRegione As ADODB.Recordset, rcrdstMix As ADODB.Recordset
    Dim sSQL As String
        
    Set rcrdstRegione = New ADODB.Recordset
    Set rcrdstMix = New ADODB.Recordset
    
    sSQL = "SELECT Reg, Selezionato From ElencoRegioni ORDER BY CodZn"
    rcrdstRegione.Open sSQL, ConnettiDBlocale, adOpenStatic, adLockOptimistic
    
    sSQL = "SELECT Reg, Sum(IIf([Selezionato]=True,1,0)) AS Vero, Count(DescrProv) AS SommaProv, IIf([SommaProv]-[Vero]<[SommaProv],-1,0) AS SeleRegione From DatiTerritoriali GROUP BY Reg, CodZn ORDER BY CodZn"
    rcrdstMix.Open sSQL, ConnettiDBlocale, adOpenStatic, adLockOptimistic
    
    rcrdstRegione.MoveLast
    rcrdstRegione.MoveFirst
    For i = 0 To rcrdstRegione.RecordCount - 1
        rcrdstMix.MoveLast
        rcrdstMix.MoveFirst
        For k = 0 To rcrdstMix.RecordCount - 1
            If rcrdstMix(0) = rcrdstRegione(0) Then
                If rcrdstMix("SeleRegione") = -1 Then
                    rcrdstRegione(1) = -1
                    rcrdstRegione.Update
                Else
                    rcrdstRegione(1) = 0
                    rcrdstRegione.Update
                End If
                DoEvents
            End If
        rcrdstMix.MoveNext
        Next k
    rcrdstRegione.MoveNext
    Next i
    
    rcrdstRegione.Close
    Set rcrdstRegione = Nothing
    rcrdstMix.Close
    Set rcrdstMix = Nothing

    Exit Sub
error_SelezionaDaProvince:
    MsgBox "Errore nella Sub ''SelezionaDaProvince''": " & Err.Number & " - " & Err.Description
End Sub
È evidente che, visto che funziona, posso anche lasciarlo così, ma mi piacerebbe sapere perchè.

Grazie per l'aiuto