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

Requêtes et SQL. Discussion :

[Requête Création] Problèmes changement de propriété avec fonction VraiFaux


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [Requête Création] Problèmes changement de propriété avec fonction VraiFaux
    Bonjour tout le monde.
    Tout d'abord je suis un peu débutant avec Access 2003 donc je peut peut-être utilisé des termes qui ne sont pas tout à fait correctes, je m'en excuse.

    Voici mon prolème:

    Dans le champs (appelons le Fonction) d'une requête création (dont l'image (j'espère) est plus bas)) j'utilise une fonction VraiFaux. Cepandant, dans la table ainsi créée, cette fonction vas modifier les propriétés des enregistrements vide d'un autre champs (appelons le Nom).
    Ainsi, si dans ma fonction vraifaux je fais référence à un champ d'une table (appelons la Tab_01), peu importe où, que ce soit dans l'évaluation de l'expression, expression si vrai ou expression si faux, la propriété des enregistrement vide du champ Nom vas être initialisé à une chaîne de caractère vide (donc, dans la table créée, si lors d'une requête sélection je fais un filtre avec "" sur le champ Nom, j'aurais un résultat, tandis que si je filtre sur Est Null, je n'en aurais pas).
    Or, si dans ma fonction vraifaux, je ne fais pas référance à un champ (par exemple: vraifaux(Faux;"Vrai";"Faux")), les propriétés des enregistrements vide du champ Nom vont être initialisés à Null. Et donc, lorsque je fais une requête sélection sur la table créée, si je filtre avec "" sur le champ Nom je n'aurais plus de résultats, mais avec Est Null j'en aurais.

    Merci de bien vouloir m'éclairer sur le comment du pourquoi d'une tel différence.

    Voici un printscreen de ma requête pour plus de compréhension (si ceci n'été pas claire ^^):




    Bonne journée à toutes et tous

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut saitan007 et bienvenu,

    les termes choisi son vraiment pas approprié 'fonction', 'nom'... il faut toujours éviter les ambiguïtés. pour avoir plus de réponses il faut être simple et clair: ce que j'ai, ce que je veux.

    si tu as des pb avec la nullité, ça se soigne avec Nz().


  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse vodiem. J'ai réussi à corriger mon problème de nullité en initialisant le champ N° de client à Null si l'enregistrement est vide comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VraiFaux([ADR_ADRKEY]=Gauche([ADR_ADRKEY];7); Null;ExtracChaîne([ADR_ADRKEY];8;7))
    (A noter ADR_ADR_KEY contient au moins 7 positions (le numéro de magasin) et peut contenir en plus 7 autre position (le numéro de client) Ainsi, si il n'y a pas de N° de client, le champ est initialisé à null


    Mais il me reste toujours à comprendre d'où viens le problème... Même si j'ai réussi à le résoudre, pour la suite il me faut comprendre pourquoi il y a eu ce problème et d'où il vient, ainsi je pourrais éviter ce genre d'erreur une prochaine fois

    Par exemple, si l'erreur se produit avec une autre fonction que vraifaux, par exemple gauche (même si ce n'est pas le cas, j'ai testé), cela me permettras de prendre des mesures en utilisant cette fonction.

    Pour résumé, il me faudrais savoir l'explication de cette erreur pour éviter qu'elle ne se reproduise à l'avenir.

    Merci de vos explications éclairées ^^

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Il faut déjà comprendre la différence entre NULL et VIDE.

    NULL n'est pas une valeur mais justement l'absence de valeur.
    Le NULL est donc un marqueur d'absence.
    (Je me répéte, non ?)

    Lorsque vous aurez donc le marqueur NULL par défaut si vous utilisez = "" cela ne fonctionnera pas.


  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Effectivement, je connais la différence entre Null et une chaîne de caractère vide. le problème ne viens pas de là. En effet, la fonction que j'ai donnée (VraiFaux([ADR_ADRKEY]=....) été pour résoudre mon problème, donc une résolu je n'ai plus ce problème de différence entre le fait de filtrer avec "" ou Est Null.


    Mon problème se situe dans le faite que quand j'utilise la fonction VraiFaux avec à une référance à un champ (par exemple VraiFaux([MonChamp]=1;"Vrai";"Faux"), ou encore VraiFaux(1<2;"Vrai";[MonChamp]) celle-ci indiqueras toujours "Vrai") les enregistrement vide du champ Nom sont initialisé avec une chaîne de caractère vide (donc en filtrant avec "" j'ai des résultats, mais pas avec Est Null).

    Or si dans ma fonction VraiFaux je ne fais pas référance à un champ (par exemple: VraiFaux("Hello"="World";"Vrai";"Faux") donc ce seras toujours Faux), les enregistrement vide du champ Nom sont initialisé avec Null (donc en filtrant avec "" je n'ai pas de résultat, mais avec Est Null, j'en ai).


    Ce que j'aimerais comprendre, c'est d'où peut venir une telle différence? pourquoi en faisant appel à un champ dans un VraiFaux il y aurais une différence par rapport à si on n'en fait pas appel (humm... peut-etre pas très français cette phrase ^^')...

    J'ai testé en mettant un champ à la place de la fonction VraiFaux (par exemple au lieux d'avoir VraiFaux(... juste avoir [MonChamp]) et ça initialise les enregistrement vide du champ Nom à Null.

    Donc la différence apparaît bien lorsque l'on combine la fonction VraiFaux et une référance à un champ....


    Peut-etre un peu plus claire? j'espère ^^'

    Encore merci de vos réponses ^^

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/08/2011, 11h38
  2. [XL-2007] [C#] Création d'un Name Range avec fonction DECALER
    Par ghosty177 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2011, 11h26
  3. Problème indice de ligne avec fonction Large
    Par julio44 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 22/07/2011, 15h49
  4. Réponses: 7
    Dernier message: 12/06/2011, 08h14
  5. problème de copié-collé avec fonction RECHERCHEV
    Par vatsyayana dans le forum Excel
    Réponses: 4
    Dernier message: 10/02/2009, 00h43

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