Adodb : probléme de portage

Cpustack Messages postés 27 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 avril 2012 - 17 avril 2012 à 11:03
Cpustack Messages postés 27 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 avril 2012 - 23 avril 2012 à 17:51
Bonjour,
J'ai développé une appli qui utilise adodb pour se connecter à une base ms ACCESS ou Mysql
Sur mon poste de développement c'est nickel mais sur d'autres machines la connexion se plante .

************* Texte de l'exception **************
System.InvalidCastException: Impossible d'effectuer un cast d'un objet COM de type 'ADODB.ConnectionClass' en type d'interface 'ADODB.Connection'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{00001550-0000-0010-8000-00AA006D2EA4}' a échoué en raison de l'erreur suivante : Cette interface n'est pas prise en charge (Exception de HRESULT : 0x80004002 (E_NOINTERFACE)).

Merci d'avance de vous pencher sur mon problème.

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 avril 2012 à 13:04
Salut

Tu postes ta question dans la catégorie VB6
Tu parles de ADODB
mais le message d'erreur ressemble à une erreur VB.Net

Alors ... Utiliserais-tu ADODB sous .Net ?
Ce ne serait pas judicieux --> ADO.NET
et la catégorie de la question serait incorrecte.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Cpustack Messages postés 27 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 avril 2012
17 avril 2012 à 14:30
Salut Jack.
Je pense que je suis comme le bourgeois gentilhomme qui fait de la prose sans le savoir. Je dois faire du .net à l’insu de mon plein gré.
Ci dessous le bout de code.
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'Ouverture de la connexion en fonction du type demandé Accesss ou Mysql
        Dim oCon As ADODB.Connection   ' Connexion vers la BD
        Dim Rs As ADODB.Recordset
        Dim strConnect As String ' Chaîne de connexion vers la BD
        Dim strSql As String
        Dim Couleur As Color
        Dim Choix_style As Integer
        Dim Num_terrain As String
        Dim pos_terrain As Integer

        Dim j As Integer
        Dim k As Integer
        ' Initialisation de la chaîne de connexion
        If Not Config.RdoBtn_aucun.Checked Then
            ' Initialisation de la chaîne de connexion
            If Config.RdoBtn_Mysql.Checked Then
                strConnect strConnect "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;DATABASE=Tournoi;PORT=3306;UID=root;PASSWORD=;OPTION=3;STMT=;"
 
            Else
                strConnect = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" & Application.StartupPath & "\tournoi.mdb"
            End If
            ' Initialisation de la connection
            oCon = New ADODB.Connection
            oCon.Open(strConnect)

            ' Initialisation d'une requête
            strSql = "select Num_match as num, terrain, etat from echeancier where etat<>0"

            Rs = New ADODB.Recordset
            Rs.Open(strSql, oCon)
            While Not Rs.EOF
               .......
               .......
               Rs.MoveNext()
            End While
            Rs.Close()
            
          
            'Fermeture de la connexion
            oCon.Close()
            Rs = Nothing
            oCon = Nothing


Au préalable j'ai ajouté dans les références du projet Microsoft ActiveX Data Objects 2.8 Library.
Voilà quelques précisions.
Merci
@+
Fabien
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 avril 2012 à 01:32
Merci, ça change des références habituelles.

Je te confirme que c'est bien du .Net, mais le souci c'est que tu utilises un objet COM, ADODB, qui appartient à ... l'ancien monde.
Ce qui t'oblige à joindre le fichier de référence avec ton projet, au cas où celui-ci n'existerait pas sur la machine cible (ce qui me parait rare, mais bon).
Il vaudrait mieux migrer vers les outils de même génération que le langage, ADO.Net
Je n'en ai pas l'expérience, mais il me semble évident que les deux objets (COM et .Net) doivent se ressembler, donc modif mineure de ton programme.
Il y a une source qui semble proposer de comparer ces deux versions. Tu la trouveras en première place dans une recherche de "ado.net" parmi les sources en .Net uniquement.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 avril 2012 à 01:35
D'ailleurs, la seconde source issue de cette même recherche est peut-être plus pratique pour la compréhension des différences (car il semble y en avoir de belles)
0

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

Posez votre question
Cpustack Messages postés 27 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 avril 2012
19 avril 2012 à 11:31
Merci Jack pour ces pistes.
Pour l'instant je vais laisser ça en standby.
Je suis parti sur une autre solution : un projet utilisait la base pour mettre à jour des données qu'un autre affichait. J'ai donc fusionné mes deux projets en un. Du coup la mise à jour de l'un par l'autre s'effectue directement en 'jouant' avec les données.
L'utilisation d'une base en externe reviendra à l'ordre du jour car je compte pouvoir accéder aux données mise à jour via des pages PHP/MySQL
Merci encore de ta patience.
@+
Fabien
0
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
19 avril 2012 à 23:11
Bonjour,

Que ce soit du .Net ou VBA, le driver pour se connecter à une base de données est le même. Si ca marche sur ta machine et pas sur d'autres, c'est que le driver de connection MySql n'est pas installé ou mauvaise version.

Yann
0
Cpustack Messages postés 27 Date d'inscription vendredi 1 octobre 2004 Statut Membre Dernière intervention 23 avril 2012
23 avril 2012 à 17:51
Bonjour Yann,
J'y ai bien pensé mais les drivers sont bien les mêmes.
Merci tout de même de cette piste.
@+
Fabien
0
Rejoignez-nous