Comment définir la première valeur de NuméroAuto dans Access?

8

Je n'ai pas besoin de réinitialiser la valeur NuméroAuto comme cette question , mais j'aimerais plutôt définir d'abord le nombre à:

1001

Ce qui augmente ensuite comme d'habitude:

1001

1002

1003

...

Comment puis-je faire cela dans Access 2010?

James Mertz
la source
5
Pas une réponse, mais un avertissement: la numérotation automatique n'est pas conçue pour être gérée de cette manière. J'ai vu d'innombrables personnes l'essayer. Cela ne fonctionne jamais car la base de données fera des choses étranges en augmentant parfois (les écritures non réussies incrémentent encore le nombre, par exemple). La numérotation automatique ne garantit pas que les numéros d'enregistrement seront consécutifs. En effet, dans de rares cas, cela ne garantit même pas que le nombre sera unique. C'est très utile pour créer une clé primaire pour une petite table. C'est un peu risqué pour les grandes tables. C'est absolument affreux d'utiliser comme champ de données réel. Il
Bacon Bits
@BaconBits ... à quoi sert AutoNumber?
James Mertz
Commentaire de @ BaconBits: Vous voyez des articles comme celui-ci lorsque quelque chose se passe en forme de poire parce que les gens s'attendent à ce que la numérotation automatique soit quelque chose qui ne le soit pas. Si vous devez générer des nombres de cette manière, écrivez les requêtes et autres dans la base de données pour le faire vous-même correctement.
BloodPhilia

Réponses:

14

Bien qu'Access n'offre pas cette fonction de manière native, elle peut être obtenue via une requête, comme suit:

CREATE TABLE TableThatIncrements
(
Id AUTOINCREMENT(1001,1)
)

Cela créera une seule table appelée "TableThatIncrements" avec une seule colonne, nommée "Id". Vous pouvez maintenant utiliser l'éditeur de table pour ajouter des propriétés et / ou d'autres colonnes.

Changement

AUTOINCREMENT(x,y)

en fonction de vos besoins, où se xtrouve le numéro d’incrément initial et yle numéro avec lequel incrémenter. Alors AUTOINCREMENT(100,5)va donner: 100, 105, 110, 115, etc.

Si vous souhaitez modifier une table existante, utilisez la requête suivante. Assurez-vous que l'onglet de cette table spécifique est fermé pour qu'Access puisse le verrouiller et le modifier.

ALTER TABLE TableThatIncrements
   ALTER COLUMN Id AUTOINCREMENT(1001,1)

Vous pouvez exécuter une requête dans Access en procédant comme suit:

  1. Allez dans l'onglet "Créer" et cliquez sur "Création de requête"
    entrez la description de l'image ici

  2. Fermez simplement la fenêtre qui vous demande de sélectionner des tables, nous n’en avons pas besoin.

  3. Allez à l'onglet "Conception" et cliquez sur le bouton avec la flèche jusqu'à ce que vous obteniez un écran de saisie textuelle. (Par défaut, ça dit SELECT;).
    entrez la description de l'image ici

  4. Supprimez le texte par défaut et collez la requête ci-dessus.

  5. Cliquez sur "Exécuter".
    entrez la description de l'image ici

BloodPhilia
la source
bonne réponse, mais cela crée une nouvelle table ... ou est-ce que je me trompe? Cela peut-il être fait dans une table déjà créée?
James Mertz
@KronoS a mis à jour ma réponse
BloodPhilia
1

Vous devez piéger Access car il suppose que vous n'êtes pas intéressé par un numéro automatique différent de celui fourni.

Vous devrez démarrer la table avec la numérotation automatique personnalisée, ce qui nécessitera une configuration. Mais une fois que cela se produit, vous pouvez simplement continuer à ajouter à partir de là.

Google "lancez la modification automatique du numéro d'accès" et vous trouverez plusieurs options pour ce faire. La plupart comptent sur la création d'une requête Ajout pour modifier le champ.

Créez la première table contenant le champ de type de compteur que vous souhaitez démarrer avec un autre numéro. N'entrez aucun enregistrement. Créez une seconde table, avec un seul champ de type nombre entier long portant le même nom que le champ compteur de la première table. Créez un enregistrement dans la deuxième table en entrant un nombre un inférieur au nombre auquel vous souhaitez démarrer le compteur dans la première table. Créez une requête d'ajout pour ajouter l'enregistrement de la deuxième table à la première table, puis exécutez-la. Supprimez la deuxième table, supprimez l'enregistrement que vous avez ajouté à la première table et commencez à saisir des données.

De MVPS.org: http://access.mvps.org/access/tables/tbl0005.htm

Si vous ne souhaitez pas créer une requête d'ajout, vous pouvez toujours configurer la table, copier et coller 1 000 lignes de données factices d'Excel, supprimer les enregistrements jusqu'au numéro 1001 et continuer à partir de là.

UPDATE: Ajout de l'explication de la raison

La raison pour laquelle la numérotation automatique commence uniquement à partir de 1 est que le champ numérotation automatique est destiné à être utilisé comme champ de référence interne et que, conformément aux bonnes pratiques en matière de base de données, il ne devrait généralement pas être utilisé sous une forme visible publiquement. Il est utilisé dans les cas où il n'y a pas déjà un élément unique dans une table donnée pour créer une entrée unique permettant la recherche et l'indexation de la table.

music2myear
la source
Il doit y avoir un moyen plus facile de faire cela ....
James Mertz
Je suppose que la bonne nouvelle est que si vous devez créer plusieurs tables avec un tel numéro automatique, vous pouvez simplement en créer un, le sauvegarder dans un fichier de base de données "modèle" et le copier dans de nouveaux fichiers de base de données selon vos besoins.
music2myear
1

Ce site Web offre un moyen très simple de commencer votre numérotation automatique avec le numéro de votre choix: http://www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp.

Vous créez une requête avec une expression qui indique au champ numérotation automatique de changer

"Tout d’abord, lancez cette requête:

INSERT INTO tblName (ID) SELECT 999 AS Expr1

Où tblName est le nom de la table et ID est le nom du champ NuméroAuto.

Ensuite, exécutez une deuxième requête pour supprimer la ligne que vous avez insérée:

DELETE FROM tblName WHERE ID = 999;

(Vous pouvez également simplement ouvrir la table et supprimer manuellement la ligne que vous avez insérée.)

Maintenant, l'enregistrement suivant ajouté à la table se voit attribuer la valeur 1000.

Cette méthode fonctionne avec une nouvelle table ou avec une table dont le numéro automatique n'a pas encore atteint la valeur de départ. (Bien entendu, le champ ID des lignes existantes ne sera pas modifié, mais les lignes suivantes commenceront par 1000.) "

George
la source
1

1- Create table1 2- Allez à créer -------> requête de conception. 3- Fermer la table 4- Aller à SQl d'en haut. 5- Passé ce code.

ALTER TABLE [TABLE1] ALTER COLUMN [Id] COMPTEUR (8982,1)

Muhammad
la source
Cela semble être la même chose que la réponse acceptée, à l'exception de l'utilisation d'un mot-clé différent (et l'autre est beaucoup mieux formaté). Votre réponse est-elle vraiment différente? Pouvez-vous expliquer comment? Votre réponse est-elle meilleure? Pourquoi? S'il vous plaît ne répondez pas dans les commentaires; éditez votre réponse pour la rendre plus claire et plus complète.
Scott
0

C'est un très vieux fil de discussion, mais il apparaît toujours comme l'un des trois premiers résultats de recherche Google.

Une des raisons pour lesquelles un utilisateur peut souhaiter modifier la valeur d'un champ de numérotation automatique est pour corriger une erreur provoquée par la modification de la base de données. Lorsqu'un administrateur peut apporter des modifications majeures à un serveur d'une base de données, il peut effectuer des copies de toutes les tables associées et rediriger une copie de développement du serveur vers ces serveurs. Si les modifications sont suffisantes, il peut simplement remplacer la copie de production du serveur frontal par sa copie, en redirigeant toutes les tables liées après le test.

Pas de problème, non? Eh bien, l’incrémentation de la numérotation automatique reste avec le front-end. Donc, si le côté de la production a simplement incrémenté la numérotation automatique de 50, 500 ou 5000 numéros pendant que l’administrateur travaillait sur la copie, la nouvelle copie de production essaiera de réessayer les mêmes numéros et ne pourra pas entrer d’éléments dans ces champs, à la fois, jusqu'à ce qu'il soit "en clair". Copiez 50, 500 ou 5 000 lignes de données Excel et essayez de les coller. Il y aura une erreur sur chaque ligne (assurez-vous de supprimer les messages suivants quand il apparaît), mais le numéro de téléphone automatique augmentera de ce montant et tout ira bien. aller à nouveau. Si vous utilisez les numéros automatiques de cette manière, il est conseillé d’augmenter les chiffres en fonction de la base de production avant de l’écraser avec votre copie de développement.

C’est aussi une façon de commencer votre numérotation automatique à un niveau supérieur à 1. Comme à l’époque, vous fixiez le compteur de visites de pages à 17 479 sur votre page d’accueil Geocities, alors qu’il n’avait été visité que 16 fois. Par toi.

RunsWithScissors
la source
0

Un moyen simple de réaliser quelque chose de similaire consiste à avoir un champ Numéro automatique (par exemple, "ID") et un deuxième champ calculé (par exemple, "ItemID") et à entrer la formule "1000+ [ID]" pour le champ calculé. Ce nouveau champ suivra automatiquement le champ Numéro automatique, mais débutera à 1001 au lieu de 1.

Brent
la source
0

Je pense qu’il est possible d’atteindre votre plage d’incréments personnalisée en créant d’abord une table masquée qui gardera l’écart initial des incréments automatiques commençant de zéro à votre choix, par exemple. cette table conservera le 0 à 1050. Ensuite, vous commencerez par des incréments de 1055, 1060, 1065, etc. Vous masquerez alors cette partie des données de la table. J'espère que cela t'aides. On dirait qu'Access a été conçu pour être initialement conçu à partir de zéro, car des conflits pourraient survenir.

ssurjie
la source