Erreur création base Access

Résolu
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017 - 7 sept. 2012 à 12:08
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017 - 8 sept. 2012 à 10:05
Bonjour, je suis en train de mettre en place une architecture n-tiers avec visual studio 2012.

J'ai donc un projet IHM, un projet DAL + 2 autres projet

Je voudrais que au premier lancement de mon application une base Access se crée mais j'ai un message d'erreur qui indique "Erreur création base, classe non enregistrée"

IHM
Imports DAL

Public Class Accueil

    'objet Connexion
    Private connect As New Connexion

    Private Sub Accueil_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Try
            If connect.verif_chemin() = False Then
                'MessageBox.Show("azerty")
                connect.Create_base("a", "z")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message, ".:: ERREUR", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        
    End Sub
End Class


DAL
' Ajout référence : Microsoft ADO Ext. 2.8 for DDL and Security
Imports ADOX

Public Class Connexion

#Region "Attributs"

    'chemin de la base
    Private chemin As String = My.Application.Info.DirectoryPath & "\DataBase.accdb"
    'connexion à la BD
    Private cnx As OleDb.OleDbConnection = Nothing
    'Attribut chaine de connection (fournisseur d'accès aux données + chemin)
    Private cnxstr As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & chemin & ";"

#End Region

#Region "Fonctions"

    ' test existance base
    Public Function verif_chemin() As Boolean
        Return System.IO.File.Exists(chemin)
    End Function

    'créer base
    Public Sub Create_base(pseudo As String, mdp As String)
        Try
            Dim Cat As New Catalog
            Dim chaine_cnx As String
            chaine_cnx = cnxstr & "User ID=" & pseudo & ";Password=" & mdp & ";"
            Cat.Create(chaine_cnx)
        Catch ex As Exception
            Throw New Exception("Erreur création base" & Environment.NewLine & ex.Message)
        End Try
    End Sub
#End Region

End Class


De plus j'ai déjà réalisé ce genre d'applications avec une visual basic 2010 et je n'avais pas eu de problème particulier.

4 réponses

thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
8 sept. 2012 à 10:05
En faite ma chaine de connexion n'était pas bonne maintenant sa marche je met l'info pour les futurs chercheurs. J'utilise Visual Studio 2012 & Access 2010.

'Ajout référence COM : Microsoft DAO 3.6 Library 5
Imports ADOX

Public Class Connexion

#Region "Attributs"

    'chemin de la base
    Private chemin As String = My.Application.Info.DirectoryPath & "\DataBase.accdb"
    'connexion à la BD
    Private cnx As OleDb.OleDbConnection = Nothing
    'Attribut chaine de connection (fournisseur d'accès aux données + chemin)
    Private cnxstr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & chemin

#End Region

#Region "Fonctions"
    ' test existance base
    Public Function verif_chemin() As Boolean
        Return System.IO.File.Exists(chemin)
    End Function

    'créer base
    Public Sub Create_base(pseudo As String, mdp As String)
        Try
            Dim cat As New Catalog
            cat.Create(cnxstr)
        Catch ex As Exception
            Throw New Exception("Erreur création base" & Environment.NewLine & ex.Message)
        End Try
    End Sub
#End Region
End Class

3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 sept. 2012 à 12:53
Bonjour,

Essayes de créer une "connexion" pour une base Access, un Cataloque, c'est plus pour SqlServer, non ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
thomasaurelien Messages postés 71 Date d'inscription jeudi 7 juillet 2011 Statut Membre Dernière intervention 27 novembre 2017
7 sept. 2012 à 15:33
En faite, j'ai trouvé la solution grâce aux cours de Plasserre :
http://plasserre.developpez.com/cours/vb-net/?page=bases-donnees3#LXVII-G-1

De plus, je met mon code si sa peux aider :
'Ajout référence COM : Microsoft DAO 3.6 Library 5
Imports DAO
Imports DAO.LanguageConstants

Public Class Connexion

#Region "Attributs"

    'chemin de la base
    Private chemin As String = My.Application.Info.DirectoryPath & "\DataBase.accdb"

#End Region

#Region "Fonctions"

    ' test existance base
    Public Function verif_chemin() As Boolean
        Return System.IO.File.Exists(chemin)
    End Function

    'créer base
    Public Sub Create_base(pseudo As String, mdp As String)
        Try
            Dim dbe As New DBEngine

            Dim db As Database
            db = dbe.CreateDatabase(chemin, dbLangGeneral)
        Catch ex As Exception
            Throw New Exception("Erreur création base" & Environment.NewLine & ex.Message)
        End Try
    End Sub
#End Region
End Class


Par contre, je n'ai pas trouvé si je voudrai créer un base protégé par un mot de passe ? si quelqu'un à un exemple ou un lien ? merci
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 sept. 2012 à 18:11
Bonjour,

1 grosse remarque :
Évites DAO, il n'est plus maintenu et ADO est son remplaçant.
Utilises plutôt ADO.NET (déclinaison de ADO pour .NET)

http://www.vbfrance.com/codes/ACCESS-VB-NET_33198.aspx

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
Rejoignez-nous