{Access} Fonction VraiFaux
Résolu/Fermé21 réponses
Bonjour
"Nombre de FAIL: " & VraiFaux(EstNull([CompteDePartNumber]) ;"0";[CompteDePartNumber])
devrait mieux marcher
"Nombre de FAIL: " & VraiFaux(EstNull([CompteDePartNumber]) ;"0";[CompteDePartNumber])
devrait mieux marcher
Cela ne fonctionne pas.
En fait, " Nombre de FAIL", c'est le nom de mon champ qui s'affiche avec le résultat de la requête.
Je voulais savoir si la fonction VraiFaux implique obligatoirement l'ouverture d'une boite de dialogue qui me demande une valeur de paramètre.
Merci
SliverPopop
En fait, " Nombre de FAIL", c'est le nom de mon champ qui s'affiche avec le résultat de la requête.
Je voulais savoir si la fonction VraiFaux implique obligatoirement l'ouverture d'une boite de dialogue qui me demande une valeur de paramètre.
Merci
SliverPopop
Non, la fonction VraiFaux n'implique aucune ouverture de boite. Ce qui en implique, c'est l'apparition d'un symbole inconnu que access prend pour une variable. Si Nombre de Fail est un champ, il devrait être entre [] car il comporte des espaces, et dans tous les cas, il doit être concaténé avec le reste :
[Nombre de FAIL] & " : " & VraiFaux(EstNull([CompteDePartNumber]) ;"0";[CompteDePartNumber])
[Nombre de FAIL] & " : " & VraiFaux(EstNull([CompteDePartNumber]) ;"0";[CompteDePartNumber])
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Zut, tu ne dois pas comprendre ce que je veux dire.... :-)
En fait, 'Nombre de FAIL' est simplement un titre qui s'affiche dans un champ du résultat de ma requête.
J'explique mieux.
J'ai créé une requête qui :
-me demande une date de début
-me demande une date de fin
-me demande un PARTNUMBER
-et affiche : la date de début, la date de fin, le PARTNUMBER, le nombre de PASS, le nombre de FAIL, la somme des PASS et FAIL, le % de FAIL par rapport au total.
Quand je suis dans le mode 'modifier' de ma requête,dans la colonne 'Nombre de FAIL' ( qui est simplement un nom, j'aurai pu mettre par exemple, euh..... ' 1 2 3 soleil'), sur la ligne champ, j'ai mis " Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber]) ". Ce qu'il y a avant les " : " est simplement le nom du champ de ma requête.
Si j'avais mis "1 2 3 Soleil: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])", lors de l'exécution de ma requête, il m'ouvrirai une boite de dialogue : " entrer une valeur de paramètre et ensuite " 1 2 3 Soleil" ( et après la zone de texte ou je dois normalement rentrer la valeur de paramètre).
Je ne veux pas de cette boite de dialogue !!!!!!
As-tu compris ce que je voulais dire......?
Merci de ton aide
SliverPopop
En fait, 'Nombre de FAIL' est simplement un titre qui s'affiche dans un champ du résultat de ma requête.
J'explique mieux.
J'ai créé une requête qui :
-me demande une date de début
-me demande une date de fin
-me demande un PARTNUMBER
-et affiche : la date de début, la date de fin, le PARTNUMBER, le nombre de PASS, le nombre de FAIL, la somme des PASS et FAIL, le % de FAIL par rapport au total.
Quand je suis dans le mode 'modifier' de ma requête,dans la colonne 'Nombre de FAIL' ( qui est simplement un nom, j'aurai pu mettre par exemple, euh..... ' 1 2 3 soleil'), sur la ligne champ, j'ai mis " Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber]) ". Ce qu'il y a avant les " : " est simplement le nom du champ de ma requête.
Si j'avais mis "1 2 3 Soleil: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])", lors de l'exécution de ma requête, il m'ouvrirai une boite de dialogue : " entrer une valeur de paramètre et ensuite " 1 2 3 Soleil" ( et après la zone de texte ou je dois normalement rentrer la valeur de paramètre).
Je ne veux pas de cette boite de dialogue !!!!!!
As-tu compris ce que je voulais dire......?
Merci de ton aide
SliverPopop
Donc j'avais bien compris quand j'ai fait ma réponse n° 1.
Je suis étonné que ça ne marche pas, je l'ai essayé avant de poster. Tu avais bien mis les " " aussi ? Si oui, il n'y a aucune raison qu'il t'ouvre une boîte de dialogue te demandant de remplir le "champ nombre de FAIL".
Je suis étonné que ça ne marche pas, je l'ai essayé avant de poster. Tu avais bien mis les " " aussi ? Si oui, il n'y a aucune raison qu'il t'ouvre une boîte de dialogue te demandant de remplir le "champ nombre de FAIL".
Il me pose toujours la question, mais il me la pose au début ( avant les deux demandes de dates).
Je suis perdu.
Comment lui dire que "Nombre de FAIL" est simplement le nom d'un champ et non le nom d'une variable inconnue ??
Je suis perdu.
Comment lui dire que "Nombre de FAIL" est simplement le nom d'un champ et non le nom d'une variable inconnue ??
S'il te pose toujours la question , c'est sans doute que tu as ailleurs un champ avec Nombre de Fail qui n'est pas entre guillemets
Sinon, il y a un truc qui me chagrine : à quel type de champ est associée cette formule ? pour moi, les formules apparaissent dans les propriétés, onglet données, ligne source contrôle. Je ne vois pas la ligne champ dans laquelle tu mets ta formule (access 2003)
Sinon, il y a un truc qui me chagrine : à quel type de champ est associée cette formule ? pour moi, les formules apparaissent dans les propriétés, onglet données, ligne source contrôle. Je ne vois pas la ligne champ dans laquelle tu mets ta formule (access 2003)
C'est une requête, et non un formulaire (pas d'onglet donnée, ni ligne source contrôle dans les propriété d'un champ de requête).
Cette formule est rentrée dans le nom du champ, lors de la création de ma requête.
Une autre idée....??
Merci de ton aide
SliverPopop
Cette formule est rentrée dans le nom du champ, lors de la création de ma requête.
Une autre idée....??
Merci de ton aide
SliverPopop
Je viens d'essayer sur une requête, dans la ligne code :-)
Ça marche très bien
Quand on saisit la formule, Access ajoute Expr1:
Peux tu copier-coller ce qu'il y a dans la ligne "champ" qui t'embête ?
Es-tu bien sûr que "Nombre de fail" n'apparaît pas dans un autre champ ?
Ça marche très bien
Quand on saisit la formule, Access ajoute Expr1:
Peux tu copier-coller ce qu'il y a dans la ligne "champ" qui t'embête ?
Es-tu bien sûr que "Nombre de fail" n'apparaît pas dans un autre champ ?
J'ai bien une autre requête qui utilise celle ci et notamment le champ ' Nombre de FAIL' ( en plus, il me repose la question quand j'exécute cet autre requête....).
D'accord à propos du fait qu'il rajoute " Expr1".
Je pense que c'est celle-ci qui m'embête :
Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])
Tu dois avoir raison sur le fait que l'expression " Nombre de FAIL " soit utilisée ailleurs, parce que finalement quand je change " Nombre de FAIL" dans :
Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber]),
Il me pose toujours cette question....
Pfiou j'avoue que ça me prend bien la tête.....
Je vais aller manger ( parce que..... Quand l'appétit va, tout va...), et puis je reviens après.
Merci encore de ton aide et bon appétit à toi.
SliverPopop
D'accord à propos du fait qu'il rajoute " Expr1".
Je pense que c'est celle-ci qui m'embête :
Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])
Tu dois avoir raison sur le fait que l'expression " Nombre de FAIL " soit utilisée ailleurs, parce que finalement quand je change " Nombre de FAIL" dans :
Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber]),
Il me pose toujours cette question....
Pfiou j'avoue que ça me prend bien la tête.....
Je vais aller manger ( parce que..... Quand l'appétit va, tout va...), et puis je reviens après.
Merci encore de ton aide et bon appétit à toi.
SliverPopop
En fait la formule telle que tu l'as écrite marche très bien dans une requête. Je viens de la copier coller chez moi et pas de soucis.
Donc ton problème provient certainement d'un autre champ. Ou d'un critère ?
Je vais manger moi aussi :)
Donc ton problème provient certainement d'un autre champ. Ou d'un critère ?
Je vais manger moi aussi :)
Re,
Après avoir bien mangé, j'ai réfléchi un peu et puis j'ai testé quelques, et par je ne sais quel hasard, j'ai réussi à enlever 2 des 4 questions suplémentaires que access me posait à l'ouverture de ma requête.
J'ai juste renommer quelques, revus un petit peu les liens, bref un petit nettoyage de mes requêtes :-).
Je continu de regarder tout ça et je te tiens au couratn de mon avancé.
A tout à l'heure, et merci encore
SliverPopop
Après avoir bien mangé, j'ai réfléchi un peu et puis j'ai testé quelques, et par je ne sais quel hasard, j'ai réussi à enlever 2 des 4 questions suplémentaires que access me posait à l'ouverture de ma requête.
J'ai juste renommer quelques, revus un petit peu les liens, bref un petit nettoyage de mes requêtes :-).
Je continu de regarder tout ça et je te tiens au couratn de mon avancé.
A tout à l'heure, et merci encore
SliverPopop
Pardon :
...............Testé quelques REQUETES...............
................J'ai juste renommé quelques CHAMPS........................
SliverPopop
...............Testé quelques REQUETES...............
................J'ai juste renommé quelques CHAMPS........................
SliverPopop
Encore moi,
Je suis à présent sur que la boite " Nombre de FAIL " provient de la synthaxe de cette expression :
Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])
car je viens de remplacer " Nombre de FAIL " par " Expr4 " et il me pose cette même question mais avec " Expr4 ".
La nouvelle expression est donc :
Expr4: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber]).
Par conséquent, pourrais-tu me redonner une synthaxe qui te semble juste, en m'expliquant pourquoi celle-ci et plutôt qu'une autre (J'avoue avoir essayé les précédentes sans trop comprendre ce que j'écrivais......honte à moi.......)
Merci encore de ton aide.
SliverPopop
Je suis à présent sur que la boite " Nombre de FAIL " provient de la synthaxe de cette expression :
Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])
car je viens de remplacer " Nombre de FAIL " par " Expr4 " et il me pose cette même question mais avec " Expr4 ".
La nouvelle expression est donc :
Expr4: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber]).
Par conséquent, pourrais-tu me redonner une synthaxe qui te semble juste, en m'expliquant pourquoi celle-ci et plutôt qu'une autre (J'avoue avoir essayé les précédentes sans trop comprendre ce que j'écrivais......honte à moi.......)
Merci encore de ton aide.
SliverPopop
Je ne comprends pas non plus, quand je recopie texto ta requête, ça me de mande la valeur de CompteDePartNumber, normal, si je remplace par un nom de champ qui existe bien dans ma table, tout est OK. Il doit y avoir autre chose
Peux tu afficher ta requête en mode SQL et la coller ici pour voir ce qu'il y a d'autre ? Je pourrai ainsi recréer toutes tes conditions
Peux tu afficher ta requête en mode SQL et la coller ici pour voir ce qu'il y a d'autre ? Je pourrai ainsi recréer toutes tes conditions
Bien sur, le voici :
SELECT 'PASS' avec intervalle.Date, 'PASS' avec intervalle.PARTNUMBER, 'PASS' avec intervalle.[Nombre de cartes] AS [Nombre de PASS], IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]) AS Expr4, IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]+[Nombre de cartes]) AS Expr5, [Expr4]/[Expr5]*100 AS [% de défauts]
FROM 'FAIL' avec intervalle INNER JOIN 'PASS' avec intervalle ON ('FAIL' avec intervalle.Date = 'PASS' avec intervalle.Date) AND ('FAIL' avec intervalle.PartNumber = 'PASS' avec intervalle.PARTNUMBER)
GROUP BY 'PASS' avec intervalle.Date, 'PASS' avec intervalle.PARTNUMBER, 'PASS' avec intervalle.[Nombre de cartes], IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]), IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]+[Nombre de cartes]), [Expr4]/[Expr5]*100
HAVING ((('PASS' avec intervalle.Date)>=[DateDebut] And ('PASS' avec intervalle.Date)<=[DateFin]) AND (('PASS' avec intervalle.PARTNUMBER)=[PN?]));
Cette requête s'appuie ell-même sur une autre requête, et encore une.
J'espère que tu vas pouvoir m'éclairer.
SliverPopop
SELECT 'PASS' avec intervalle.Date, 'PASS' avec intervalle.PARTNUMBER, 'PASS' avec intervalle.[Nombre de cartes] AS [Nombre de PASS], IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]) AS Expr4, IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]+[Nombre de cartes]) AS Expr5, [Expr4]/[Expr5]*100 AS [% de défauts]
FROM 'FAIL' avec intervalle INNER JOIN 'PASS' avec intervalle ON ('FAIL' avec intervalle.Date = 'PASS' avec intervalle.Date) AND ('FAIL' avec intervalle.PartNumber = 'PASS' avec intervalle.PARTNUMBER)
GROUP BY 'PASS' avec intervalle.Date, 'PASS' avec intervalle.PARTNUMBER, 'PASS' avec intervalle.[Nombre de cartes], IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]), IIf([CompteDePartNumber] Is Null,"0",[CompteDePartNumber]+[Nombre de cartes]), [Expr4]/[Expr5]*100
HAVING ((('PASS' avec intervalle.Date)>=[DateDebut] And ('PASS' avec intervalle.Date)<=[DateFin]) AND (('PASS' avec intervalle.PARTNUMBER)=[PN?]));
Cette requête s'appuie ell-même sur une autre requête, et encore une.
J'espère que tu vas pouvoir m'éclairer.
SliverPopop
Ouh la la ! c'est bien compliqué... As-tu une idée de ce que veut dire ce 'avec' qu'on retrouve dans tes champs de SELECT ? Je ne connais pas ce mot en SQL et mon access le refuse vigoureusement avec une erreur "opérateur absent dans l'expression "'PASS avec intervalle.Date".
Tadam, j'ai réussi !!!!!
J'ai renommé tout cela bien comme il fallait, et puis tout est tranquillement rentré dans l'ordre.
Merci encore de ton aide.
Je met ce post comme résolu.
SliverPopop
J'ai renommé tout cela bien comme il fallait, et puis tout est tranquillement rentré dans l'ordre.
Merci encore de ton aide.
Je met ce post comme résolu.
SliverPopop
26 avril 2012 à 18:28