IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Mauvais usage de null [AC-365]


Sujet :

VBA Access

  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut Mauvais usage de null
    Pourquoi le code qui suit ne me permet pas d'intercepter ce message ? Je sais que certain enregistrement de la requête ne contienne pas de courriel et c'est pourquoi j'ai écrit ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            Dim strSQL As String
            strSQL = "select * from reqEnvoiFactures where réfCommande =" & lngNoAuto & ";"
            Set rst = db.OpenRecordset(strSQL, dbOpenForwardOnly, dbReadOnly)
    '*****************************************************************************************************
            If rst.Fields("Courriel").Value = Null Then
                adMail = "jcarmi3265@hotmail.com"
            Else
                adMail = rst.Fields("Courriel").Value
            End If

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 189
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If rst.Fields("Courriel").Value = Null Then ...
    Null n'est pas une valeur, mais un marqueur pour l'absence de valeur, un champ ne peut donc être "égal à Null". Il faut plutôt écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(rst.Fields("Courriel").Value) Then ...
    Mais si ton champ autorise les chaînes vides, il peut aussi être égal à "", et on écrira :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If rst.Fields("Courriel").Value = "" Then ...
    Pour couvrir tous les cas ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if IsNull(rst.Fields("Courriel").Value) Or rst.Fields("Courriel").Value = "" Then ...

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Merci beaucoup pour votre prompte réponse; votre solution fonctionne très bien ... jusqu'à ce qu'un enregistrement contienne une adresse courriel valide.
    Le message Incompatibilité de type est généré par la ligne If IsNull...

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 189
    Billets dans le blog
    47
    Par défaut
    2è essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim courriel As Variant 
    courriel = rst.Fields("Courriel").Value 
     
    If IsNull(courriel) Or courriel = "" Then ...

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 956
    Par défaut
    bonsoir,
    pour faire simple, il y a aussi la formule classique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if rst.Fields("Courriel") & "" = "" Then ...
    mais à mon sens, d'après le message d'erreur (incompatibilité de type), le champ Courriel ne peut pas contenir de valeur nulle, juste une chaine vide

  6. #6
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 25
    Par défaut
    Merci, vos réponses m'ont permis de résoudre mon problème. C'est très apprécié.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Du mauvais usage de Reflection
    Par Danger dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 22/10/2009, 17h11
  2. [A-03] Mauvais usage Me! dans Module MergeIt
    Par emye3 dans le forum IHM
    Réponses: 31
    Dernier message: 29/10/2008, 14h15
  3. erreur: usage non valide du null
    Par Pau dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 10h41
  4. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo