Database building error : classe non enregistrée

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - Modifié par Attila54 le 27/08/2013 à 15:34
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 28 août 2013 à 18:48
Bonjour,
j'ai une appli qui, lors de son lancement, crée un petit fichier ophtalmo.accdb (via une fonction) dans le rep "mes documents" de ma station si le fichier n'existe pas.

Voila un morceau de la sub :
 Public Function CreateAccessDatabase(ByVal DatabaseFullPath As String) As Boolean
        Dim cat As New ADOX.Catalog()
        Dim tbl1 As New ADOX.Table
        Dim tbl2 As New ADOX.Table
        Try
            cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BddPath & "\Ophtalmo.accdb")
            ' Création de la table Praticiens
            With tbl1
                .Name = "Praticiens"
                ' le seul champ de cette table
                .Columns.Append("Praticien", ADOX.DataTypeEnum.adVarWChar, 50)
            End With
            cat.Tables.Append(tbl1)

            ' Création de la table Consultations
            With tbl2
                .Name = "Consultations"
                ' les champs de la BDD 
                .Columns.Append("praticien", ADOX.DataTypeEnum.adVarWChar, 50)
                .Columns.Append("day", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("nom", ADOX.DataTypeEnum.adVarWChar, 50)
                .Columns.Append("prenom", ADOX.DataTypeEnum.adVarWChar, 50)
                .Columns.Append("naissance", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("age", ADOX.DataTypeEnum.adVarWChar, 3)
                .Columns.Append("oeil", ADOX.DataTypeEnum.adVarWChar, 2)
                .Columns.Append("S", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("C", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Axe", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("sc", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("cc", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("ac", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("dva", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("add", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("nva", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("K1", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("K2", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("QI", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Pachy", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("ACD", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("AL", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("AD", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Pseudophake", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Pupilmeso", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Pupilphoto", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Pupilmax", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("SL", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("QL", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Q1et2", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Epsilon", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("QT", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("Qideal", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("QF", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("deltaQ", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("KIMAGE", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("TS", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("relift", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("version", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("flagimage", ADOX.DataTypeEnum.adVarWChar, 1)
                .Columns.Append("qileft", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("qiright", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("deltaqi", ADOX.DataTypeEnum.adVarWChar, 10)
                .Columns.Append("qefficient", ADOX.DataTypeEnum.adVarWChar, 10)
            End With
            cat.Tables.Append(tbl2)
            Return True

        Catch Excep As System.Runtime.InteropServices.COMException
            messageaff = "Database building Error : " & Excep.Message
            infoaff = "Information"
            MessageBox.Show(messageaff, infoaff, MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Return False
        Finally
            cat = Nothing
        End Try
    End Function


Je rencontre le souci suivant depuis ce matin, après test sur une nouvelle station equipée vs2012

Je n'ai donc pas le ophtalmo.accdb dans "mes documents"

lorsque le fonction tente de le créer, j'ai :
Database building error - classe non enregistrée

Comment ce fait il d'après vous ?

Je précise que les références suivantes sont ok
- Microsoft ADO Ext. 2.8 for DDL and Security
- Microsoft Office 14.0 Object Library
- Microsoft.Office.Interop.Excel
- Microsoft.VisualBasic.PowerPacks.Vs

et pour les espaces de noms, ADOX est bien présent aussi

Je n'ai aucune erreur de build en F5
Merci

--

11 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 août 2013 à 15:41
Salut

 cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BddPath & "\Ophtalmo.accdb")


BddPath ? ce n'est pas plutot DatabaseFullPath
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
27 août 2013 à 15:43
ben cela a toujours fonctionne avec bddpath

--
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 27/08/2013 à 15:51
alors à quoi sert
ByVal DatabaseFullPath As String
?
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
Modifié par Attila54 le 27/08/2013 à 16:05
ben si je fais
cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DatabaseFullPath & "\Ophtalmo.accdb"


j'ai exactement la même erreur

sur l'ancienne machine qui fonctionnait, la seule différence était que j'avais office 2013 et non office 2010

--
0
DatabaseFullPath et BddPath sont quoi ?
les chemins des fichiers .accdb je suppose !

pose un point d'arrêt sur cat.Create("Provider=Microsoft.AC etc..... et regarde ce que valent ces deux variables
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
regarde aussi si les appels à cette fonction sont bien faits !
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
27 août 2013 à 16:16
mets un point d'arret à la ligne
Public Function CreateAccessDatabase

et ensuite continue pas à pas F8 et dis à quelle ligne il y a un catch ?
0
Provider=Microsoft.ACE.OLEDB.12.0

Les providers sont pas les mêmes selon Office 2010 et Office 2013 je crois !
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 août 2013 à 08:47
Bonjour Galain

C'est bien le provider que j'avais initialement. Il fonctionnait sur 2010 et sur 2013.

Si je mets un point d'arrêt sur cat.Create("Provider=Microsoft.AC ... bddpath me donne ""C:\Users\moncompte\Documents" donc "mes documents" et le cat.create me donne "+ ADOX._Catalog {ADOX._Catalog} ADOX._Catalog"






--
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 août 2013 à 09:01
re shayw,

si je procede comme tu dis, c'est
 cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & BddPath & "\Ophtalmo.accdb")
qui est catchée et me renvoie directement sur
        Catch Excep As System.Runtime.InteropServices.COMException


Les détails ici :
http://img853.imageshack.us/img853/5121/h4ih.jpg

merci
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 août 2013 à 15:06
par contre je viens de m'apercevoir d'une chose bizarre
une ancienne version fonctionnelle et compilée me fait pareil sur cette station et fonctionne parfaitement bien sur une autre ..... me demande si y'aurait pas un souci entre vs2012 et une ancienne version qui aurait été mal désinstallée ......


--
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
28 août 2013 à 18:48
Bon ben on dirait bien que c'est un "chicorage" de versions VS
Je viens de remettre VS2012 sur une station "vierge" et plus de souci. VS c'est bien mais que de soucis a la desinstallation

En tout cas merci a vous pour l'aide :)
0
Rejoignez-nous