se a qualcuno interessa, la mia domanda era dovuta a 4 errori che ho trovato in questa sub VB6 passatami dal mio boss:
codice:
Sub Schema(ByVal ExOut As String, ByVal Liv As Integer)
Dim Cn As ADODB.Connection
Dim Cat As ADOX.Catalog
Dim Tbl As ADOX.Table
Dim Col As ADOX.Column
On Error Resume Next
Set Cn = New ADODB.Connection
Set Cat = New ADOX.Catalog
Set Col = New ADOX.Column
Set Tbl = New ADOX.Table
Cn.Provider = "Microsoft.JET.OLEDB.4.0"
Cn.ConnectionString = "Exchange 4.0;MAPILEVEL= " & ExOut & ";PROFILE=Outlook;" & "TABLETYPE=0;DATABASE=C:\WINDOWS\TEMP\;"
Cn.Open
If Cn.State = 1 Then
Set Cat.ActiveConnection = Cn
' If Cat.State = 1 Then
For Each Tbl In Cat.Tables
Debug.Print String(Liv * 2, " ") & Tbl.Name
DoEvents
' l'oggetto 'Col' è quello che crea lo schema della cartella
For Each Col In Tbl.Columns
Err.Clear
Next
If Tbl.Name <> "Outlook 10 Security Settings" Then
Call Schema(ExOut & Tbl.Name & "\", Liv + 1)
End If
Next
End If
Set Cn = Nothing
Set Cat = Nothing
Set Col = Nothing
Set Tbl = Nothing
End Sub
a parte il fatto che creare col New una variabile non ha senso se poi non la usi (se non nel For Each) e di conseguenza non vedo la necessità di mettere a Nothing le due variabili alla fine.
Altri errori potrebbero essere: (correggetemi se sbaglio)
1) connessione non chiusa... potrebbe rimanere aperte infinite connessioni tra server e client usando tale codice;
2) se la connessione non riesce a essere aperta viene generato un errore di cui lui non si è manco preoccupato di cancellare.
se ne trovate altri di errori o se mi son sbagliato io ditemelo
Concludendo: Guardare sto codice mi fà dire che io non sarò il programmatore migliore del mondo, ma almeno certi errori di logica e di programmazione non li farei mai... Alla faccia dei 20 anni di programmazione alle spalle...