Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

PROBLEME DE CONNEXION A UNE BASE DE DONNEES MySQL

12 RÉPONSES 12
RÉSOLU
Répondre
Message 1 sur 13
benamecanique
1921 Visites, 12 Réponses

PROBLEME DE CONNEXION A UNE BASE DE DONNEES MySQL

Bonjour,

 

Je suis entrain de developper une petite macro sur INVENTOR AUTODESK Professionnal 2019.

avant de m'y mettre, j'ai fait des test de mon programme VBA qui marche tres bien en liaison avec la base de données MySQL.

 

par contre sur INVENTOR avec le meme programme et les meme option (References : ActiveX.....) ca ne marche pas !

 

ca me sort le message d'erreur suivant :

Run-time error '-2147467259 (80004005)':

[Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non specifié.

 

A votre avis d'ou vient l'erreur.

est ce qu'il sagit d'une connexion ODBC non etablie ?

si oui , pourquoi ca marché pour le test de mon fichier excel?

 

Merci d'avance.

12 RÉPONSES 12
Message 2 sur 13
gmassart
en réponse à: benamecanique

Bonjour

A priori il trouve pas le pilote, dans ton cas https://dev.mysql.com/downloads/connector/odbc/

Essaie de réinstaller le pilote, redémarre le PC voit si ça marche

Je pense que tu peux aussi te connecter à Mysql avec une connexion nommée > dans adminstration des sources de données ODBC tu peux créer une sorte de connecteur nommé qui va contenir nom de serveur, mot de passe etc. et ensuite utiliser juste ça pour permettre à INVENTOR d'accéder à la base.

J'avais dans le temps une page avec toutes les différentes manières de se connecter à des bases de données en VBA mais je retrouve plus

Perso j'ai une connexion SQL SERVER directe sans passer par les sources odbc et j'ai pas de serveur Mysql pour tester de mon côté

 

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022

Message 3 sur 13
patrick.emin
en réponse à: benamecanique

Bonjour @benamecanique 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton "Approuver la solution" en bas de la réponse qui apporte une solution?

Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or
Message 4 sur 13
benamecanique
en réponse à: gmassart

Bonjour,

 

Effectivement il faut connecter l'ODBC pour pouvoir connecter la base de donnée MySQL avec mon programme.

c'est ce que j'avais fait pour connecter ma base de données avec le fichier excel, mais malheureusement ça ne marche pas dans l’éditeur VBA d'Inventor.

Message 5 sur 13
benamecanique
en réponse à: gmassart

Pouvez vous me dire comment vous avez fait pour ne pas utiliser l'ODBC ?

Message 6 sur 13
gmassart
en réponse à: benamecanique

'Déclaration de la variable de connexion
    Dim cnx As ADODB.Connection
    Dim rst As ADODB.Recordset
    Set cnx = New ADODB.Connection
    Set rst = New ADODB.Recordset
    'Définition de la chaîne de connexion
    'cnx.ConnectionString = "UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";" & "DRIVER={SQL Server};Server=" & NomServeur & ";Database=" & NomBaseDeDonnées & ";"
    cnx.ConnectionString = "Driver={SQL Server};Server=[InfoCachée];Database=[InfoCachée];Trusted_Connection=yes;"
    'Ouverture de la base de données
    cnx.Open
    'Exécution de la requête
    rst.Open [InfoCachée], cnx
    rst.Close
    Set rst = Nothing
    Set request = Nothing
    Set cnx = Nothing

Je me connecte à un serveur SQL en utilisant "trusted connection" comme nous avons un Active Directory.

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022

Message 7 sur 13
benamecanique
en réponse à: gmassart

Votre programme est efficace.

effectivement il fallait rajouter  le Trusted Connection 

 

   Set Cn = New ADODB.Connection
    Cn.Open "Driver={MYSQL ODBC 8.0 Unicode Driver};Server=" & Server_Name & ";Database=" & Database_Name & ";Uid=" & User_ID & ";Pwd=" & Password & ";Trusted_Connection=yes;"
    rs.Open SQLStr, Cn, adOpenStatic

If Not rs.EOF Then
    a = rs.GetRows
    ListBox1.ColumnCount = UBound(a, 2) + 1
    ListBox1.List = Application.Transpose(a)
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
Else
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
Label1.Caption = "Erreur : Reference introuvable, Veuillez choisir un autre mot clé"
End If
    
End Sub

Par contre ca beug maintenant là ou je fait le transposé la matrice :

ListBox1.List = Application.Transpose(a)

 

pouvez vous me dire d'ou vient le probleme svp ?

comme ca je serai sur que ma base de données est vraiment lié à inventor.

merci d'avance

Message 8 sur 13
gmassart
en réponse à: benamecanique

Je pense que la fonction transpose est propre à Excel

Il va falloir parcourir les enregistrements et les ajouter à la liste un à un

Suffit de faire quelque chose du genre :

If not rs.EOF 'teste si il y a au moins un enregistrement
rs.movefirst
While not rs.EOF
Ajouter l'enregistrement dans la listbox avec un additem je pense
puis
rs.movenext
do
end if

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022

Message 9 sur 13
benamecanique
en réponse à: gmassart

Merci Beaucoup.

ca marché pour moi, voila le code final :

 

Private Sub search()
    Dim Cn As ADODB.Connection
    Dim Server_Name As String
    Dim Database_Name As String
    Dim User_ID As String
    Dim Password As String
    Dim SQLStr As String
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    Dim Rechercher As String


    Server_Name = "127.0.0.1"
    Database_Name = "base"
    User_ID = "root"
    Password = "m02pas"
 
    
If OptionButton_Num_Projet_Piece_Produit = True Then
   Rechercher = TextBox1_Num_Projet_Piece_Produit
   SQLStr = "SELECT numero, description_courte FROM table01 WHERE numero LIKE '%" & Rechercher & "%'"
Else
    If OptionButton_Description_courte = True Then
       Rechercher = TextBox2_Description_courte
       SQLStr = "SELECT numero, description_courte FROM table01 WHERE description_courte LIKE '" & Rechercher & "%'"
    Else
    
    If TextBox2_Description_courte = "" And TextBox1_Num_Projet_Piece_Produit = "" Then
    Label1.Caption = "Erreur : Référence introuvable, Veuillez choisir un autre mot clé"
    End If
    End If
    
End If
    

    Set Cn = New ADODB.Connection
    Cn.Open "Driver={MYSQL ODBC 8.0 Unicode Driver};Server=" & Server_Name & ";Database=" & Database_Name & ";Uid=" & User_ID & ";Pwd=" & Password & ";Trusted_Connection=yes;"
    rs.Open SQLStr, Cn, adOpenStatic

If Not rs.EOF Then
    a = rs.GetRows
    For i = 0 To UBound(a, 2)
    ListBox1.AddItem
    ListBox1.List(i, 0) = a(0, i)
    ListBox1.List(i, 1) = a(1, i)
    Next
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
Else
    rs.Close
    Set rs = Nothing
    Cn.Close
    Set Cn = Nothing
Label1.Caption = "Erreur : Reference introuvable, Veuillez choisir un autre mot clé"
End If
    
End Sub
Message 10 sur 13
gmassart
en réponse à: benamecanique

Ah bah cool si ça marche

je savais pas que Mysql avec l'option Trusted connection, c'est plus rapide et moins contraignant.

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022

Message 11 sur 13
benamecanique
en réponse à: gmassart

merci encore une fois pour ton aide

et puis si ca te derange pas j'aimerais bien avoir ton adresse email si ca te derange pas.

 

Bonne après-midi.

Message 12 sur 13
gmassart
en réponse à: benamecanique

Je t'envoie ça en MP

Par contre il faut garder en tête que le forum c'est aussi une sorte de partage, ton problème aujourd'hui résolu pourrait être celui d'un autre demain, donc il faudra si ça touche autre chose qui peut être intéressant, poster ici pour partager.

 

Guillaume MASSART
AFFIVAL SAS
Inventor Pro 2022

Message 13 sur 13
benamecanique
en réponse à: gmassart

Oui effectivement 🙂

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums