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

Macros et VBA Excel Discussion :

Variable Null avec MySQL + ADODB [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut Variable Null avec MySQL + ADODB
    Bonjour,

    je récupère des données depuis une base MySQL via une connexion ADODB (DRIVER={MySQL ODBC 3.51 Driver}).
    A présent, j'essaye de remplacer les données de valeur Null en "" (vide).
    Le problème se pose avec un champ de type TEXT sous MySQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim nom As String
    Dim memo As String
     
    If Not IsNull(rst.Fields("mom").Value) Then mom = rst.Fields("mom").Value
    If Not IsNull(rst.Fields("memo").Value) Then memo = rst.Fields("memo").Value
    J'obtiens le message d'erreur :
    Erreur d'exécution '94':
    Utilisation incorrecte de Null
    sur le code : memo = rst.Fields("memo").Value

    Que faire pour y remédier ?
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    as-tu essayé avec Nz() ?

  3. #3
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    Salut et merci pour ta réponse, mais d'après mes recherches, il n'existe pas de fonction Nz() dans VBA-Excel 2003...
    Aussi, j'ai testé ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memo = Nz(rst.Fields("memo").Value)
    provocant une erreur.


  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    il reste le classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    truc = iif( rst.Fields("Memo") & "" <> "", rst.Fields("Memo"), "")

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    Merci, je ne connaissais pas IIf !

    par contre, cela ne marche toujours pas...
    Le code suivant affecte la valeur "1" (=Null) à memo alors que c'est contradictoire avec le test IIf !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim memo As String
    memo = IIf(IsNull(rst.Fields("memo").Value), "NUUUUUUUULLLLLL", VarType(rst.Fields("memo").Value))
    Avez-vous une explication ?

    Merci

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    pas d'explication ?....

    cafeine > pourrais-tu m'expliquer la syntaxe deu test :Merci d'avance.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    Pourquoi t'essaye pas de gérer les null dans ta requête ?

    Car une fois je voulais faire la meme chose que toi et dans le SELECT de ma requête je mettais des "coalesce" pour que quand il trouve un NULL il me mette la valeur que je voulais.
    Par contre j'utilisais MS SQL server donc je sais pas si "coalesce" fonctionne avec MySQL.

    Dis moi si j'ai pas été assez clair ou que ça n'a aucun rapport.

    Ciao!

  8. #8
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    je connaissais pas... merci pour l'info
    je regarde ça.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 32
    Par défaut
    J'ai trouvé ça ici

    COALESCE(list)

    Retourne le premier élément non-NULL de la liste :

    mysql> SELECT COALESCE(NULL,1);
    -> 1
    mysql> SELECT COALESCE(NULL,NULL,NULL);
    -> NULL

  10. #10
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Par défaut
    c'est bon ça marche....
    d'après mes tests, ça ne ralentit pas trop la requête.

    merci à tous !

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

Discussions similaires

  1. [PHPMyAdmin]Problème avec "Not Null" dans mysql 5
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/12/2005, 15h45
  2. Help ODBC avec Mysql
    Par Ashura75013 dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/02/2004, 09h11
  3. Probleme avec Mysql
    Par kevinss dans le forum Administration
    Réponses: 5
    Dernier message: 31/10/2003, 11h43
  4. Cacher Variable Url avec Variable Globale
    Par danuz dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/09/2003, 18h20
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 14h52

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