J'ai un pb de temps d'accès à ma base de données.
Pour mieux expliquer, j'ai fait un bout de code de démo. Un form avec une combo et un bouton.
Le principe est que je charge, depuis ma base de données, les communes de France (36000 villes) dans une combo pour voir le temps que cela met.
Code:
Dim Cnn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Start As Single
Private Sub Command1_Click()
ComboBox1.Clear
'Ouverture de la base de données
Call OpenDBConn
'Récupération des données
Start = Time
codesql = "Select * from Ville order by NomVille"
Set Rs= New ADODB.Recordset
Set Rs= Cnn.Execute(codesql)
'Remplissage de la combo
Do While Not Rs.EOF
ComboBox1.AddItem Rs("NomVille")
Rs.MoveNext
Loop
MsgBox chaine1 & "Nbre de lignes : " & ComboBox1.ListCount & vbCrLf & _
"Temps : " & (Time - Start)
Rs.Close
Set Rs= Nothing
Call CloseDBConn
End Sub
Private Sub OpenDBConn()
Set Cnn = New ADODB.Connection
Cnn.Open "MonDSN"
End Sub
Private Sub CloseDBConn()
Cnn.Close
Set Cnn = Nothing
End Sub
La procédure efface le contenu de la combo, crée une connection à la base, crée un recordset, récupère les données dans ce recordset et les ajoute dans le combo.
Le traitement dure environ 4 secondes. Cependant, et c'est là le pb, lorsque je relance la procédure, le traitement dure 20 secondes. Et si je recommence, le temps augmente encore. Pourtant je close le recordset et la base et je les retire de la mémoire avec Set XXX = Nothing (du moins c'est ce qu'il me semble)