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 :

Récupérer le numéro du dernier enregistrement pour en faire un nouveau numéro


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 46
    Points
    46
    Par défaut Récupérer le numéro du dernier enregistrement pour en faire un nouveau numéro
    Bonjour à tous, je reviens avec mon projet pour améliorer certaines choses.

    Actuellement, pour les numéros de mes factures, voici ce que j'ai :
    Private Sub N°Facture_Click()
    Me.N°Facture = Format([N°listFact], "00#") & Format(Date, "-MM-YYYY")
    End Sub
    Ce qui me donne par exemple : 001-07-2014 (1ere facture et nous somme au mois de juillet 2014). Jusque là, aucun problème.

    Mais je me suis rendu compte que si je commençais une facture la 002 par exemple, puis que je décide de la supprimer parce qu'elle ne me convient pas et je souhaite la recommencer, elle devient alors 003 (normal puisque le numéro varie en fonction du n°Auto dans la table).

    Je souhaiterais donc non plus que le numéro soit en fonction du n°Auto dans la table mais qu'il reprenne le dernier enregistrement, puis qu'il ajoute +1 afin d'avoir un nouveau numéro.

    Pour ceux qui ne m'auront pas compris voila ce que je veux :

    -Récupérer le numéro du dernier enregistrement
    -Ajouter +1
    -Faire de ce nouveau numéro le numéro de l'enregistrement actuel

    Et si vous n'avez toujours pas compris, un exemple :

    - Je fais une facture, le logiciel va récupérer le numéro du de la dernière facture effectuée (la 123 par exemple), il ajoute +1, soit 124 et du coup, la facture que je suis en train de faire devient la 124.




    J'espère que vous aurez compris ma demande et je vous remercie d'avance ceux qui m'aideront.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Je vous conseille de vous intéresser à la fonction DMAX et plus généralement aux fonctions de domaines comme expliquées dans l'article de référence ici.

    Ca devrait être un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub N°Facture_Click()
    Me.N°Facture = DMAX("[N°Facture]", "[Tatable]")+1
    End Sub
    Ce code est à améliorer je pense parce qu'on ne sait pas si vous conservé N°Facture dans votre table ??

    Au fait la discussion-ci traite le même problème

    Bonne continuation

  3. #3
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Merci pour ton aide.

    Ton code fonctionne parfaitement, j'ai effectué des test pour vérifier son bon fonctionnement, tout est ok.

    Par contre, je ne peux pas ajouter le mois et l'année après. Voici ce que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub N°Facture_Click()
    Me.N°Facture = DMAX("[N°Facture]", "[Tatable]")+1 & Format(Date, "-MM-YYYY")
    End Sub
    Ce qui est compréhensible car le logiciel ne comprend plus lorsqu'il doit ajouter +1 à un chiffre comme ça : 001-07-2014.

    Une solution peut-être ?

  4. #4
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    En cherchant, je pense avoir trouvé une solution.

    Je crée un nouveau champs "NumFact" par exemple. Puis je met ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub N°Facture_Click()
    Me.NumFact = DMAX("[NumFact]", "[T-Factures]")+1 
    Me.N°Facture = Format([NumFact], "00#") & Format(Date, "-MM-YYYY")
    End Sub
    Même si le code est plutôt simple, je l'explique : Lorsque je clique sur la case "N°Facture", le logiciel reprend le dernier numéro attribué au champ "NumFact" dans la table "T-Facture" et lui ajoute +1. Ensuite, ce numéro se met sous la forme XXX puis à coté se place la date sous ce format -MM-YYYY. Ce qui donne au final un numéro comme 001-07-2014.

    ATTENTION, il faut mettre manuellement sur le premier enregistrement le chiffre 1 dans le champ "Numfact" sinon, bien sur, le logiciel ne pourra pas faire le +1.

    Pour finir, un exemple qui illustre tout cela : J'ai crée ma 123e facture (par exemple), donc je clique dans le champs "N°facture", le logiciel récupère le dernier enregistrement du champ "NumFact", ici 122, il ajoute +1, donc le champ prend la valeure 123 et enfin, s'affiche ce chiffre, suivi de la date soit pour aujourd'hui : 123-07-2014.


    Le gros avantage que j'ai trouvé avec cette solution (pour ma part), c'est de pouvoir faire une facture, mais d'attribuer un numéro plus tard.

    Merci.

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    C'est bien !
    En fait si vous avez lu l'article que je proposais, les fonctions de domaines renvoient la valeur Null quand elles ne retrouvent pas de valeurs. donc, pour éviter

    ATTENTION, il faut mettre manuellement sur le premier enregistrement le chiffre 1 dans le champ "Numfact" sinon, bien sur, le logiciel ne pourra pas faire le +1.
    Il faut utiliser la fonction Nz
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.NumFact = Nz(DMAX("[NumFact]", "[T-Factures]"),0)+1
    Cordialement,

  6. #6
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Février 2014
    Messages : 86
    Points : 46
    Points
    46
    Par défaut
    Oui c'est vrai, pourtant je connaissais cette solution mais elle ne m'ai pas venu en tête au moment où j'ai écris le code.

    Merci.

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

Discussions similaires

  1. Dernier enregistrement pour un ID
    Par BoyzInDaProject dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/11/2011, 13h49
  2. [ADO] Récupérer l'ID du dernier enregistrement sans requêter
    Par Kephuro dans le forum Bases de données
    Réponses: 7
    Dernier message: 27/05/2008, 17h06
  3. [MySQL] Récupérer l'id du dernier enregistrement
    Par philippef dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/10/2007, 17h53
  4. Récupérer le numéro du dernier enregistrement
    Par Bazooka dans le forum Access
    Réponses: 3
    Dernier message: 26/01/2007, 23h22
  5. Réponses: 5
    Dernier message: 01/02/2005, 17h29

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