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 :

Compter les enregistrements


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Compter les enregistrements
    Salut!
    J'essaye d'utiliser la fonction Dcount/CpteDom pour pouvoir renvoyer dans une table le décompte d'évènements d'une autre table qui corresondent à un critère mais quelquechose doit m'échapper...

    Ma table de donnée principale est "D"
    Le champs surlequel s'applique le critère est "Time days"
    et les deux champs destinations de ma requête se trouvent dans la table "compteD". Ils s'appellent "sup5" et "inf6". Le premier est censé déterminer le nombre d'enregistrements pourlequel Time days est supérieur à 5 et le deuxième celui pour lequel TimeDays est inférieur ou égal à 5 (inférieur à 6).

    Dans ma requête mise à jour, j'ai
    CpteDom("[Time days]";"D";"[Time days]>5")
    dans la mise à jour pour sup5

    et

    CpteDom("[Time days]";"D";"[Time days]<6")
    dans la mise à jour pour inf6


    A ma grande surprise, quand je lance la requête, tout semble fonctionner, mais le message de réécriture m'avertit qu'il va modifier 0 lignes... qu'il fait rien quoi.

    Je ne vois vraiment pas d'où vient le problème. Merci d'avance si vous avez une idée^^

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    et si tu faisais une bonne vieille requête SQL ?
    Du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Count(*) from D WHERE [Time Days] > 5

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Je viens de comprendre déjà qu'à la base, ma commande ne veut rien dire, puisque je demande de remplir une table alors que ce que je souhaite ce ne sont que deux chiffres.
    Il faudrait donc peut être passer par autre chose qu'une requête.

    Je veux bien utiliser cette requête SQL, mais comment spécifier alors que je souhaite mettre ce résultat dans une case bien précise de ma table?

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    Tu fais une requête de mise à jour comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE compteD
    SET sup5 = (SELECT Count(*) from D WHERE [Time Days] > 5);

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    En essayant avec ce code, et au moment de lancer la requête j'ai un message d'erreur qui me dit que "l'opération doit utiliser une requête qui peut être mise à jour".
    Je crois qu'il parle de la sous requête SELECT, mais je ne vois pas comment faire pour résoudre ça.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    regarde déjà si il ne faut pas des quotes ou des guillemets autour de la valeur que tu veux insérer ? Si c'est le cas, il faut les rajouter autour du select.

    sinon tu fais cet update à quel moment ?
    Dans un formulaire ? après un clic sur un bouton ?
    si c'est le cas, tu peux toujours faire ton update par une requête DAO qui fera la mise à jour par le code.

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    En rajoutant des guillemets la requête s'effectue, mais j'ai toujours 0 lignes mises à jour...
    Peut on spécifier ce qu'on veut mettre dans une case très précise d'une base de donnée (la ligne tant du champs tant) par du SQL?

    Sinon, l'update je l'effectue par rien pour l'instant, juste en l'appelant dans la liste des requêtes de ma base de donnée.

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    bien sur, avec la clause WHERE tu peux spécifier ce que tu veux mettre à jour exactement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (WHERE (champs1 = value) AND (champs2 = value) ...)
    As-tu fais un essai en mettant une valeur à la main dans ta requête de mise à jour. Tu fais un test avec une valeur identique et un test avec une valeur différente

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    En mettant les valeurs à la main, ça me met toujours le message comme quoi 0 lignes sont modifiées (alors que je m'attends à "1 ligne va être modifiée").
    En même temps, c'est vrai que rien ne spécifie que je ne veux modifier que la ligne 1.

    Après tout, d'habitude, les requêtes de mise à jour mettent à jour chaque ligne d'une table, en se basant pour chaque ligne sur les champs de la ligne d'une autre table (ou la même). Une ligne pour une ligne.
    Alors que là ce que je lui demande c'est de me compter les lignes d'une table répondant à critère et de m'envoyer ça dans une case particulière.
    C'est pourquoi je souhaitais savoir comment appeller une case particulière (la première ligne du premier champs de ma table compteD) pour aller y mettre cette information par un autre moyen.

    En fait, je veux pas modifier une ligne répondant à un critère (WHERE...). Je sais la ligne que je veux modifier, je sais même la case, et je veux y rentrer des codes directement.

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    c'est quoi la structure de la table compteD ? tu as quoi comme champs, il y a quoi dedans, nombre de lignes, ... ?

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    c'est une table à deux champs : inf6 et sup5
    et qui ne possède pour l'instant aucune ligne.


    j'aimerais mettre dans la première ligne:
    - dans le champs inf6 : le nombre d'enregistrements de mon autre table pourlesquels le champs Time Days est inférieur à 6
    - dans le champs sup5 : le nombre d'enregistrements de mon autre table pourlesquels le champs Time Days est supérieur à 5

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    Si je comprends bien dans ta table tu n'auras qu'une seule ligne tout le temps que tu mettras à jour ? Ou tu rajoutes une nouvelle ligne à chaque fois et tu t'appuies sur la dernière pour tes stats ?

  13. #13
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Je n'aurais en effet qu'une seule ligne, remise à jour chaque fois que j'effectuerais la requête.

    Le but final étant d'exploiter ces deux chiffres pour créer un diagramme secteur (en rond) permettant de voir la proportion de projets finis en moins de 5 jours et en plus de 5 jours, peut être existe-t-il une solution plus maline que celle que j'essaie de mettre en oeuvre?

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    tu peux me donner le code SQL de ta requête mise à jour que tu fais ?


    Mais si tu n'as aucune ligne dans ta table c'est normal que tu ne puisses pas faire de mise à jour.

    Essaye d'insérer une ligne en mettant 0 0 en valeurs pour tes 2 colonnes et recommence ton exécution ca devrait marcher.

  15. #15
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    VOilà ma requête SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE compteDIT, DIT SET compteDIT.sup5 = ("SELECT Count(*) from DIT WHERE [Time Days SIT on 29/06] > 5"), compteDIT.inf6 = ("SELECT Count(*) from DIT WHERE [Time Days SIT on 29/06] <6");
    Sinon, j'ai essayé en entrant 0 0 à la première ligne, et là ça m'a plus proposé de mettre à jour 0 lignes, mais 300 (la taille de ma base de données) ce qui me paraît finalement logique vu comment mon code est écrit. Mais au moment de finaliser ça, une erreur fait que les 300 lignes ne sont pas mises à jour, une erreur "échec de conversion de type".

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    Essaye plutot ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE compteDIT 
    SET sup5 = (SELECT Count(*) from DIT WHERE [Time Days SIT on 29/06] > 5), 
    inf6 = (SELECT Count(*) from DIT WHERE [Time Days SIT on 29/06] <6);
    Tu as pas besoin de mettre ta table DIT dans le UPDATE, c'est pas elle que tu veux mettre à jour.

    Il faut que tu gardes ta ligne ) 0 0 au départ pour pouvoir faire l'UPDATE

    Par contre c'est quoi ton [Time Days SIT on 29/06] ?

  17. #17
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Par contre c'est quoi ton [Time Days SIT on 29/06] ?
    C'est le Time Days, c'est juste que tout à l'heure j'avais simplifié les noms que j'utilisais pour pas que ce soit trop lourd et que là j'ai oublié de simplifier en copiant le code.

    Je me retrouve avec le même problème que tout à l'heure, j'ai un message d'erreur qui me dit "l'opération doit utiliser une requête qui peut être mise à jour".
    Si je mets des guillemets autour des expressions, je me retrouve avec l'expression même dans mes champs (si je les mets en format texte; avant je les avais mis en numérique, et c'est pour ça que j'avais le problème d'échec de conversion de type). Mais au moins, je me retrouve avec seulement la première ligne remplie.

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    mets des quotes et pas des guillemets !!!

  19. #19
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 95
    Points
    95
    Par défaut
    tu mets tes champs sup5 et inf6 en numérique dans ta table avec une première ligne remplie avec 0 et 0.

    Après, il faut que tu travailles autour des sous-requêtes (quote, guillemet, rien, tu devrais pouvoir trouver ce qu'il te manque)

  20. #20
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    j'y arrive pas... j'ai essayé 10 000 changements possibles, y'a rien qui marche, j'ai mis
    des "
    des '
    des [ (c'est ça un quote au fait?)

    je les ai mis sur toute la formule, j'ai essayé juste sur SELECT...
    chaque fois j'ai un message d'erreur et je peux pas finir de compiler ou une erreur de syntaxe.

    Est-ce que tu pourrais me mettre le code entier avec les quotes stp?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Compter les enregistrements d'un sous-formulaire
    Par djamy dans le forum Access
    Réponses: 6
    Dernier message: 06/07/2006, 21h18
  2. Compter les enregistrements formulaire
    Par mat44_39 dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2005, 12h21
  3. Compter les enregistrements modifiés
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/10/2004, 14h12
  4. [VB.NET] Compter les enregistrements d'une requete
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/10/2004, 18h46

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