Erreur d'exécution 94

[Résolu]
Signaler
Messages postés
23
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
28 février 2015
-
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
-
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.
A voir également:

5 réponses

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

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

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

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

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

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

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
17
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
Statut
Membre
Dernière intervention
28 février 2015

MERCI ENORMEMENT !!!!!!!!!!!!
Messages postés
23
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
28 février 2015

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.