Erreur d'exécution 94 [Résolu]

bidule2409 23 Messages postés mercredi 1 juin 2005Date d'inscription 28 février 2015 Dernière intervention - 23 juin 2005 à 16:01 - Dernière réponse : cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention
- 24 juin 2005 à 19:50
Bonjour, dans mon code Access, je cela :

Dim db As DAO.DATABASE
Dim titre_responsable_lettre As DAO.Recordset
Dim res_titre As String

Set db = Application.CurrentDb
Set titre_responsable_lettre db.OpenRecordset("Select Genre from RESPONSABLES where RESPONSABLES!NOM_prenom '" & Me.Nom_du_contact & "'")

res_titre = titre_responsable_lettre("Genre")
Me.titre_resp = res_titre

Ce code me permet donc de récupérer une valeur d'une table selon la valeur d'un champ de mon formulaire.
La valeur se met bien dans la zone de texte spécifiée, mais si la valeur est nulle, j'ai un message d'erreur :
Erreur d'exécution 94 : utilisation incorrecte de Null.

Comment puis-je y remédier sans devoir saisir une valeur où il en manque dans la table.
Merci.
Afficher la suite 

5 réponses

cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 23 juin 2005 à 19:14
+3
Utile
Oups, j'ai mis un not de trop :

if isnull(titre_responsable_lettre("Genre")) then
res_titre = "" 'ou ce que tu veux
else
res_titre = titre_responsable_lettre("Genre")
endif

Me.titre_resp = res_titre

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Cette réponse vous a-t-elle aidé ?  
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 24 juin 2005 à 19:50
+3
Utile
Déjà, y a-t-il des enregistrements dans la table répondant au critère de la requête ?

Si oui, il va falloir revoir la requête.
Si non, avant le if isnull.... il va falloir tester si le recordset contient des enregistrements :

if not devis_lettre.eof then ....

De toutes façons, dans tous les cas, il vaut mieux tester si la requête a remonté un résultat avant de l'exploiter pour éviter les plantages.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Cette réponse vous a-t-elle aidé ?  
cs_CanisLupus 3758 Messages postés mardi 23 septembre 2003Date d'inscription 13 mars 2006 Dernière intervention - 23 juin 2005 à 19:13
0
Utile
Salut,

if not isnull(titre_responsable_lettre("Genre")) then
res_titre = "" 'ou ce que tu veux
else
res_titre = titre_responsable_lettre("Genre")
endif

Me.titre_resp = res_titre

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
bidule2409 23 Messages postés mercredi 1 juin 2005Date d'inscription 28 février 2015 Dernière intervention - 24 juin 2005 à 09:43
0
Utile
MERCI ENORMEMENT !!!!!!!!!!!!
bidule2409 23 Messages postés mercredi 1 juin 2005Date d'inscription 28 février 2015 Dernière intervention - 24 juin 2005 à 17:28
0
Utile
Euh, en fait, j'ai un dernier petit problème.
J'ai fait la même manip, mais avec dans le "where" de la requête, une comparaison d'integer.
Et le code suivant ne marche pas :
Set devis_lettre db.OpenRecordset("Select [sujet] from [BESOINS EXPRIMES] where [BESOINS EXPRIMES]![N°affaire] " & Me.[N°affaire] & "")

sujet est en string, et les 2 N°affaire en entier.

Si je laisse tel quel, il me redonne une erreur 94.
Si je rajoute :
If IsNull(sujet_lettre("Sujet")) Then
res_sujet = ""
Else
res_sujet = sujet_lettre("Sujet")
End If
Me.sujet_l = res_sujet

Il me dit : "Pas d'enregistrement courant" à l'ouverture du formulaire.
Avez-vous une idée de la solution ????
Merci d'avance.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.