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 :

Premier numéro libre pour champ numéroAuto


Sujet :

Access

  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut Premier numéro libre pour champ numéroAuto
    Bonjour,
    J'ai une base de données Access avec une tablme dans la qualle j'ai un champ en numéro Automatique. Seulement je veux que quand j'insère une ligne il prenne le premier numéro de libre.

    Par Exemple :
    J'insère 2 lignes.

    Pierre 1
    Romain 2
    Emilie 3

    ensuite je supprime Romain.

    Et je réinsère une ligne. Quand je réinsère la ligne le premier numéro de libre est 2 et je veux que ma ligne prenne 2.

    Est-ce que c'est possible?

    Merci

  2. #2
    Membre chevronné
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Par défaut
    Bonjour à tous,

    A ma connaissance le numeroauto s'incrémente toujours de 1 même si on supprime par exemple le dernier enregistrement et on crée un nouvel

    A+

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Alors la seule chose à faire si l'on veut recommencer de 0 il faut supprimer la table et la recréer?

  4. #4
    Membre émérite Avatar de milia
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Juillet 2006
    Messages : 481
    Par défaut
    Bonjour,

    Il n’est pas possible de le faire automatiquement, il faut pour cela avoir un champ (clé par exemple) qui est un nombre, et dans du code vba, lors d’un ajout dans ta table, cherche le premier libre grâce à une boucle.
    Si quelqu’un l’a déjà, cette personne pourra peut-être mieux t’aider que moi.
    Bon courage.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    Non, pour recommencer à zéro, tu n'effaces pas la table, tu effaces uniquement son contenu puis tu compactes la base.

    Oui, il y a eu une discussion la semaine dernière sur le sujet des "trous"... je vais la retrouver...

    La voici : http://www.developpez.net/forums/sho...d.php?t=207645

  6. #6
    Membre averti
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Pour compacter la base il y a une instruction vba qui existe?

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    Le numéro auto ne permet pas cela. Il ne connaît que deux modes incrément ou aléatoire.
    En mode incrémental on peut effectivement régler le premier numéro attribué, mais ici il faudrait le recalculer à chaque fois
    Normalement on admet des trous dans le système de numérotation, et on n’attribue plus les numéros déjà attribués, de façon à préserver les intégrités.

    Si tu veux vraiment faire cela tu peux toujours faire cette requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT TOP 1 [monnum]+1 AS suivant 
    FROM matable
    WHERE  monnum Not In 
    (SELECT a.monnum FROM matable AS a, matable AS b 
    WHERE b.monnum=[a].[monnum]+1)
    ORDER BY monnum;
    Mais attention en cas d’utilisation en réseau il te faudra utilise rune transaction pour vérifier que le numéro n’est pas utilise en double.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    Je ne sais pas... mais as-tu recherché dans la FAQ et dans le Forum ?

    Sinon, pourquoi ne pas faire une clé primaire pour assurer l'intégrité référencielle et une seconde clé en numérique simple que tu pourras manipuler comme bon te semble ?

  9. #9
    Membre averti
    Inscrit en
    Août 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 24
    Par défaut
    Merci pour ta requête Random, elle va m'être très utile.

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

Discussions similaires

  1. Sélectionner les N premiers numéros libres ?
    Par david2109 dans le forum SQL
    Réponses: 11
    Dernier message: 30/07/2013, 11h30
  2. Minimum pour un champ numéroAuto
    Par mouaa dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/04/2008, 07h36
  3. Réponses: 2
    Dernier message: 04/09/2004, 10h53
  4. selection selon premier caractere d un champ
    Par jack-daniel dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/08/2003, 12h25

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