Gestion des erreur

Résolu
fahdboujadi Messages postés 20 Date d'inscription lundi 15 novembre 2004 Statut Membre Dernière intervention 2 mai 2005 - 14 mars 2005 à 01:18
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 14 mars 2005 à 02:25
Bonjour
je tien a remercier tt personne ayant la gentiesse de resoudre mon probléme; Merci
la pemiere fois que mon programe ne trouve pa ma base de donnée ca marche bien.
jé mis un 2 choix sur la gestion des erreurs : 1 pour sortir - 2 pour revenir a l'ettiquette ( restor1:) probleme est pour la 2eme fois ou il trouve pa la base de donné :
Voila :

restor1:
On Error GoTo loaderror


Set work = DBEngine.Workspaces(0)
Set bd = work.OpenDatabase("G:\ibnsina_bd.mdb")
Set rst = bd.OpenRecordset("consigne")
.
.
.



loaderror:If Err.Number 3043 Or Err.Number 3024 Or Err.Number = 3044 Then
rp = MsgBox(Err.Description + Chr(13) + Chr(13) + "Problème de connexion:" + Chr(13) + "Assurez-vous que vous êtes connectée à la base de données", vbYesNo, "Erreur")
Select Case rp
Case vbNo
End
Case vbYes
GoTo restor1
End Select
End If

Merci

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
14 mars 2005 à 02:25
Salut
-1- Il faut faire une gestion d'erreur digne de ce nom :
- Pour associer des chaines entre elles, c'est & et pas + (ça peut poser des erreurs avec les chiffres)
- Utilise les variables VB comme vbCrLf au lieu de Chr(13) & Chr(10)
- Ta MsgBox : Tu proposes Oui ou Non (vbYesNo) : Où est la question ?
Utilise plutôt vbRetryCancel, comme ça il aura les boutons "Réessayer/Abandonner"
Bien sur, il faudra utiliser les réponses possible vbRetry ou vbCancel dans les tests de réponse
Pour faire plus joli, ajoute aussi "+ vbCritical" pour avoir l'icone de problème
Pour info, ton MsgBox d'erreur s'adresse à une femme (connectée), normal ?
- Tu peux utiliser MsgBox directement dans un If, ça sera plus clair
- Après un saut causé par "On Error Goto", si tu décides de revenir dans le programme "comme si de rien n'était", il faut utiliser "Resume", sinon l'erreur restera en mémoire.


-2- Pour ne réessayer que deux fois, il faut mémoriser que tu l'as déjà fait :
- Dimensionne une variable mémoire de type Boolean
- Passe la à True quand tu auras fait un réessai


Ce qui donne, en final :


Dim ReessaiFait As Boolean
restor1:
On Error GoTo loaderror
Set work = DBEngine.Workspaces(0)
Set bd = work.OpenDatabase("G:\ibnsina_bd.mdb")
Set rst = bd.OpenRecordset("consigne")
.
.
.


loaderror:
Select Case Err.Number
Case 3043, 3024, 3044
If Not ReessaiFait Then
If MsgBox(Err.Description & vbCrLf & "Problème de connexion:" & vbCrLf & "Assurez-vous que vous êtes connectée à la base de données", vbYesNo, "Erreur") = vbRetry Then
ReessaiFait = True
Resume restor1
End If
End If
End Select
End If



Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3
Rejoignez-nous