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 :

passer une requete ajout avec des enregitrement null


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut passer une requete ajout avec des enregitrement null
    salut,

    voila g des requêtes de selection qui filtres sur un premier tableau (lier avec excel, il est mis a jour tous les jour) et me font la somme d'une colonne
    et des foi il n'y a pas d'enregistrement pour les filtre que je demande (mais pas a chaque foi, vu que cela change tout les jour) donc dans ma requête de selection il y a l'intituler de ma colonne et c'est tout !
    et lorsque j'utlilise une requête ajout pour remplire un autre tableau il ne veut pas car il y a des requête avec des enregistrement NULL

    donc est il possible d'initialiser une somme de requête de selection a '0' ?
    ou dans une requête ajout est t'il possible de lui fair ignorer les champs null

    merci

  2. #2
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Comme tu le supposes, je pense aussi que la 2ème soluce est la mieux, essaies d'éviter les enregistrements avec des valeurs nulles dnas la requête d'ajout en jouant sur 'Critères'.

    Salut,

  3. #3
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    ok
    mais comment peut-on lui dir dans une requête ajout
    "quant tu recupere d'une requête de selection la valeut NULL, tu met '0' " ?

  4. #4
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Pourrais-tu nous montrer ta requête d'ajout ?

  5. #5
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    voila une des requête de selection :
    SELECT Sum(STOCK.POIDS) AS SommeDePOIDS
    FROM STOCK
    GROUP BY STOCK.[OP SUIV#], STOCK.[ENGIN SUIV#], STOCK.[OP SUIV# BIS]
    HAVING (((STOCK.[OP SUIV#])=50) AND ((STOCK.[ENGIN SUIV#])="PRE") AND ((STOCK.[OP SUIV# BIS])=55));
    elle sont au nombre de 12 et toutes sur le meme principe

    et voici pour ma requête ajout :
    INSERT INTO ResultTable1 ( [Tonnages à passer], [PRE (50) 55], [PRE (50) 56], [PRE (50) 91], [PRE (50) 6x], [PRE (52) 55], [PRE (52) 56], [PRE (52) 91], [PRE (52) 6x], [PRH (52) 55], [PRH (52) 56], [PRH (52) 91], [PRH (52) 6x] )
    SELECT ResultTable1.[Tonnages à passer], R01_PRE50_55.SommeDePOIDS, R02_PRE50_56.SommeDePOIDS, R03_PRE50_91.SommeDePOIDS, R04_PRE50_6x.SommeDePOIDS, R05_PRE52_55.SommeDePOIDS, R06_PRE52_56.SommeDePOIDS, R07_PRE52_91.SommeDePOIDS, R08_PRE52_6x.SommeDePOIDS, R09_PRH52_55.SommeDePOIDS, R10_PRH52_56.SommeDePOIDS, R10_PRH52_91.SommeDePOIDS, R11_PRH52_6x.SommeDePOIDS
    FROM ResultTable1, R01_PRE50_55, R02_PRE50_56, R03_PRE50_91, R04_PRE50_6x, R05_PRE52_55, R06_PRE52_56, R07_PRE52_91, R08_PRE52_6x, R09_PRH52_55, R10_PRH52_56, R10_PRH52_91, R11_PRH52_6x;

  6. #6
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Ben moi je placerai le critère sur les 12 requêtes de sélection, à la source quoi !

    ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    SELECT Sum(STOCK.POIDS) AS SommeDePOIDS
    FROM STOCK 
    GROUP BY STOCK.[OP SUIV#], STOCK.[ENGIN SUIV#], STOCK.[OP SUIV# BIS]
    HAVING (((STOCK.[OP SUIV#])=50) AND ((STOCK.[ENGIN SUIV#])="PRE") AND ((STOCK.[OP SUIV# BIS])=55) AND Not Isnull(Stock.poids) )
    En général j'essaie toujours de créer un champ comme POIDS avec une valeur par défaut à Zéro, ça évite de se retrouver avec des valeurs nulles sur des champs numériques destinés à devoir subir des calculs quelques requêtes plus tard.

    Salut,

  7. #7
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    oui il y a des valeur par defaut a zero mais c que quand je fai mon filtre il y a auqu'un enrigistrement donc aucun champ est remplie, et ma requête ajout ne marche pas.
    et moi je voudrais que lorsque qu'il y a 0 enregistrement dans une requête, ma requête ajout me dis une ligne a ete ajouter et que la ou il y a pas d'enregistrement il y est 0
    mais le je bloque je c pas comment fair

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 911
    Points : 4 809
    Points
    4 809
    Par défaut
    Bonjour,

    ... et tout d'abord, penser à utiliser la fonction NZ() , voir l'aide.

  9. #9
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    [merci pour la fonction
    j'ai esseyer le mieux que j'ai trouver est cela mais sa ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Sum(STOCK!POIDS) Or Nz(STOCK!POIDS) AS tata
    FROM STOCK
    WHERE (((STOCK.[OP SUIV# BIS])=65 Or (STOCK.[OP SUIV# BIS])=66 Or (STOCK.[OP SUIV# BIS])=68))
    GROUP BY STOCK.[OP SUIV#], STOCK.[ENGIN SUIV#]
    HAVING (((STOCK.[OP SUIV#])=50) AND ((STOCK.[ENGIN SUIV#])="PRE"));

    il faut metre la fonction dans la reqûete ajout ou de selection ?
    mais lorsque un requête de selection ne trouve rien cela renvoit-il NULL ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Bonjour,

    J'ai bien l'impression qu'il faudrait repenser le problème.
    Si j'ai (et non g) compris tu as 12 sous requêtes que tu voudrais ajouter toutes en même temps.
    Je pense qu'il serait peut être plus judicieux de faire une requête d'ajout poid puis des requêtes mise à jour
    A+

  11. #11
    Membre actif
    Avatar de Trini
    Homme Profil pro
    Dresseur de puce
    Inscrit en
    Juillet 2005
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dresseur de puce

    Informations forums :
    Inscription : Juillet 2005
    Messages : 189
    Points : 264
    Points
    264
    Par défaut
    Bonjour,

    Pour la soluce avec Nz() c'est plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Sum( Nz(STOCK!POIDS) ) AS tata
    FROM STOCK
    ...
    Salut,

  12. #12
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    avec un requête MAJ on ne peut pas utiliser des donner qui sont contenu dans une autre table ?

  13. #13
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Bien sûr que c'est possible pour autant qu'il y ai un champs pour établir la liaison

  14. #14
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE ResultTable1, STOCK SET ResultTable1.[PRE (50) 6x] = Sum(Nz(STOCK!POIDS,0))
    WHERE (((STOCK.[OP SUIV#])=50) AND ((STOCK.[ENGIN SUIV#])="PRE") AND ((STOCK.[OP SUIV# BIS])=55));
    voila se que g fai (et se que je pensais etre juste, en fonction du forum et de 2 livres, je suis suis mise au access depuis une semaine desoler pour les questions, mais je suis totalement perdu)
    mais il me dit qu'il y a un probleme avec PRE (50) 6x et me parle de fonction d'agrégat.

  15. #15
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Je pense que tu dois d'abord tester tes requêtes avec le QBE avant de les écrire en VBA

    car ton code devrait avoir au moins un champ de liaison comme tonnage à passer etc..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE ResultTable1 Inner join ......  STOCK SET ResultTable1.[PRE (50) 6x] = Sum(Nz(STOCK!POIDS,0))
    WHERE (((STOCK.[OP SUIV#])=50) AND ((STOCK.[ENGIN SUIV#])="PRE") AND ((STOCK.[OP SUIV# BIS])=55));
    Ce qui serait intéressant c'est d'avoir ta structure du tableau excel avec exemple chiffre et ensuite ce que tu veux obtenir car j'ai l'impression que l'on va tourner en rond.

  16. #16
    Membre actif Avatar de LesLemmings
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 302
    Points : 243
    Points
    243
    Par défaut
    voila g trouver
    apres des ... beaucoup trop de requête.
    j'ai fini pas trouver !!!
    j'utilisais ,sous access 2003, le clique droit -> totaux puis je metais somme
    mais quand on utilise cette petit fonction et qu'il n'y a pas d'enregistrement il met rien, meme pas d'entregistrement vide.
    par contre si on utilise une fonction dans un champt annexte et bien là, si il ni a pas d'enregistrement c'est bon sa marche, il me met un enregistrement vide.

    merci a tous de votre aide
    j'ai beacoups appri avec vous

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

Discussions similaires

  1. Envoyer une requete http avec des sockets
    Par DavidleVrai dans le forum C++
    Réponses: 5
    Dernier message: 20/06/2012, 18h12
  2. Faire une requete complexe avec des conditions
    Par student_php dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2010, 10h09
  3. Réponses: 4
    Dernier message: 01/04/2009, 14h16
  4. [RegEx] Ecrire une requete INSERT avec des variables $_POST
    Par arnaudperfect dans le forum Langage
    Réponses: 10
    Dernier message: 13/06/2007, 15h12

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