Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/08/2011, 16h03   #1
Membre actif
 
Inscription : septembre 2007
Messages : 630
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 630
Points : 165
Points : 165
Par défaut Création d'une table et ajout d'un champ indexé NuméroAuto

Bonjour,

Pour arriver à mes fins, je vais devoir créer une table TEMPO via l'exécution sous vba d'une requête SQL de création de table.

Mon soucis est qu'il me manque un champ inexistant. Je veux donc savoir s'il est possible en vba, d'ajouter un champ "ID" indexé sans doublon, type NuméroAuto, (valeur de départ =1) dans cette table TEMPO ?

Merci si vous pouvez m'aider
Thib
tibofo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 16h05   #2
Membre actif
 
Inscription : septembre 2007
Messages : 630
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 630
Points : 165
Points : 165
il suffit que je pose une question pour que je tombe sur la réponse dans la FAQ :


Citation:
Ajout d'un champ NuméroAuto à une table existante en SQL
[haut]
auteur : Maxence HUBICHE

ALTER TABLE MaTable ADD COLUMN MonChampID COUNTER
désolé
Merci Maxence HUBICHE

Mais comment dire pour qu'il démarre à 1 ou à 100 ?
tibofo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 17h46   #3
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Exemple pour démarrer à 100 avec incrément de 10
Code :
ALTER TABLE MaTable ADD COLUMN MonChampID COUNTER(100, 10)
Cependant, il faut que la table soit vide.
Sinon la valeur de départ et l'incrément seront de 1 pour les enregistrements existants.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 18h26   #4
Membre actif
 
Inscription : septembre 2007
Messages : 630
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 630
Points : 165
Points : 165
Fantastique ! Merci

Mais j'ai un petit soucis : la table est créé depuis une requête Création de table.
Or Access me transforme d'office un champ NUM_ORD numérique en type = NuméroAuto.

Donc du coup, lorsque je lance la création de mon champ "ID" : ACCESS me sort une erreur N° 3090 :
Citation:
La table résultante ne peut avoir plus d'un champ AutoNumber
Je fais :
Code :
DoCmd.RunSQL "ALTER TABLE TEMPO ALTER COLUMN NUM_ORD TYPE integer"
et ACCESS m'indique une erreur de syntaxe. Mais je ne vois pas où ??


Edit : trouvé !!
Code :
DoCmd.RunSQL "ALTER TABLE TEMPO ALTER COLUMN NUM_ORD TYPE integer"

Merci
tibofo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/08/2011, 18h55   #5
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Je vois que tu as trouvé, ce que je m'apprêtais à répondre

Il y a aussi une autre façon, si ta requête de création de table ne fait pas un SELECT * INTO ....
C'est de convertir le champ avec CLng.
Code :
SELECT CLng(NomTable.NUM_ORD) As NUM_ORD, champ2, Champ3, ... INTO ...
Le champ qui était NuméroAuto devient Entier Long dans la nouvelle table.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/08/2011, 13h32   #6
Invité régulier
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 6
Points : 6
Bonjour,
J'ai ma table principale qui contient une centaine de valeur et je souhaite changer ma clé principale en un champ numéroAuto (qui va conserver les premières valeurs de ma clé et incrémenter de 1 à partir de la plus grande valeur). Est ce possible?
Merci
tounam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 18h56   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour tounam,

Voici une méthode qui devrait fonctionner.
(A tester dans une copie de ta base de données)

Pour l'exemple, la table s'appelle MaTable et le champ clé s'appelle MonChampCle.
  • Copie ta table MaTable en MaTable_Old.
  • Supprime les enregistrements de MaTable.
  • Modifie le type du champ MonChampCle en NuméroAuto.
  • Avec une requête Ajout, ajoute les enregistrements de MaTable_Old dans MaTable.
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 09h18   #8
Invité régulier
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 21
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2011
Messages : 21
Points : 6
Points : 6
Bonjour, ça a marché !!!
Je te remercie!!^^
tounam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h45.


 
 
 
 
Partenaires

Hébergement Web