Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1730 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème pour déclaration d'un champ auto increment

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème pour déclaration d'un champ auto increment

n°1343773
hacksi
Posté le 11-04-2006 à 09:13:20  profilanswer
 

Bonjour,
 
je sais que ce problème à ce sujet revient souvent, mais je n'ai pas réussi à trouver la réponse à ma question.
Donc sous access, en vba j'essaye de créer des tables et l'un des champs de ces tables doit être de type auto increment mais je ne parvient pas à le déclarer correctement. J'ai essayé différentes méthodes mais sans succès et voici la dernière en date : CurrentDb.Execute "CREATE TABLE STATION__ (Id_station INT AUTO_INCREMENT PRIMARY KEY, Nom VARCHAR (50))"
 
Voila j'espère que vous pourrez m'aider
Merci

mood
Publicité
Posté le 11-04-2006 à 09:13:20  profilanswer
 

n°1343817
olivthill
Posté le 11-04-2006 à 10:05:16  profilanswer
 

Pour les numéros automatiques, il ne faut pas spécifier le type et le mot clef est AUTOINCREMENT sans underscore :
 


CurrentDb.Execute "CREATE TABLE STATION__ (Id_station AUTOINCREMENT PRIMARY KEY, Nom VARCHAR (50))"

 

n°1343886
hacksi
Posté le 11-04-2006 à 11:01:25  profilanswer
 

ok merci ça marche :) il me semblait pourtant avoir déjà essayé cette méthode. Enfin bref le principale c'est que celà fonctionne encore merci

n°1344761
hacksi
Posté le 12-04-2006 à 09:54:31  profilanswer
 

Une autre petite question si je souhaite déclarer la table de la façon suivante :

Code :
  1. Dim Table As TableDef, Idx As Index
  2. Dim Chp As Field, Bd As Database
  3. Set Bd = CurrentDb
  4. CurrentDb.Execute "DROP TABLE STATION__"
  5. Set Table = CurrentDb.CreateTableDef("STATION" )
  6. With Table.Fields
  7.     .Append Table.CreateField("Id_station", AUTOINCREMENT)
  8.     .Append Table.CreateField("Nom", dbText, 50)
  9. End With
  10. Set Idx = Table.CreateIndex("I1" )
  11. Idx.Fields.Append Idx.CreateField("Id_station" )
  12. Idx.Primary = True
  13. Table.Indexes.Append Idx
  14. Bd.TableDefs.Append Table


 
Comment je fais pour déclarer le champ autoincrement ??

n°1344781
olivthill
Posté le 12-04-2006 à 10:30:25  profilanswer
 

Of course .Append Table.CreateField("Id_station", AUTOINCREMENT) ne va pas marcher, il faut un dbquelquechose.
 
En m'inspirant de lexemple à http://msdn.microsoft.com/library/ [...] abaseX.asp je pense qu'il faut faire :

With Table.Fields
    .Append Table.CreateField("Id_station", dbLong + dbAutoIncrField)
    .Append Table.CreateField("Nom", dbText, 50)
End With

n°1344785
hacksi
Posté le 12-04-2006 à 10:35:57  profilanswer
 

je viens d'essayer mais ça ne marche pas.
Erreur : type de champs de données non valide

n°1344789
hacksi
Posté le 12-04-2006 à 10:38:13  profilanswer
 

Sinon je fais :

Code :
  1. Set Table = CurrentDb.CreateTableDef("UF__" )
  2. Set Chp = Table.CreateField("Id_uf", dbLong)
  3. Chp.OrdinalPosition = 1
  4. Chp.Attributes = dbAutoIncrField
  5. Table.Fields.Append Chp
  6. Set Chp = Table.CreateField("Num_uf", dbText, 50)
  7. Table.Fields.Append Chp
  8. Set Chp = Table.CreateField("Id_equip", dbLong)
  9. Table.Fields.Append Chp
  10. Set Chp = Table.CreateField("Libelle", dbText, 50)
  11. Table.Fields.Append Chp
  12. Set Idx = Table.CreateIndex("I2" )
  13. Idx.Primary = True
  14. Idx.Required = True
  15. Idx.Unique = True
  16. Set Chp = Idx.CreateField("Num_uf" )
  17. Idx.Fields.Append Chp
  18. Set Chp = Idx.CreateField("Id_equip" )
  19. Idx.Fields.Append Chp
  20. Table.Indexes.Append Idx
  21. Bd.TableDefs.Append Table


 
donc la le champ est bien en NumeroAuto mais la le problème c'est que mes champs ne sont pas indexés

n°1344829
hacksi
Posté le 12-04-2006 à 11:03:43  profilanswer
 

en fait j'ai remarqué que c'est lorsque je met plusieurs champs dans l'index que ça ne marche plus mais je n'ai pas de message d'erreur.

n°1344871
tegu
Posté le 12-04-2006 à 11:36:40  profilanswer
 

Le fait d'ajouter les champs à la collection de l'index avant de déclarer la propriété .Primary = True change-t-il quelque chose ?

n°1344907
hacksi
Posté le 12-04-2006 à 12:34:28  profilanswer
 

Non celà ne change rien

mood
Publicité
Posté le 12-04-2006 à 12:34:28  profilanswer
 

n°1346229
hacksi
Posté le 13-04-2006 à 16:29:31  profilanswer
 

Personne ne peut m'aider... :(

n°1346246
olivthill
Posté le 13-04-2006 à 16:40:12  profilanswer
 

Le lien chez Microsoft que j'ai cité plus haut donne un exemple qui marche (bien sûr c'est un peu différent, faut un peu l'adapter), et une rapide recherche sur Google avec les mots CreateIndex et CreateField retourne d'autres réponses qui constituent une source d'inspiration pour ta solution.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème pour déclaration d'un champ auto increment

 

Sujets relatifs
Probleme script Upload [résolu]Problème récupération Valeur de variable
problème avec le signe supérieur[PHP][XSLT][entity] Problème avec les Entities ...
[Résolu]Problème avec un script de dockbar type mac OSprobleme de rafraichissement de l affichage sous firefox
problème avec la commande "connect to"probleme lien banniere flash
problème avec la commande xcopyProbleme avec le controle LEAD dans VB6
Plus de sujets relatifs à : Problème pour déclaration d'un champ auto increment


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR