Vb + access + ado

sadnotrue Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 31 mai 2005 - 31 mai 2004 à 17:50
sadnotrue Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 31 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.

Merci d'avance à ceux qui liront ce post

Sadnotrue

7 réponses

sadnotrue Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 31 mai 2005
31 mai 2004 à 17:52
au cas ou certains poserais la question les connexions sont faite :

Dim sql As String
Dim sql2 As String
Dim sql3 As String
Dim sql4 As String
Dim sql5 As String
Dim sql6 As String
Dim rtat As Boolean

Dim db As adodb.Connection
Dim table As adodb.Recordset
Dim table2 As adodb.Recordset
Dim table3 As adodb.Recordset

Set db = New adodb.Connection
Set table = New adodb.Recordset
Set table2 = New adodb.Recordset
Set table3 = New adodb.Recordset
0
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Derniè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..
0
sadnotrue Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 31 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 ?

Merci encore de ton aide !
0
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Derniè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..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sadnotrue Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 31 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 ?

Et merci encore !!!
0
cs_pluplu Messages postés 615 Date d'inscription mercredi 18 décembre 2002 Statut Membre Derniè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..
0
sadnotrue Messages postés 42 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 31 mai 2005
2 juin 2004 à 20:54
oki je te remercie de ton aide et pour tes explications qui ont été très clair. Merci encore tu me sauves

Partager ce qu'on sait c'est laisser une trace de notre passage...
Sadnotrue
0