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

Messages postés
23
Date d'inscription
mercredi 1 juin 2005
Dernière intervention
28 février 2015
- - Dernière réponse : cs_CanisLupus
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
- 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

Meilleure réponse
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
3
Merci
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 !?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
3
Merci
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 !?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 104 internautes nous ont dit merci ce mois-ci

Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Dernière intervention
13 mars 2006
0
Merci
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 !?
Messages postés
23
Date d'inscription
mercredi 1 juin 2005
Dernière intervention
28 février 2015
0
Merci
MERCI ENORMEMENT !!!!!!!!!!!!
Messages postés
23
Date d'inscription
mercredi 1 juin 2005
Dernière intervention
28 février 2015
0
Merci
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.