Création db complete adox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 259 fois - Téléchargée 28 fois

Contenu du snippet

Simple : Ceci est une petite procédure permettant de créer une base avec ADOX.
Du coup, bien sûr, il faut ajouter dans les références de son projet "Microsoft ADO Ext. 2.X for DDL and Security" (msadox.dll) !

La base contient 2 tables.
Les tables contiennent :
- Une clé primaire unique auto-incrémentée (super-relou à trouver)
- Des champs non requis, ie dont le remplissage n'est pas obligatoire (encore plus relou !!!)
- Valeur par défaut (Ca, quand on a trouvé les 2 1ers, ça va)
- La création d'un champ OLE (image dans la DB)
- clés étrangères et indexes pour la recherche.

J'ai lutté plusieurs heures pour faire un truc qui fonctionne... Ca devrait faire gagner du temps à pas mal de monde.

Source / Exemple :


Sub createDB()
    Dim cat As ADOX.Catalog
    Dim tbl As New ADOX.Table
    Dim i As Single

   Set cat = New ADOX.Catalog
   cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.path & "\new.mdb"
' J'ai passé la partie qui consiste à vérifier que la base n'existe pas déjà, et autres
' modules pour déterminer le nom de la base...

' Création d'une table simple : Nationalité
    With tbl
        .Name = "Nationalite"
' ce qui suit est indispensable pour jouer avec les properties des champs
        Set .ParentCatalog = cat
' Permier champ : clé primaire
        .Columns.Append "ID_Nationalite", adInteger
' Préciser qu'elle est auto-incrémentée
        .Columns("ID_Nationalite").Properties("AutoIncrement") = True

' Nouveau champ (on trouve la définition des adInteger et autres dans le MSDN)
        .Columns.Append "Nationalite", adVarWChar, 50
' NB : On peut déterminer une valeur par défaut avec :
        .Columns("Nationalite").Properties("Default") = "France"
' Création d'un champ OLE pour y inclure une image :
        .Columns.Append "Image", adLongVarBinary

    End With
' Précision que les champs ne sont pas en "required"... le nom de la properties
' est explicite comme vous voyez...
    For i = 0 To 2
        tbl.Columns.Item(i).Properties("Nullable") = True
    Next i
    cat.Tables.Append tbl
' Création de la clé primaire à proprement parler
    tbl.Keys.Append "ClePrimaire", adKeyPrimary, "ID_Nationalite", "Nationalite"

' Pareil pour une table DVD... 
' Commentaires sur les seuls éléments nouveaux
    Set tbl = New ADOX.Table    
    With tbl
        .Name = "DVD"
        Set .ParentCatalog = cat
        .Columns.Append "ID_DVD", adInteger
        .Columns("ID_DVD").Properties("AutoIncrement") = True

        .Columns.Append "TitreVO", adVarWChar, 75
        .Columns.Append "TitreVF", adVarWChar, 75
        .Columns.Append "Description", adVarWChar, 150
        .Columns.Append "ID_Nationalite", adInteger
        .Columns.Append "isFilm", adBoolean
    End With
' !!! ATTENTION : l'expérience montre que MEME SI LA PROPERTIES EST PRESENTE,
' il n'est pas possible de mettre un champ en NON-required (pas d'erreur) s'il est 
' déclaré en adBoolean !!!!
    For i = 0 To 4
        tbl.Columns.Item(i).Properties("Nullable") = True
    Next i
    cat.Tables.Append tbl
    tbl.Keys.Append "ClePrimaire", adKeyPrimary, "ID_DVD", "DVD"
' Création d'une clé étrangère avec la table précédente
    tbl.Keys.Append "DVDID_Nationalite", _
              adKeyForeign, "ID_Nationalite", "Nationalite", "ID_Nationalite"
' Créations d'index de recherche
    tbl.Keys.Append "DVDTitreVF", adKeyUnique, "TitreVF", "DVD", "TitreVF"
    tbl.Keys.Append "DVDTitreVO", adKeyUnique, "TitreVO", "DVD", "TitreVO"
End Sub

Conclusion :


Première participation à la communauté VB France ;-)

A voir également

Ajouter un commentaire Commentaire
Messages postés
2
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
16 janvier 2005

Merci pour ce code bioman2 !
pour moi qui débute avec ADOX c'est bien pratique . J'avais justement des problèmes pour définir de clés étrangère et je crois que ça va bien m'aider.
Saurais-tu où je peux trouver une doc sur ADOX qui présente modèle objet et surtout des explications sur les différentes propriétés de chaque objet où collection ?
Merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.