[ADODB] Erreur dans la méthode Getrows d'un recordset
katalai
Messages postés3Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention15 octobre 2009
-
14 oct. 2009 à 09:47
katalai
Messages postés3Date d'inscriptionmardi 13 juillet 2004StatutMembreDernière intervention15 octobre 2009
-
15 oct. 2009 à 14:09
Bonjour,
Afin de récupérer uniquement les données d'un champ d'un recordset, j'essaie sans succès d'utiliser la méthode Getrows avec paramètres dont la définition est la suivante :
array = recordset.GetRows( Rows, Start, Fields )
Les paramètres étant optionnels, mon code est le suivant :
---------------------------------------------------------------
Dim rsTemp as ADODB.recordset
Dim arrTemp as variant
Dim sRequete as string
sRequete = "select * from toto"
Set rsTemp = CurrentDb.OpenRecordset(sRequete, dbOpenForwardOnly, dbReadOnly)
arrTemp =rsTemp .GetRows(, , NOM_DU_CHAMP)
---------------------------------------------------------------
La requête est correct et le recordset est bien rempli.
L'erreur retournée est la suivante : "argument non valide"
j'ai les références suivantes :
Visual Basic for applications
microsoft access 10 object library
OLE Automation
Microsoft active x data objects 2.1 library
microsoft excel 10 object library
microsoft scripting runtime
microsoft DAO 3.6 object library
microsoft active x data objects recordset 2.8 library
En revanche la méthode fonctionne correctement lorsque je mets un seul argument :
J'ai en effet plus de 2500 lignes et c'est très très long ; 20 minutes environ).
C'est pour cette raison que je cherche à récupérer la totalité des lignes d'un champ d'un recordset afin de les copier directement dans Excel sans faire de boucle
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 15 oct. 2009 à 08:29
Bonjour,
Ton code mélange deux choses ADO et DAO, ce dernier étant obsolète et remplacé par ADO.
Donc 1ère chose, supprimer la référence à DAO et modifie ton code en conséquence (la connexion et la récup de ton recordset).
De plus tu utilises 2 références à ADO mais de versions différentes la 2.1 (qui date de Mathusalem) et la 2.8), ne prends QUE celle de la version 2.8 (surtout qu'il semble que la 2.1 était buguée).
Enfin en ce qui concerne ta 2ème question, il y a effectivement beaucoup plus rapide. Sous réserve que ton code soit bien situé sous Excel, sélectionne la 1ère cellule devant contenir tes données et copie ce code: