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 :

PB Sélectionner le dernier enregistrement


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Points : 4
    Points
    4
    Par défaut PB Sélectionner le dernier enregistrement
    Bonjour,

    J'ai une table qui contient des informations sur des opérations de comptes.
    Cette table contient plusieurs numéros de compte, des soldes.

    Je voudrai regrouper les comptes ayant le même numéro et sélectionner le dernier enregistrement du champ soldes correspondant à ce compte.

    Comment faire sans code Visual Basic?

    Actuellement je regroupe les comptes ayant le même numéro.
    Et pour le champ solde je récupère le dernier enregistrement de toute la table mais pas celui correspondant au bon numéro de compte.

    J'utilise la fonction DernDom.

    Exemple:

    Numéro compte solde
    14 -15
    14 -89
    78 456
    78 23
    78 5786
    ...

    Et je voudrai que ma requête m'affiche:

    Numéro de compte solde
    14 -89
    78 5786

    Merci d'avance

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    J'ai exactement le même problème.

    Je pense que c'est assez explixite pour pas avoir besoin d'en rajouter

  3. #3
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    quelles sont les donnees enregistres?
    ton numeros de compte est 1 numero ou 2 numeros separe par un "-" ?
    as tu une date de saisie?

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    En ce qui me concerne j'ai des enregistrements avec un numéro automatique différent pour chaque et pour chaque enregistrement un nom d'agence et une date.

    Par exemple ma table ressemble à ça (un espace entre chaque champ)


    1 Montesquieu 11/02/06
    2 Montesquieu 16/03/06
    3 Monstesquieu 02/06/06
    1 Izon 24/02/06
    2 Izon 01/06/06
    1 Gambetta 15/02/06
    2 Gambetta 21/03/06
    3 Gambetta 10/05/06

    j'aimerais que ma requête me sorte

    3 Monstesquieu 02/06/06
    2 Izon 01/06/06
    3 Gambetta 10/05/06

  5. #5
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    SI tu fais une requête SQL comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT numcompte, solde FROM table GROUP BY numcompte HAVING numcompte=MAX(numcompte)
    Je me rapelle plus exactement comment ça marche mais le group by te permet de faire des groupe (par numero de compte) et le HAVING de faire ta sélection de ce groupe

    J'espère que ça pourra t'aider
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  6. #6
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    group by s'utilise seulement avec une fonction d'agregat .. ca ne marchera pas

  7. #7
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    essaye
    SELECT MAX(Num),agence,date
    From tatable
    Group By agence;

    je suis pas sur du resultat

  8. #8
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Moi jpense que tu a raison
    Et pour lionelvz ça donnerait un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Max(numcompte), solde FROM table GROUP BY numcompte
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Ca ne marche pas il me renvoie plusieurs num pour une même agence.
    Alors que je veux le num le plus grand d'une même agence

  10. #10
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Soubi47
    Ca ne marche pas il me renvoie plusieurs num pour une même agence.
    Avec la fonction d'agregat MAX() ?????
    bizzare
    essaye SELECT DISTINCT alors

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    C pareil, il n'y a pas moyen en passant par une requête access sans le code SQL

  12. #12
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Points : 63
    Points
    63
    Par défaut
    Essaie ça

    SELECT (Num), Max(Solde)
    FROM TaTable
    GROUP BY Num
    ;

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Alors en fait la fonction Max marche que quand je ne met que le paramètre num.
    Si je fait Max(num) ça me renvoie bien le plus grand numéro mais dès que je rajoute un autre champ ça me met l'ensemble des numéros.

    Par exemple
    SELECT Max(Num)
    FROM TaTable
    GROUP BY Num
    ça marche

    mais
    SELECT Max(Num), (Solde)
    FROM TaTable
    GROUP BY Num, Solde
    ne marche pas

    Aussi un truc super important en fait le num s'incrémente à chaque enregistrement il faut donc travailler sur le champ date parce qu'en faite ma table est comme ça :

    num agence date
    1 Montesquieu 11/02/06
    2 Montesquieu 16/03/06
    3 Monstesquieu 02/06/06
    4 Izon 24/02/06
    5 Izon 01/06/06
    6 Gambetta 15/02/06
    7 Gambetta 21/03/06
    8 Gambetta 10/05/06

  14. #14
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par Soubi47
    Alors en fait la fonction Max marche que quand je ne met que le paramètre num.
    ----> Normal

    Citation Envoyé par Soubi47
    num agence date
    1 Montesquieu 11/02/06
    2 Montesquieu 16/03/06
    3 Monstesquieu 02/06/06
    4 Izon 24/02/06
    5 Izon 01/06/06
    6 Gambetta 15/02/06
    7 Gambetta 21/03/06
    8 Gambetta 10/05/06
    ca c pas pareil que :
    Citation Envoyé par Soubi47
    num agence date
    1 Montesquieu 11/02/06
    2 Montesquieu 16/03/06
    3 Monstesquieu 02/06/06
    1 Izon 24/02/06
    2 Izon 01/06/06
    1 Gambetta 15/02/06
    2 Gambetta 21/03/06
    3 Gambetta 10/05/06
    comme tu avais dit plus haut
    dans ce cas fait

    SELECT DISTINCT num,agence,MAX(date)
    From tatable
    Group BY agence;

    ca devrait marcher

  15. #15
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    Au fait :
    Citation Envoyé par Soubi47
    C pareil, il n'y a pas moyen en passant par une requête access sans le code SQL
    Le SQL est bien plus puissant que l'utilitaire de requete d'Access prends l'habitude d'utiliser le SQL

  16. #16
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    marche toujours pas.

    a noter qu'à chaque fois avec vos réponse access me renvoie cette erreur
    Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée <nom> comme une partie de la fonction d'agrégat. (Erreur 3122)

    Pour la corriger je rajouter tous les paramètres après GROUP BY
    Pour ta dernière réponse Pogny j'ai ajouté GROUP BY agence, num, date

  17. #17
    Membre chevronné Avatar de guigui5931
    Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2006
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 667
    Points : 2 232
    Points
    2 232
    Par défaut
    Ya pas un truc du genre que tu ne peut mettre dans ton SELECT que des champs que tu as mis dans ton GROUP BY.
    Peut être avec un sous requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT num, solde FROM taTable WHERE num IN (SELECT Max(Num)
    FROM TaTable GROUP BY Num)
    c'est de la bidouille mais normalement la requete a l'interieur te renverra les valeurs max (comme tu as testé) puis tu récupère les soldes correspondants
    autant l'hiver éclate que l'hétéroclite
    le vrai geek c'est celui qui croit qu'il y a 1024 mètres dans un kilomètre

  18. #18
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    c pareil

    en fait il faut sélectionner la plus grande date pour chaque agence

    j'ai essayé en ajoutant HAVING (((Appels.RéfContact)=Max([DateEffectuée])))
    mais c pareil ça marche pas

  19. #19
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    je suis sur la bonne voie je vais manger et je te fais ca

    j'ai deja les plus grande date en fonction des agences

    select max(date)
    from table1
    group by agence;


    simple mais efficace (cela servira de requete imbriqué)

  20. #20
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 74
    Points : 79
    Points
    79
    Par défaut
    select agence,max(date) as [derniere date]
    from table1
    group by agence ;



    alors ca ca marche mais ca donne pas le numero desole :/

Discussions similaires

  1. [MySQL] Sélectionner le dernier enregistrement de ma table
    Par the_tiger85 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 08/01/2013, 11h02
  2. [SQL] Sélectionner les 5 derniers enregistrements
    Par lunick dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/09/2007, 14h40
  3. sélectionner le dernier élément enregistré par client
    Par sorlok dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/05/2007, 13h58
  4. [MySQL] sélectionner le dernier enregistrement d'une BD
    Par budylove dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 27/04/2006, 14h10
  5. Sélectionner les 10 derniers enregistrements
    Par pod1978 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2005, 12h07

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