Tester l'existance d'une variable dans une requète ...

Résolu
nuts_ben Messages postés 4 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 17 mars 2009 - 17 mars 2009 à 12:02
nuts_ben Messages postés 4 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 17 mars 2009 - 17 mars 2009 à 15:00
Bonjour à tous,

j'aimerai tester l'existence d'une variable pour éviter que mon programme plante dès que celle-ci n'existe plus.
Je n'arrive pas à trouver comment faire.
<hr size="2" width="100%" />
...
Set InDB = CurrentDb
Set InSatz = InDB.OpenRecordset("Articles")
...
If .SetFieldVal("num2", Nz(c, "")) = False Then
     Anzeige "AVERTISSEMENT", UebernahmeArt, InSatz.Fields!num2 & " num2:<" & InSatz.Fields!num2 & ">", Editor.GetLastError
End If
....
<hr size="2" width="100%" />Le problème, c'est que parfois, la variable "num2" n'est pas présente dans ma base donc le programme plante. Ce que j'aimerai, c'est qui cette variable n'existe pas, que je puisse continuer mon programme quand même.

Je ne connait rien aux VBA!! Merci pour votre aide...

nuts_ben

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 mars 2009 à 14:15
On Error Resume Next

permet de gérer les erreurs...
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
17 mars 2009 à 14:53
Private Sub Test
On Error Goto Handler
....
Exit Sub
Handler:
Msgbox "Une erreur " & err.number & " est survenue :" & vbnewline & _
Err.Description
End Sub
3
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
17 mars 2009 à 12:50
Bonjour,
Tu rajoute simplement un test.
Ta variable est-elle réinitialisée? Si oui à quelle valeur?
Sinon tu rajoute simplement

If num2 > 0 then 'dans le cas où elle est réinitialisée à 0
   If .SetFieldVal("num2", Nz(c, "")) = False Then
     Anzeige "AVERTISSEMENT", UebernahmeArt, InSatz.Fields!num2 & " num2:<" & InSatz.Fields!num2 & ">", Editor.GetLastError
   End If
end if

HellAngel777
<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
nuts_ben Messages postés 4 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 17 mars 2009
17 mars 2009 à 13:42
Merci pour ta réponsehellangel777,

En fait, la variable num2 correspond au nom d'une des colonnes de ma requête dans mon fichier Access. Cette colonne est amené ne pas être présente parfois. A ce moment là, le programme plante car il ne connait pas du num2.
Donc je n'initialise pas mes variables.

Je viens de voir qu'un erreur est présente dans mon premier code, je corrige :
<hr size= "2" width="100%" />
If .SetFieldVal("num2", Nz( InSatz.Fields!num2 , "")) = False Then
     Anzeige "AVERTISSEMENT", UebernahmeArt, InSatz.Fields!num2 & " num2:<" & InSatz.Fields!num2 & ">", Editor.GetLastError
End If
<hr size="2" width="100%" />
La partie en gras est justement ce qui fait planter le prog car le champ num2 n'existe pas... Je ne peux pas la tester à null car vu qu'elle n'existe pas, ça plante.
Ce qui me faudrait, c'est une fonction isExiste() !!

Quelqu'un à une idée?
Merci
0

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

Posez votre question
nuts_ben Messages postés 4 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 17 mars 2009
17 mars 2009 à 14:32
Voilà ce qu'il me fallait, c'est parfais... ça règle mon problème.
Par contre je me demandais si je pouvais savoir si une erreur est apparu et ou? Cela me serait utile pour faire un log.

Merci en tout cas!
0
nuts_ben Messages postés 4 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 17 mars 2009
17 mars 2009 à 15:00
Merci beaucoup Renfield!!
0
Rejoignez-nous