j'ai un champ isomtotal indépendant qui fait la somme d'un autre champ montant . Mon pb : il y a des enregistrements ou le champ montant est vide et du coup somtotal génère une erreur
je voudrai que lorsque montant est vide, somtotal=0
j'ai un champ isomtotal indépendant qui fait la somme d'un autre champ montant . Mon pb : il y a des enregistrements ou le champ montant est vide et du coup somtotal génère une erreur
je voudrai que lorsque montant est vide, somtotal=0
Bonsoir,
Voir la fonction Nz (Abréviation de Nul To Zero)
http://www.developpez.net/forums/sho...d.php?t=326302
Cordialement.
bonjour
celà ne marche pas
voici mon calcul :
nom du champ indépendant : totalcharge
source controle : =Nz([totalmo];0)+Nz([totalc];0)+Nz([totalf];0)
avec par exemple pour le champ totalc
sourcecontrole: =[Détails commandes complets FOURNISSEURS1].[Formulaire]![soustotal]
Bonjour,
Ce "[soustotal]" n'a pas de problème et renvoie bien une valeur? (Si l'erreur est en amont "Nz" ne peut plus rien.)Envoyé par lolothom
Cordialement.
bonsoir
en fait soustotal correspond à un total de commandes fournisseurs mais lorsque il n'y a pas de commandes soustotal est vide
quelle peut être la solution ?
Bonsoir,
Applique lui la fonction Nz et si ça ne fonctionne pas sur lui il faut le faire en amont. Il faut que chaque champ affiche au moins 0. Si tu te retrouves avec 1 + "" Résultat=Erreur.
Cordialement.
bon ben je remonte
j'ai un sous formulaire detailheure ou il y a un champ heurespasses et un champ totalh suivant
source controle : = somme(heurespassees)
dans le cas ou ce sous formulaire n'a pas d'enregistrement comment affecté totalh à 0
Bonjour,
On va reprendre à la base. Il est essentiel de comprendre ce genre de fonction.Cet apprentissage est la porte ouverte à toutes les autres fonctions.
Ta demande n'est pas isolée et on la retrouve assez souvent sur ce forum. J'avais répondu d'une façon relativement complète il y a quelque temps mais je ne retrouve pas la discussion. Cette fois je place le lien de côté.
Un champ non renseigné prend la valeur Null dans Access.
Cette valeur se propage dans un calcul-->Une seule valeur Null suffit dans ce calcul pour que le résultat soit égal à Null.
Première façon d'empêcher ce phénomène :
Au niveau de la table donner à la propriété du champ Null interdit-->Oui
Ceci n'est pas toujours possible.
Nous aurons donc besoin de transformer une valeur Null en autre chose.
Souvent 0 pour les nombres et chaîne vide "" pour le texte.
La fonction de conversion Nz() prévue à cet effet s'écrit -->
Nz(LeChampNull;ValeurDeRemplacement)=Si mon champ est vide affiche une valeur de remplacement.
LeChampNull = Un champ de table ou une zone de saisie indépendante de formulaire.
ValeurDeRemplacement = Valeur à afficher à la place de LeChampNull si ce dernier est vide.
Ce second paramètre peut ne pas être indiqué. En cette hypothèse
ValeurDeRemplacement prend une valeur par défaut -->0 pour du numérique et ""
pour du texte. Sauf, (toujours une exception à la règle) —>Nz(A+B). Auquel on préférera-->Nz(A+B;0)Et mieux-->Nz(A;0)+Nz(B;0)
On emploiera souvent Nz pour du texte dans ce genre de situation :
En stock : Nz([NbrBottes];"En rupture")
Exemple de propagation de Null dans les calculs :
A+B-------->Si A=Null et B=5 Résultat--> Null
A+B-------->Si A=5 et B=Null Résultat--> Null
Nz(A;0)+B-->Si A=5 et B=Null Résultat--> Null
A+Nz(B;0)-->Si A=Null et B=5 Résultat--> Null
**********************************************
Nz(A;0)+B-->Si A=Null et B=5 Résultat--> 5
A+Nz(B;0)-->Si A=5 et B=Null Résultat--> 5
**********************************************
Nz(A;0)+Nz(B;0)-->Si A=5 et B=Null Résultat--> 5
Nz(A;0)+Nz(B;0)-->Si A=Null et B=5 Résultat--> 5
Nz(A+B;0)-->Si A=Null et B=5 Résultat--------> 0
Il faut, dés le premier calcul avoir un résultat.Envoyé par lolothom
0 est un résultat. =Nz(Somme([heurespassees]);0)
Evidemment il ne faut pas que [heurespassees] soit le résultat d'un calcul qui engendre déjà une erreur.
Cordialement.
hello
ouha quelle réponse
bon je réexplique maintenant que je vois plus clair
en fait mon problème est que je fais une somme de valeurs nulles car [heurespassees] est un résultat par filtrage formulaire .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 l faut, dés le premier calcul avoir un résultat. 0 est un résultat. =Nz(Somme([heurespassees]);0) Evidemment il ne faut pas que [heurespassees] soit le résultat d'un calcul qui engendre déjà une erreur.
Mais lorsque ke filtrage obtenu est vide, il n'y a aucun enregistrement lié à heures passées donc [heurespassees] est vide
j'ai donc un pb de conception mais comment faire ?
Bonsoir,
Il est possible de contourner le problème.
Dans la requête ou est le ChampDifficulte on ajoute un champ--> ChampSolution avec pour source-->Les calculs se feront sur ce dernier champ qui peut être invisible sur le formulaire. Si des difficultées se présentent de nouveau, envoies ta requête avec la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part =Nz([ChampDifficulte];0)
Cordialement
la relation entre lesz deux tables n'étaient pas bonnes
donc les champs en cause hfin et hdebut
j'ai donc créé hfin1 : nz(hfin;0) idem pour hdebut
je peux donc faire la difference hfin1-hdebut1 ---->non nul =0
et faire la somme dans une autre requete ---------->non nul =0
j'ai bon ?
![]()
![]()
![]()
![]()
![]()
![]()
Bonsoir,
Il semblerait qu'il soit inutile d'ajouter des champs. Essaies simplement :
Par contre c'est super de voir ton enthousiasme. Si c'est résolu n'oublie pas le tag.
Code : Sélectionner tout - Visualiser dans une fenêtre à part heurespassees:Nz([hdebut];0)-Nz([hfin];0)
Cordialement
hello
en afit j'avais un projet depuis un an dan un coin de ma tete et vous me le faites bien avancé
EXACT !!!!!!!!Bonsoir,
Il semblerait qu'il soit inutile d'ajouter des champs. Essaies simplement :
Code :
heurespassees:Nz([hdebut];0)-Nz([hfin];0)
Par contre c'est super de voir ton enthousiasme. Si c'est résolu n'oublie pas le tag.
Cordialement
![]()
![]()
![]()
![]()
![]()
Partager