Astuces de recherche...
Home
- Accueil & nouveautés
- Les newsgroups VB
- Téléchargements
- L'équipe
- Nous contacter
- Liens
Rubriques
- Toutes les questions
- Affichage & graphismes
- Algorithmique
- API
- Base de registre
- Bases de données
- Contrôles
- Date & heure
- Déploiement
- Divers
- Erreurs & problèmes
- Fichiers & dossiers
- Généralités
- Impression
- Internet & mails
- Math
- Multimédia
- Réseaux
- Structures de données
- Texte & strings
- VB .Net
- VB Script
- VBA
- Windows

Question 95

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.

Date de publication : 26 janvier 2003
Dernière modification : 26 janvier 2003
Rubriques : Bases de données
Mots-clés : base de données, ajouter, créer, champs, Access, tables, ADO, ADODB, ADOX, AutoNumber, AutoIncrement, COUNTER, CREATE TABLE