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 :

Incrémentation d'un numéro auto [AC-2003]


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 28
    Points : 14
    Points
    14
    Par défaut Incrémentation d'un numéro auto
    Bonjour,

    J'ai une table client dont la clé primaire est un numéro auto.

    J'ai importé plein de clients à partir d'un fichier Excel avec l'outil "Importer" d'access où j'avais entré des numéro manuellement. Mon dernier client a pour numéro auto 2906.

    Mais lorsque je crée de nouveaux clients avec les formulaires de la base, ça met des numéros auto à partir de 63 442 423. Et après ça s'incrémente normalement parce que j'avais mis l'option "incrémenter" sur cette clé primaire.

    Mais y a pas un moyen pour que ça s'incrémente à partir de 2906 au lieu de 63442423 ? J'ai cherché un peu sur le forum et apparement il suffirait de rentrer manuellement le dernier numéro : je rentrerais 2907 puis ça s'incrémenterais tout seul. Mais comme c'est un numéro auto, je peux pas le modifier !
    Est-ce que si je change en numéro PAS auto, le temps de rentrer le numéro et que je remet après en auto, ça peut marcher ? ça risque pas de me faire perdre des données ? Parce que d'autres tables sont rattachées à ce numéro...


    Merci d'avance pour vos réponses

  2. #2
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Points : 193
    Points
    193
    Par défaut
    sous SQL Server il est possible d'executer cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC CHECKIDENT ('nom_de_la_table', RESEED, 0)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    bonjour Kawabaumga,

    merci beaucoup pour ta réponse !

    Mais ma base est sur Access 2003 et je connais que ça

    Si il n'y a pas d'autres solutions j'essaierais de télécharger SQL Server et de voir ce que ça donne. Mais j'aimerais bien éviter d'avoir à me perdre dans un nouveau programme

  4. #4
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Points : 193
    Points
    193
    Par défaut
    Citation Envoyé par Cam78 Voir le message
    bonjour Kawabaumga,

    merci beaucoup pour ta réponse !

    Mais ma base est sur Access 2003 et je connais que ça

    Si il n'y a pas d'autres solutions j'essaierais de télécharger SQL Server et de voir ce que ça donne. Mais j'aimerais bien éviter d'avoir à me perdre dans un nouveau programme
    Il y a une autre méthode que je trouve sale mais qui fonctionne sous Access 2007

    Avec une table Table1(N°, champ, ...), tu executes cette requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Table1 (N°, champ, ...) VALUES (n-1, '', ...)

    N° représente mon auto-increment
    ... veut dire que tu peux avoir d'autres champs en plus
    n-1 est la valeur à laquelle tu veux que ton auto-increment reprenne -1

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 40
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    Si j'ai bien compris tu veux copier des enregistrement dans une nouvelle table mais en conservant les même numéros auto ?


    Je ne connais pas de fonction qui fait directement cela par contre je pense qu'il y a moyen de contourner le probléme, mais bon je garantie rien.

    Il faut 2 tables:
    - l'une est celle où tu veux copier les information lié a tes clients (la table Clients) avec les même numéro auto que à l'origine. On l'appelera Table 1

    - une autre table qui contient les enregistrements de tes clients (en fait ce que tu veux mettre dans ta table clients) mais cette fois les numéro qui correspondent au numéro auto doivent etre mis dans un champ numérique (pas un champ auto et pas d'incrémentation automatique). En gros ce champ sert juste à stocher les chiffres des numéros auto.
    On l'appellera Table2.


    Je précise que la Table1 doit etre vidé et compressé pour mettre le numéro auto à 0.

    Il faut maintenant utiliser du code VBA.

    Ce dernier commence par une requete qui va compter le nombre d'enregistrement de la Table2.

    Ensuite dans ton code VBA, tu fait une boucle while qui contient fait les choses suivante dans l'ordre:

    - Création d'un enregistrement dans la table1 (utilisation de Addnew)
    - On récupere le numéro auto de cet enregistrement crée dans la Table1.
    - On fait une requete dans la Table2 pour savoir si ce numéro auto existe dans le champ numerique de la Table2 qui contient la liste des numéros auto utilisés.
    =>si oui alors on complete l'enregistrement en cours de la table1par les informations de l'enregistrement correspondant dans la table2.Puis on incremente un compteur que l'on va nommé COMPTEUR

    => si non, alors on supprimme l'enregistrement que l'on a crée précedement (utilisation de delete)

    Et on refait un tour...

    La boucle While ne se termine que lorsque la variable COMPTEUR a atteint le même nombre d'enregistrements présent dans la Table2.


    Ainsi à chaque boucle, on va incrementer le numéro auto et ne garder que ceux qui corresponde à ceux présent dans la Table2.


    Une fois ce code exécuté, si tu rajoute d'autre enregistrements dans la Table1, le numéro auto continuera a s'incrementer normalement (dans ton cas tu aura 2907, 2908 etc...) .


    Voila, je sais que l'idée est plutot tordue , mais si j'ai bien compris ton probléme ca devrait marcher correctement ...

    Bien sur, il doit exister des solutions bien plus simple, mais ne connaissant Acces que depuis 4 mois, je ne la connais pas pour l'instant ....

    Si tu comprend pas mon idée, dit le moi que j'essaye de mieux expliquer...

    Celestis

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    ça y'est j'ai réussi !!

    Avec la requête de Kawabaumga j'ai pu ajouter un nouvel enregistrement en forçant à mettre le numéro à la suite malgré le numéro auto. Et ça marche, quand je crée d'autres clients ça s'incrémente comme il faut maintenant

    J'ai juste dû supprimer les nouveaux enregistrements qui avaient des numéro trop élevés et les re-rentrer après à la main. Tout en remettant les contacts associés... C'est ça qui a pris du temps, je pense que j'aurais pu l'éviter avec la méthode de Celestis. Mais ça me semblait bien compliqué, vu que y'avait pas beaucoup d'enregistrements j'ai préféré le faire à la main, en 1h de saisie c'était réglé^^

    Je suis pas très fier de pas avoir fait une méthode + automatique mais bon le principal c'est que ça marche

    Merci beaucoup à vous deux pour les réponses en tout cas

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Bonjour,

    excusez moi si je suis hors sujet mais il existe une méthode pour réinitialiser les numéros autos = > compacter la base et l'incrémentation recommence à N+1 du dernier enregistrement.

    Sylvain THIBAULT

  8. #8
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 175
    Points : 193
    Points
    193
    Par défaut
    Le fait de compacter la base réinitialise pas l'auto-incrément à 0?

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    tu as raison

    ceci ne fonctionne que si la table est vide

    donc mille excuses

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 16/06/2014, 10h45
  2. [WD14] Comment incrémenter une rubrique de type numéro auto
    Par bahloula dans le forum WinDev
    Réponses: 7
    Dernier message: 27/04/2011, 13h19
  3. numéro auto incrément d'un compte bancaire avec c# xml
    Par manidis dans le forum Windows Forms
    Réponses: 6
    Dernier message: 24/03/2011, 14h18
  4. [A-00] Incrémentation d'un numéro auto
    Par aketo1082 dans le forum IHM
    Réponses: 2
    Dernier message: 14/10/2008, 16h42
  5. Numéro auto-incrément
    Par mona dans le forum Débuter
    Réponses: 6
    Dernier message: 17/05/2005, 21h18

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