Comment créer un champ de type "AutoNumber" ou "AutoIncrement" dans une base de données Access ?
La première solution possible consiste à employer le modèle objet ADOX qui
est consacré à la structure des bases de données (le modèle objet ADODB
étant lui consacré à la gestion de données).
Dans ce cas, il faut d'abord rajouter une référence à ADOX. Pour ce faire,
cliquez sur le menu "Projet/Références...". Dans la liste des
références disponibles, sélectionnez "Microsoft ADO Ext. 2.X for DDL and
Security". Vous pouvez maintenant essayer l'exemple suivant qui ajoute, à
une table d'une base de données Access existante, un champ de type "AutoIncrement".
Celui-ci est ensuite défini comme étant la clé primaire :
Option Explicit
Private Sub Form_Load()
Dim cat As ADOX.Catalog
Dim col As ADOX.Column
Dim key As ADOX.key
Set cat = New ADOX.Catalog
' Connexion à la base de donnée
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Mes Documents\MyDataBase.mdb"
' Création et ajout d'un champ de type "AutoNumber"
Set col = New ADOX.Column
With col
.Name = "Champ1"
.Type = adInteger
Set .ParentCatalog = cat ' Doit être
défini avant de pouvoir accéder aux propriétés
.Properties("Autoincrement")
= True
End With
cat.Tables("Table1").Columns.Append col
' Définit le champ ajouté comme étant la clé primaire
Set key = New ADOX.key
With key
.Name = "PrimaryKey"
.Type = adKeyPrimary
.RelatedTable = "Table1"
.Columns.Append "Champ1"
End With
cat.Tables("Table1").Keys.Append key
Set key = Nothing
Set col = Nothing
Set cat = Nothing
End Sub
Concernant la création de clés primaires, vous pouvez aussi consulter la
fiche suivante : 252908
- HOWTO: Création d'une table avec clé primaire par ADOX.
La deuxième solution possible est d'exécuter une requête SQL. Dans ce cas,
il est inutile d'employer le modèle objet ADOX, les requêtes SQL pouvant être
exécutées en employant le modèle objet ADODB.
Si ce n'est déjà fait, n'oubliez donc pas de rajouter une référence à
ADODB. Pour ce faire, cliquez sur le menu "Projet/Références...".
Dans la liste des références disponibles, sélectionnez "Microsoft
ActiveX Data Objects 2.X Library". Vous pouvez maintenant essayer le code
suivant qui crée une table, ajoute un champ de type "AutoIncrement"
et le définit comme étant la clé primaire :
Option Explicit
Private Sub Form_Load()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
' Connexion à la base de donnée
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=C:\Mes Documents\MyDataBase.mdb"
' Création de la table avec un champ "AutoIncrement"
cnn.Execute "CREATE TABLE Table1 (Champ1 COUNTER PRIMARY
KEY)"
cnn.Close
Set cnn = Nothing
End Sub
Une autre syntaxe possible pour ajouter un champ de ce type est d'employer le
mot-clé "AUTOINCREMENT" au lieu de "COUNTER".
Notez qu'il est aussi possible de définir la valeur de départ ainsi que le
"pas" de l'incrémentation automatique. Par exemple la requête
suivante crée un champ "AutoNumber" dont la valeur de départ sera 10
et qui sera incrémenté de 5 à chaque ajout d'un enregistrement :
CREATE TABLE Table1 (Champ1 AUTOINCREMENT(10,5))
Vous trouverez plus d'informations sur la syntaxe SQL utilisée par Access à
l'adresse suivante : Intermediate
Microsoft Jet SQL for Access 2000.
Si vous désirez plus d'informations sur ADOX et ADODB, lisez les excellents
technopoches consacrés à ces technologies et qui sont disponibles à l'adresse
suivante : http://www.microsoft.com/france/msdn/support/technopoches/default.asp. |