VBA - Problème recordset - objet fermé

pulcogeek

XLDnaute Nouveau
Bonjour,

Je fais un peu de VBA depuis quelques temps a mon travail mais je tombe sur un problème que je n'arrive pas a résoudre et je pensais que vous pourriez m'aider vu mes compétences limitées.

Je vais essayer de vous expliquer le plus simplement possible.
J'ai un fichier excel qui se connecte à une base de données MySQL (avec driver ODBC connector 5.2)

J'ai une fonction de recherche qui me sers pour un tas de chose que je met en arguments

Je lance la fonction comme ceci
Code:
Dim strIDUnique As String

subMySQLConnect 'Fonction de connexion dans le module plus bas

strIDUnique = mFunction.functionRechercheMySQL("LoginEmploye", "user::password", "logins")

Dans mon module la fonction se présent comme ceci
Code:
Public Function functionRechercheMySQL(typeRecherche As String, Optional strVariable As String, Optional strTable As String) As String
    '***** Déclaration des variables
    Dim rsRecherche As ADODB.Recordset
    Dim tableVariable() As String
    
    '***** Initialisation
    tableVariable = Split(strVariable, "::")

    '***** Traitement
    'Récupération de la requête
    GLOBAL_SQL = "SELECT ****** FROM ******* WHERE *********"

    'Execution de la requête
    Set rsRecherche = mMySQL.functionMySQLRecord
    If Not (rsRecherche.BOF And rsRecherche.EOF) Then
        functionRechercheMySQL = rsRecherche(0)
    Else
        functionRechercheMySQL = "Error404"
    End If

End Function

Pour executer la requête, j'ai une fonction dans un autre module mMySQL
Code:
Public Sub subMySQLConnect()
    '***** Déclaration des variables
    
    ConnectionString = "Driver={MySQL ODBC 5.2 ANSI Driver};" & _
        "Server=" & varHost & ";" & _
        "Database=" & varDB & ";" & _
        "UID=" & varUser & ";" & _
        "PWD=" & varPwd & ";"
        
    Set GLOBAL_MYSQL_CN = New ADODB.Connection
    GLOBAL_MYSQL_CN.Open (ConnectionString)
    GLOBAL_MYSQL_CN.CursorLocation = adUseClient
End Sub

'::Execution d'un requete MySQL avec retour de valeur
Public Function functionMySQLRecord() As ADODB.Recordset
    '***** Déclaration des variables
    
    '***** Traitement
    'Execution de la requête
    Set functionMySQLRecord = New ADODB.Recordset
    
    functionMySQLRecord.Open (GLOBAL_SQL), GLOBAL_MYSQL_CN

End Function

Mon problème viens du fait que lorsque je recherche la personne avec les identifiants il me met une erreur car l'objet (functionMySQLRecord) est fermé.

Ce que je ne comprend pas (entre autre) c'est que en faisant un exécution pas à pas ça s'est mis a marcher une fois puis plus rien.
Autre chose, pourquoi l'objet est fermé alors que nulle part dans mon code je lui demande de le faire?

Merci pour votre aide en espérant que j'ai bien expliquer.
 

mromain

XLDnaute Barbatruc
Re : VBA - Problème recordset - objet fermé

Bonsoir pulcogeek et bienvenue sur le forum

C'est vrai que c'est impossible pour toi de nous fournir un fichier exemple, mais ça ne va pas être évident pour nous de t'aider.
Ton projet a l'air assez complexe, et on n'a rien pour creuser...

Peut-être que la fonction d'espion de l'éditeur VBA pourra t'être utile.
Il est possible de mettre un point d'arrêt à chaque fois que la variable est modifiée.

attachment.php


Dans ton cas, cela te permettra peut-être de voir où tu pers ton objet functionMySQLRecord.

Bon courage :)

A+
 

Pièces jointes

  • Image1.jpg
    Image1.jpg
    41.1 KB · Affichages: 77
  • Image1.jpg
    Image1.jpg
    41.1 KB · Affichages: 74
  • Image1.jpg
    Image1.jpg
    41.1 KB · Affichages: 72

Discussions similaires

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400