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
Dans mon module la fonction se présent comme ceci
Pour executer la requête, j'ai une fonction dans un autre module mMySQL
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.
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.