[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?
È evidente che, visto che funziona, posso anche lasciarlo così, ma mi piacerebbe sapere perchè.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
Grazie per l'aiuto

Rispondi quotando