VB 2005 et creation de base Access

Fermé
nino2 - 7 mars 2010 à 13:20
 Utilisateur anonyme - 9 mars 2010 à 01:58
Bonjour 8-)

voici le code qui pose problème
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
        'CREATE BASE

        Dim tableName As String = "Table"

        ' Il faut ajouter la reference MICROSOFT ADO ext 2.8 for dll and security ' déjà fait ! il faut rajouter si non fait -> project Ad reference dans le MENU
        Dim databasename As String
        databasename = InputBox("Nom de cette nouvelle base (elle sera créée à la racine du C:)")

        Dim catX = New ADOX.Catalog
        catX.create("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & databasename & ".mdb")
        MsgBox("Bravo. Cette base a bien été créée !")
        Me.Text = "dernière base créée : " & databasename
        catX = Nothing

        ' Part 2: Creation des Tables en utilisant OLEDB Provider   
        Dim con As New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source =" & databasename & ".mdb")
        con.Open() ' ouverture de la creation des tables

        'Get database schema  
        Dim dbSchema As DataTable = con.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, tableName, "TABLE"})
        con.Close()
        ' If the table exists, the count = 1  
        If dbSchema.Rows.Count > 0 Then
            ' do whatever you want to do if the table exists  
        Else
            'do whatever you want to do if the table does not exist  
            ' e.g. create a table  
            Dim cmd As New OleDb.OleDbCommand("CREATE TABLE [" + tableName + "] ([NOM] TEXT(10), [PRENOM] TEXT(10))", con)
            con.Open()
            cmd.ExecuteNonQuery()
            MessageBox.Show("Tables bien créées")
            con.Close()
        End If

    End Sub


Donc ça correspond au bouton enregistrer du programme ... il me demande bien quel nom donner à la base, mais il bloque sur la ligne en gras, a savoir "catX.create("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & databasename & ".mdb")" où il me dit (lorsque je mets le nom de la base et que je fais ok) Classe non enregistrée (avec le titre "L'exception COMException n'a pas été gérée").

J'ai bien ajoute la reference MICROSOFT ADO ext 2.8 for dll and security ...et je possede VB 2005 pro sp1 sous windows 7. Pour info, j'ai telecharge la version 2CD de MSDNAA, pas la version DVD, ca viendrait peut etre de la?!

Si vous avez des idées ...

Merci :)
A voir également:

3 réponses

Utilisateur anonyme
7 mars 2010 à 19:12
bonjour,
Si on veut absolument créer une BD Access par code, il faut passer par DAO.

Référence: ajouter le composant COM 'Microsoft DAO 3.6 Library 5'

Imports DAO

Imports DAO.LanguageConstants

Dim result As Boolean = False

Dim dbe As New DBEngine

Dim db As Database

Try

db = dbe.CreateDatabase("c:\test.mdb", dbLangGeneral)

If Not (db Is Nothing) Then result = True

Catch ex As Exception : MsgBox(ex.Message)

Finally : If Not (db Is Nothing) Then db.Close()

End Try

0
Salut

merci pour ta réponse

J'ai essayé ton code dans un projet à part, et il me retourne une erreur "La récupération de la fabrique de classe COM pour le composant avec le CLSID {00000100-0000-0010-8000-00AA006D2EA4} a échoué en raison de l'erreur suivante : 80040154." sur la ligne
Dim dbe As New DBEngine


Merci pour ton aide =)
0
Utilisateur anonyme
9 mars 2010 à 01:58
tu as bien ajouté le composant d'access dao? je doute.
0