Annulation d'une Connection Asynchrone DB
je ai une connection asynchrone a une db, seulement lorsque sa prend trop de temps j'aimerai annuler cette connection
voila le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Private Function createConnection() As Boolean
Dim cnn As ADODB.Connection
On Error GoTo fail
Set cnn = New ADODB.Connection
cnn.ConnectionTimeout = TIMEOUT_CON '10 sec de time out
Dim lngStartTime As Long
lngStartTime = GetTickCount()
cnn.Open m_chaineDeConnexion, , , adAsyncConnect
'-----------'
'Attente que la connexion soit établie
Dim crt As Long
While (cnn.State = adStateConnecting)
DoEvents
crt = GetTickCount() - lngStartTime
If crt > TIMEOUT_CON * 1000 Then
cnn.Close 'ou cnn.Cancel <=======================
End If
Wend
'-----------'
Set m_connection = cnn
createConnection = True
Exit Function
fail:
createConnection = False
'Vérification des erreurs dans le cas d'une mauvaise connexion
If cnn.Errors.Count > 0 Then
'Affichage des erreurs
MsgBox cnn.Errors.Item(0)
Else
MsgBox Err.Description
End If
End Function |
lorsque le time out se produit si je declance un cnn.close sa declanche l'erreur suivante : Vous ne pouvez pas faire cela sur une connection asynchrone
lorsque je met un cnn.cancel, il reste bloquer sur la ligne pendant une 30aine de sec
deplus le cnn.ConnectionTimeout = TIMEOUT_CON '10 sec de time out ne fonctionne absolument pas puisqu'il reste dans la boucle while 30 sec (time out par default !!) bref j'y comprend rien !
if Anybody has a solution ...
Apres d'autre test : si je fait un set Cnn = Nothing, meme comportement que cnn.cancel ... il s'arrete sur la ligne ... attend puis repart apres environ 30 sec