|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2006
Localisation: Nantes
Messages: 56
|
Bonjour à tous
Voila, j'ai un fichier excel qui discute avec une base MySql (c'est pour des exports spécifiques sur des données de Mantis). Il y a déjà quelques requêtes qui fonctionnent bien. Mais pour certaines : - en ayant suivi le même schéma de code que celles qui fonctionnent - en ayant fait la requête directement sous mysql (et que cela fonctionne) --> le nombre d'enregistrements est nul (le recorcount retourne -1). je croyais au début que c'était parce que j'utilisai le même recordset. Alors j'en ai créé un pour chaque requêtes (que je ferme ensuite avec la connexion). Mais cela n'a rien changé :'( Auriez vous d'autres pistes? PS : Voici le code d'une des requêtes qui ne marche pas : J'ai directement recopier le contenu de la variable "laRequete" à partir du sqlQuery de mysql (qui me retourne bien des résultats). J'ai aussi posé un espion sur "idProjet" qui est correct. Code :
Private Sub chargerComboUsers() Dim requeteUser As New ADODB.Recordset laRequete = "" laRequete = laRequete & "SELECT mantis_project_table.id, mantis_project_table.name, mantis_user_table.realname" laRequete = laRequete & " FROM mantis_project_table, mantis_project_user_list_table, mantis_user_table" laRequete = laRequete & " where mantis_project_table.ID = mantis_project_user_list_table.project_id" laRequete = laRequete & " and mantis_project_user_list_table.user_id = mantis_user_table.id" laRequete = laRequete & " and mantis_project_table.id = " & idProjet & ";" cmbChoixSec.Clear ProceduresDiv.initConnectionMysql Set objetConnexion = New ADODB.Connection objetConnexion.Open chaineConnection requeteUser.Open laRequete, objetConnexion MsgBox (requeteUser.RecordCount) requeteUser.MoveFirst If requeteUser.RecordCount > 0 Then While Not (requeteUser.EOF) cmbChoixSec.AddItem requeteUser("realname") requeteUser.MoveNext Wend End If requeteUser.Close objetConnexion.Close End Sub Merci beaucoup d'avance @++ |
|
|
|
|
|
#2 (permalink) |
![]() |
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
|
|
|
|
|
#3 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2006
Localisation: Nantes
Messages: 56
|
Bonjour,
Merci pour votre réponse J'ai essayé d'adapter mon code mais mon recordcount est toujours à -1. Jai essayé de le détourné en mettant le redim (= la cause de l'interrogation du recordcount) à l'intérieur de la boucle. Mais cela fait une boulcle infinie. Je vous met mon code à jour : Code :
Dim WithEvents objetConnexion As ADODB.Connection Dim WithEvents requeteBugs As ADODB.Recordset Dim requeteProjets As ADODB.Recordset Dim cmdProjets As ADODB.Command Dim cmdBugs As ADODB.Command Dim nb As Integer Dim decomposeIdProjet() As String Private Sub Image1_Click() ProceduresDiv.OuvrirAide ("journal") End Sub Private Sub Image2_Click() Feuil1.Activate Feuil1.Visible = True cmbListProjets.Clear Feuil3.Visible = False End Sub Private Sub Image3_Click() If cmbListProjets.Value <> "" Then ProceduresDiv.titreDoc = "Journal des incidents" 'Trouver l'id du projet decomposeIdProjet = Split(cmbListProjets.Value, "(") decomposeIdProjet = Split(decomposeIdProjet(1), ")") ProceduresDiv.idProjet = Trim(decomposeIdProjet(0)) 'récupérer la liste des bugs concernés laRequete = "" laRequete = laRequete & "SELECT * FROM mantis_bug_table" laRequete = laRequete & " WHERE project_id = " & ProceduresDiv.idProjet Set requeteBugs = New ADODB.Recordset 'Set cmdBugs = New ADODB.Command 'cmdBugs.CommandText = laRequete 'cmdBugs.ActiveConnection = objetConnexion 'Set requeteBugs = cmdBugs.Execute '-----> La ligne ci dessous donne une erreur : le pilodte odbc ne prend pas en charge cette méthode 'requeteBugs.Open laRequete, objetConnexion, adOpenKeyset, adLockReadOnly, adCmdText requeteBugs.Open laRequete, objetConnexion '----> retourne -1 MsgBox (requeteBugs.RecordCount) requeteBugs.MoveFirst nb = 1 '----> avant cette ligne était en erreur car le recordcount était à -1 'ReDim ProceduresDiv.listBugs(requeteBugs.RecordCount) While Not (requeteBugs.EOF) '----> après avoir déplacer cette ligne à k'intérieur de la boucle : cette dernière est infinie ReDim ProceduresDiv.listBugs(nb) ProceduresDiv.listBugs(nb) = requeteBugs("id") nb = nb + 1 MsgBox (nb & "ièem bug pour le projet " & ProceduresDiv.idProjet) Wend requeteBugs.Close 'création d'un nouveau fichier Excel 'gestion affichage 'Feuil3.Visible = False Else MsgBox ("Choisir un projet") End If End Sub Private Sub Worksheet_Activate() ' Déclarations 'Dim requeteProjets As ADODB.Recordset ' Connection à la base ProceduresDiv.initConnectionMysql Set objetConnexion = New ADODB.Connection objetConnexion.Open chaineConnection ' Chargement des projets laRequete = "" laRequete = laRequete & "SELECT mantis_project_table.id, mantis_project_table.name" laRequete = laRequete & " FROM mantis_project_table" laRequete = laRequete & " ORDER BY mantis_project_table.name" Set requeteProjets = New ADODB.Recordset Set cmdProjets = New ADODB.Command cmdProjets.CommandText = laRequete cmdProjets.ActiveConnection = objetConnexion Set requeteProjets = cmdProjets.Execute 'requeteProjets.Open cmdRequete, objetConnexion requeteProjets.MoveFirst cmbListProjets.Clear While Not (requeteProjets.EOF) cmbListProjets.AddItem requeteProjets("name") & " ( " & requeteProjets("id") & " ) " requeteProjets.MoveNext Wend requeteProjets.Close 'objetConnexion.Close End Sub Private Sub genereJournal() 'Page de garde ProceduresDiv.genereGarde 'Partie 1 : Journal '----> Liste des bugs Dim lesBugs() As String Dim nb As Integer laRequete = "" laRequete = laRequete & "SELECT * FROM mantis_bug_table" laRequete = laRequete & " WHERE project_id = " '----> Détail pour chaque bug 'Partie 2 : synthèse 'Partie 3 : Graphique 'Sommaire End Sub Private Sub Worksheet_Deactivate() 'objetConnexion.Close End Sub Voila ^^ Avez vous une idée? Merci beaucoup d'avance @++ |
|
|
|
|
|
#4 (permalink) |
![]() |
salut,
et en passant par un Code :
laRequete = "SELECT COUNT(*) FROM (" laRequete = laRequete & "SELECT * FROM mantis_bug_table" laRequete = laRequete & " WHERE project_id = " & ProceduresDiv.idProjet & ")"
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
|
|
|
|
|
#5 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2006
Localisation: Nantes
Messages: 56
|
Ayé j'ai trouvé ^^
En fait je me suis renseignée sur les curseurs (je ne connaissais pas ^^) et j'ai trouvé la propriété "location" que j'ai mise du coté client. Et en plus comme un boulet j'avais oublié le .next (d'ou la doit disant boucle infinie :p) Voila mon code final pour info et merci encore ![]() Code :
Dim WithEvents objetConnexion As ADODB.Connection Dim WithEvents requeteBugs As ADODB.Recordset Dim requeteProjets As ADODB.Recordset Dim cmdProjets As ADODB.Command Dim cmdBugs As ADODB.Command Dim nb As Integer Dim decomposeIdProjet() As String Private Sub Image1_Click() ProceduresDiv.OuvrirAide ("journal") End Sub Private Sub Image2_Click() Feuil1.Activate Feuil1.Visible = True cmbListProjets.Clear Feuil3.Visible = False End Sub Private Sub Image3_Click() If cmbListProjets.Value <> "" Then ProceduresDiv.titreDoc = "Journal des incidents" 'Trouver l'id du projet decomposeIdProjet = Split(cmbListProjets.Value, "(") decomposeIdProjet = Split(decomposeIdProjet(1), ")") ProceduresDiv.idProjet = Trim(decomposeIdProjet(0)) 'récupérer la liste des bugs concernés laRequete = "" laRequete = laRequete & "SELECT * FROM mantis_bug_table" laRequete = laRequete & " WHERE project_id = " & ProceduresDiv.idProjet 'laRequete = "" 'laRequete = laRequete & "SELECT COUNT * FROM mantis_bug_table" 'laRequete = laRequete & " WHERE project_id = " & ProceduresDiv.idProjet Set requeteBugs = New ADODB.Recordset 'Set cmdBugs = New ADODB.Command 'cmdBugs.CommandText = laRequete 'cmdBugs.ActiveConnection = objetConnexion 'Set requeteBugs = cmdBugs.Execute '-----> La ligne ci dessous donne une erreur : le pilodte odbc ne prend pas en charge cette méthode 'requeteBugs.Open laRequete, objetConnexion, adOpenKeyset, adLockReadOnly, adCmdText requeteBugs.CursorLocation = adUseClient requeteBugs.Open laRequete, objetConnexion requeteBugs.MoveFirst MsgBox (requeteBugs.RecordCount) ReDim ProceduresDiv.listBugs(requeteBugs.RecordCount + 1) For nb = 1 To requeteBugs.RecordCount MsgBox (nb & "ièem bug pour le projet " & ProceduresDiv.idProjet) & " : " & requeteBugs("id") ProceduresDiv.listBugs(nb) = requeteBugs("id") requeteBugs.MoveNext Next requeteBugs.Close 'création d'un nouveau fichier Excel 'gestion affichage 'Feuil3.Visible = False Else MsgBox ("Choisir un projet") End If End Sub Private Sub Worksheet_Activate() ' Déclarations 'Dim requeteProjets As ADODB.Recordset ' Connection à la base ProceduresDiv.initConnectionMysql Set objetConnexion = New ADODB.Connection objetConnexion.Open chaineConnection ' Chargement des projets laRequete = "" laRequete = laRequete & "SELECT mantis_project_table.id, mantis_project_table.name" laRequete = laRequete & " FROM mantis_project_table" laRequete = laRequete & " ORDER BY mantis_project_table.name" Set requeteProjets = New ADODB.Recordset Set cmdProjets = New ADODB.Command cmdProjets.CommandText = laRequete cmdProjets.ActiveConnection = objetConnexion Set requeteProjets = cmdProjets.Execute 'requeteProjets.Open cmdRequete, objetConnexion requeteProjets.MoveFirst cmbListProjets.Clear While Not (requeteProjets.EOF) cmbListProjets.AddItem requeteProjets("name") & " ( " & requeteProjets("id") & " ) " requeteProjets.MoveNext Wend requeteProjets.Close 'objetConnexion.Close End Sub Private Sub genereJournal() 'Page de garde ProceduresDiv.genereGarde 'Partie 1 : Journal '----> Liste des bugs Dim lesBugs() As String Dim nb As Integer laRequete = "" laRequete = laRequete & "SELECT * FROM mantis_bug_table" laRequete = laRequete & " WHERE project_id = " '----> Détail pour chaque bug 'Partie 2 : synthèse 'Partie 3 : Graphique 'Sommaire End Sub Private Sub Worksheet_Deactivate() 'objetConnexion.Close End Sub |
|
|
|
|
|
![]() |
||
[XL-2007] [VBA - Excel - 2007] Recordset à -1
|
||
| Outils de la discussion | |
|
|