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

Access Discussion :

somme d'une valeur non définie =0


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut somme d'une valeur non définie =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

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Voir la fonction Nz (Abréviation de Nul To Zero)

    http://www.developpez.net/forums/sho...d.php?t=326302

    Cordialement.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut
    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]

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour,
    Citation Envoyé par lolothom
    avec par exemple pour le champ totalc
    sourcecontrole: =[Détails commandes complets FOURNISSEURS1].[Formulaire]![soustotal]
    Ce "[soustotal]" n'a pas de problème et renvoie bien une valeur? (Si l'erreur est en amont "Nz" ne peut plus rien.)

    Cordialement.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut
    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 ?

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    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.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut
    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

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    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

    Citation Envoyé par lolothom
    source controle : = somme(heurespassees)
    dans le cas ou ce sous formulaire n'a pas d'enregistrement comment affecté totalh à 0
    Il 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.

    Cordialement.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut
    hello

    ouha quelle réponse

    bon je réexplique maintenant que je vois plus clair

    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.
    en fait mon problème est que je fais une somme de valeurs nulles car [heurespassees] est un résultat par filtrage formulaire .
    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 ?

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    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-->
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Nz([ChampDifficulte];0)
    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

    Cordialement

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut


    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 ?


  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Il semblerait qu'il soit inutile d'ajouter des champs. Essaies simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 278
    Points : 107
    Points
    107
    Par défaut
    hello

    en afit j'avais un projet depuis un an dan un coin de ma tete et vous me le faites bien avancé

    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
    EXACT !!!!!!!!


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

Discussions similaires

  1. Identifier une valeur non définie et comparaison
    Par r_systeme dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/02/2015, 10h16
  2. une variable non définie?
    Par Maxence45 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 25/11/2007, 12h23
  3. expresson reguliere recherche une valeur non presente
    Par mikebranque dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/05/2007, 16h13
  4. Contourner une expression non définie
    Par TicTac75 dans le forum Access
    Réponses: 3
    Dernier message: 20/02/2007, 18h52
  5. Réponses: 2
    Dernier message: 13/11/2006, 06h42

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