{Access} Fonction VraiFaux

Résolu/Fermé
SliverPopop - 23 oct. 2009 à 09:21
 pat - 26 avril 2012 à 18:28
Bonjour,

J'ai dans une requête, ce champ là :

Nombre de FAIL: VraiFaux([CompteDePartNumber] Est Null;"0";[CompteDePartNumber])

Il m'affiche le bon résultat quand j'exécute ma requête, mais ya juste un petit problème, c'est que lorsque je lance ma requête, il m'affiche une boite de dialogue intitulée " Entrer une valeur de paramètre" avec comme nom au dessus du champ à remplir...... " Nombre de FAIL".
Je ne veux pas cette boite de dialogue, auriez-vous une solution, ou bien access ouvre-t-il obligatoirement une boite de dialogue avec la fonction VraiFaux...?

Merci de votre attention

SliverPopop

21 réponses

Bonjour

"Nombre de FAIL: " & VraiFaux(EstNull([CompteDePartNumber]) ;"0";[CompteDePartNumber])
devrait mieux marcher
0
Merci d'avoir pris le temps de répondre à cette question, ça réglé mon problème à moi !!!!!!!!! :))))
0
SliverPopop
23 oct. 2009 à 09:33
Je met ça dans le nom de mon champ lorsque je paramètre ma requête ?
0
SliverPopop
23 oct. 2009 à 09:36
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
0
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])
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SliverPopop
23 oct. 2009 à 09:58
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
0
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".
0
SliverPopop
23 oct. 2009 à 10:33
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 ??
0
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)
0
SliverPopop
23 oct. 2009 à 11:10
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
0
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 ?
0
SliverPopop
23 oct. 2009 à 11:46
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
0
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 :)
0
SliverPopop
23 oct. 2009 à 14:03
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
0
SliverPopop
23 oct. 2009 à 14:05
Pardon :

...............Testé quelques REQUETES...............


................J'ai juste renommé quelques CHAMPS........................


SliverPopop
0
SliverPopop
23 oct. 2009 à 14:13
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
0
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
0
SliverPopop
23 oct. 2009 à 14:50
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
0
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".
0
SliverPopop
23 oct. 2009 à 15:29
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
0
Merci encore de ton aide
De rien, mais alors là vraiment de rien. C'est toi qui as tout résolu.
Bon week end
0