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 :

Récupérer le Numéro auto d'un champ


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut Récupérer le Numéro auto d'un champ
    Bonjour,

    Après de nombreuses recherches je voudrais savoir comment fait-on dans access pour récupérer le dernier numéro auto d'un champ, à savoir que ce n'est pas après une insertion de données c'est pour l'afficher dans une zone de formulaire.
    Je ne veux pas non plus la méthode du Max + 1 car si on supprime un enregistrement cette façon de faire est erronée.

    Merci de bien vouloir m'aider.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Ta question est ambigüe.
    Le dernier numéro auto sera toujours le plus grand de la table.
    C'est l'histoire du chat qui court après sa queue.

    Si tu ne supprimes pas d'enregistrement, c'est le max qui l'emporte.
    Si après tes manipulations tu supprimes un enregistrement, disons le 2ième sur quatre, le suivant serait le 5, mais tu n'en a plus que 3, si tu les comptes, ce sera le 4, or le 4 existe déjà, ce qui fait que le suivant devra être le 5.

    Une ébauche de réponse : http://access.developpez.com/faq/?pa...elNumAutoHoles
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Par défaut
    bonjour,
    fonctions regroup.domaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DernDom("NomChamp";"NomTable")
    [Edit]
    salut Heureux-oli,
    excuses j'ai pas vu ton post passé pendant la rédaction du mien !
    [/Edit]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    Je me suis mal exprimé.

    En fait mon but est d'afficher le premier numéro qui sera insérer si on enregistre.
    Donc si dans la base je vais chercher le Max + 1 il me renverra le numéro le plus grand je suis d'accord mais pas forcément le numéro qui va être prochainement inséré.
    Donc si vous aviez une solution pour récupéré le prochain numéro qui sera inséré je suis preneur.

  5. #5
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    C'est pas beaucoup plus clair.

    Prenons le cas d'un exemple concret.
    Si tu es le seul à manipuler les données, le numéro suivant sera la plus grand augmenté de 1

    Si vous êtes deux, le numéro suivant ne sera connu que lors de la sauvegarde de l'enregistrement et c'est le premier des deux qui aura le plus grand augmenté de 1, l'autre sera augmenté de 2.

    Si il y a trois utilisateurs ...

    Quel est le but de ta manoeuvre concrètement ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    Je donne un exemple :

    Imaginons que je travail sur une table client.
    Je rentre 5 clients dans la table.
    Donc a ce moment là le prochain Numéro auto sera le numéro 6.

    Je veux dans un formulaire lors de la création d'un client, dans la zone Nom client la pré - remplir en mettant en nom du client "Client N° ValeurDuProchainNoAuto" donc dans notre cas cela sera le n°6.

    Maintenant je supprime 2 clients.
    Donc si je fais un Max + 1 cela me donne le numéro 4, alors que le véritable NoAuto si je rentre un nouveau client sera le 6. Et je veux préremplir ma zone nom client dans ce cas avec "Client N°6".

    J'espère avoir été plus clair.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    En faite j'avais pas vu dans ton lien la fonction "Function NextID" car le lien ouvrait sur la table des matières du coups je pense que cette fonction paliera à mes besoins, je pense que c'est ca que tu voulais me montré avec le lien.
    Merci bien

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    Tu confond Max et Count.
    Max renvoie la plus grande valeur trouvée et dans le cas que tu cite, Max va trouver 5 et donnera 6.
    Alors que Count vas trouver 3 valeurs et donnera 4.

    Mais quel est l'intérêt d'avair cette valeur en préremplissage ?

    Si tu fais une sauvegarde de l'enregistrement dès qu'une valeur est saisie, tu auras la vraie valeur avec le risque que si tu change d'avis, l'enregistrement sera crée.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    La j'ai pris l'exemple du client ce qui n'est pas mon réel cas qui est un peu plus compliqué, mais l'avantage que cela soit pré rempli comme cela c'est que l'utilisateur n'est pas obligé de changé la valeur, et dans cette valeur il a l'information du numéro qui sera inséré c'est juste pour ca.

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Par défaut
    Salut,

    C'est Max + 1.

    Mais tu ne peux avoir qu'un seul utilisateur à la fois. Deux c'est foutu.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    Oui il y aura que un seul utilisateur.

    Mais le Max + 1 ne marche pas à tout les coups.

    Car si il y a eu des suppresssions d'enregistrements le MAX + 1 m'enverra certe le numéro le plus grand mais pas le numéro prochainement insérer par le Noauto.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je viens de faire un test, car un truc me chagrinait.

    Si dans ton formulaire tu affiches le NuméroAuto (que ton formulaire soit lié à la table ou à une requête), le champ NumAuto s'affichera automatiquement avec le bon numéro dés que tu auras fait une saisie sur le premier champ de l'enregistrement.

    Philippe

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    En faite mon formulaire et pas relié directement à une table ou une requete.

    Y'a seulement lorsque j'appuie sur le bouton enregistrer que je rentre les données dans la table. Mais avant rien n'aie relié, je fais juste une requète pour pré remplir ce fameux champs avec le futur Numéro qui sera inséré mais c'est tout. Donc si je saisi dans d'autres zone cela ne peut pas agir sur ma zone "Nom".

  14. #14
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Par défaut
    bonsoir,
    en rajoutant +1 au code que je t'ai posté tu auras bien l'ID qui sera affecté à ton champ Num automatique, mais il est a mettre dans un champ autre que celui qui sera renseigné automatiquement quand tu valideras ton enregistrement.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    Je viens d'essayer ta méthode (DLast) elle affiche bien un numéro mais pas le prochain qui sera crée on dirait que cela fait juste un MAX + 1.

  16. #16
    Membre Expert
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Par défaut
    re,
    comme cela t'a déjà été dit - sur un "n° auto" un DLast où DMax en VBA où MaxDom où DernDom dans le champ donnera le dernier et le plus grand N° auto qui sera affecté quand l'enregistrement sera effectif
    sur un formulaire indépendant en rajoutant +1 dans un contrôle à part tu auras ce N°.
    à ce niveau, je pense que si tu n'y arrives pas il faut poster un extrait de ta base.

  17. #17
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Citation Envoyé par bugland Voir le message
    Je viens d'essayer ta méthode (DLast) elle affiche bien un numéro mais pas le prochain qui sera crée on dirait que cela fait juste un MAX + 1.
    Tout à fait.

    Si on a 1 2 3 4 5

    Qu'on supprime, le 5 on aura bien le prochain ID=max(id)+1=5+1=6

    En revanche si on supprime le 5, on aura

    prochain ID=max(id)+1=4+1=5 ce qui est faux puisque ce sera 6

    Les seules solutions que je vois, c'est soit conjointement tenir à jour une table contenant le dernier ID généré soit utiliser une transaction de telle sorte à lancer l'addnew DAO à l'ouverture du formulaire indépendant et de lancer l'update à sa fermeture ou sur un bouton. Entre ces deux étapes, il sera possible d'accéder à la valeur actuellement allouée au numéro auto comme indiqué ici :

    http://warin.developpez.com/access/d...artie_5#L5.4.3

  18. #18
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Citation Envoyé par LE VIEUX Voir le message
    re,
    comme cela t'a déjà été dit - sur un "n° auto" un DLast où DMax en VBA où MaxDom où DernDom dans le champ donnera le dernier et le plus grand N° auto qui sera affecté quand l'enregistrement sera effectif
    sur un formulaire indépendant en rajoutant +1 dans un contrôle à part tu auras ce N°.
    à ce niveau, je pense que si tu n'y arrives pas il faut poster un extrait de ta base.
    Non, c'est faux. Cf ma remarque au dessus

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 114
    Par défaut
    Citation Envoyé par Tofalu Voir le message
    Tout à fait.

    Si on a 1 2 3 4 5

    Qu'on supprime, le 5 on aura bien le prochain ID=max(id)+1=5+1=6

    En revanche si on supprime le 5, on aura

    prochain ID=max(id)+1=4+1=5 ce qui est faux puisque ce sera 6

    Les seules solutions que je vois, c'est soit conjointement tenir à jour une table contenant le dernier ID généré soit utiliser une transaction de telle sorte à lancer l'addnew DAO à l'ouverture du formulaire indépendant et de lancer l'update à sa fermeture ou sur un bouton. Entre ces deux étapes, il sera possible d'accéder à la valeur actuellement allouée au numéro auto comme indiqué ici :

    http://warin.developpez.com/access/d...artie_5#L5.4.3

    Ok c'est ce que je pensai, mais bon cette fonctionnalité du programme et juste de l'ergonomie pour l'utilisateur donc cela me sert pas de rentré dans de l'usine à gaz mais je voulais savoir si y'avais une solution simple et rapide.

    En tout cas merci pour ta réponse et merci aussi à ceux qui on pris le temps de répondre.

  20. #20
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Ok c'est ce que je pensai, mais bon cette fonctionnalité du programme et juste de l'ergonomie pour l'utilisateur donc cela me sert pas de rentré dans de l'usine à gaz mais je voulais savoir si y'avais une solution simple et rapide.
    Je comprend

    Dans le cadre de l'ergonomie on pourrait envisager à la limite un affichage :

    Simulation de l'identifiant : X

    Où X serait égal au max+1 (Dans 90% des cas, il sera bon) et aprés l'update, vérifier si l'identifiant proposé était le bon ou pas et avertir l'utilisateur si besoin.

    C'est assez simple à faire et répond à une majorité des cas

Discussions similaires

  1. Réinitialiser un champ de type numéro auto
    Par francishop dans le forum Contribuez
    Réponses: 11
    Dernier message: 11/03/2018, 00h59
  2. [AC-2003] Un formulaire avec seulement Un numéro Auto et un champs Date
    Par adlinformatik dans le forum Access
    Réponses: 6
    Dernier message: 02/07/2015, 00h16
  3. récupérer numéro auto juste créé
    Par puppusse79 dans le forum Access
    Réponses: 14
    Dernier message: 13/02/2007, 18h32
  4. Numéro Auto dépendant d'un autre champ
    Par ob1knob dans le forum Access
    Réponses: 2
    Dernier message: 17/07/2006, 23h54
  5. Récupérer le numéro auto lors d'une insertion
    Par zoidy dans le forum Access
    Réponses: 5
    Dernier message: 27/04/2006, 12h20

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