sadnotrue
Messages postés42Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention31 mai 2005
-
31 mai 2004 à 17:50
sadnotrue
Messages postés42Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention31 mai 2005
-
2 juin 2004 à 20:54
Bonjour à celle ou ceux qui liront ce post !!
Voilà je cherche à récupéré des infos d'une base de donnée accès sous vb. Ma connexion fonctionne mes requêtes passent, cependant il me reste un soucis important !!
Lorsque je passe dans ma table pour retrouver un info qui n'y est pas j'ai le droit à ce message !!
BOF ou EOF est égal à true ou l'enregistrement actuel a été supprimer.L'opération demandée nécessite un enregistrement actuel. (Ca c évident je fais un test pour être sur qu'au cas ou un utilsateur saisisse un truc qui n'existe pas, que ça lui renvois un msg.
sql "SELECT HFR, NOM, Adresse, Adresse1, CP, Ville FROM clients where HFR " & CMB_Numcli.Text & ";"
table.Open sql, db
If table.Fields("HFR") = CMB_Numcli.Text Then <- blocage
SB1.SimpleText = "La personne recherché a été trouvée"
MsgBox "La personne recherché a été trouvé", vbOKOnly
CMB_Nomcli.Text = table.Fields("NOM")
TXT_Ad.Text = table.Fields("ADRESSE")
If IsNull(table.Fields("ADRESSE1")) Then
TXT_Ad2.Text = ""
Else
TXT_Ad2.Text = table.Fields("ADRESSE1")
End If
TXT_CP.Text = table.Fields("CP")
TXT_Ville.Text = table.Fields("Ville")
Else
SB1.SimpleText = "La personne recherché n'existe pas"
MsgBox "La personne recherché n'existe pas", vbOKOnly
Exit Sub
End If
Mais quand je cherche qq1 qui existe ça passe normalement.
cs_pluplu
Messages postés615Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention 4 juillet 2012 1 juin 2004 à 00:56
C'est inévitable lorsque ton recordset est parcouru jusqu'à EOF et qu'il ne trouve aucunne occurence, il te renvoie une erreur, la meilleure façon de détourner le probl. est de gérer l'erreur de cette façon:
avant ta commande SQL
on error goto monerreur
ici le code qui vas remplir ton recordset
ensuite à la fin de ton code ne pas oublier
Exit Sub
monerreur:
resume next
De cette façon tu détourne l'erreur et aucun message n'apparait.
Pascal Laurençon
Mieux vaut un petit clic que deux grandes claques..
Mieux vaut un naze bin qu'un naze tout court..
sadnotrue
Messages postés42Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention31 mai 2005 1 juin 2004 à 13:18
oki j'ai testé mais j'ai jamais compris la gestion des erreurs. Pourquoi quand ça fonctionne, c'est à dire qu'aucune erreur n'a été trouvé, il passe qd même de la zone erreur ?
EX :
Private Sub CMD_Recherche_Click()
On Error GoTo myerror
[...]
If table.Fields("HFR") = CMB_Numcli.Text Then <- erreur
SB1.SimpleText = "La personne recherché a été trouvée"
MsgBox "La personne recherché a été trouvé", vbOKOnly
CMB_Nomcli.Text = table.Fields("NOM")
TXT_Ad.Text = table.Fields("ADRESSE")
[...]
myerror:
SB1.SimpleText = "La personne recherché n'existe pas"
MsgBox "La personne recherché n'existe pas", vbOKOnly
CMB_Numcli.SetFocus
CMD_Clear.Value = True
Exit Sub
en gros qu'il y est une erreur ou pas il passe par my error à la fin pourquoi ?
cs_pluplu
Messages postés615Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention 4 juillet 2012 1 juin 2004 à 15:06
En fait c'est trais simple:
l'instruction goto nous vient de la prehistoire du basic à cette epoque on l'utilisait comme branchement à une sub-routine ex.
If tralala goto 10 (on numérotais encore les lignes à cette époque). Maintenant on ne voit plus que rarement cette commande entre autre dans le cas des gestions d'erreur.
Ton problème de passer par ta gestion d'erreur même si il n'y en a pas vient du fait que ta commande exit sub est mal placée, elle doit être juste au dessus de ton branchement.
Exit sub
myerror:
SB1.SimpleText = "La personne recherché n'existe pas"
MsgBox "La personne recherché n'existe pas", vbOKOnly
CMB_Numcli.SetFocus
.............
.............
End Sub
Pascal Laurençon
Mieux vaut un petit clic que deux grandes claques..
Mieux vaut un naze bin qu'un naze tout court..
Vous n’avez pas trouvé la réponse que vous recherchez ?
sadnotrue
Messages postés42Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention31 mai 2005 1 juin 2004 à 20:14
Oki c bon ça fonctionne, merci beaucoup pour tes explications, mais pourrais tu m'expliquer pourquoi le fait d'avoir exit sub en dehors de l'erreur ça passe ?
cs_pluplu
Messages postés615Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention 4 juillet 2012 2 juin 2004 à 10:50
Ben voilà ton code s'execute jusqu'a ce qu'il rencontre une erreur dès lors il est conditionné par l'instruction If error goto myerror et il saute directement depuis la ligne ou se produit l'erreur à la ligne de branchement myerror: sans passer par l'instruction exit sub par contre si il n'y a pas d'erreur le code effectue toutes les instructions jusqu'a la command exit sub qui fait que les instructions sous myerror: sont ignorées.
Pascal Laurençon
Mieux vaut un petit clic que deux grandes claques..
Mieux vaut un naze bin qu'un naze tout court..