VB 2005 et creation de base Access

nino2 -  
 Utilisateur anonyme -
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 :)

3 réponses

  1. Utilisateur anonyme
     
    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
  2. nino2
     
    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
  3. Utilisateur anonyme
     
    tu as bien ajouté le composant d'access dao? je doute.
    0