|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Nouveau membre du Club
![]() Date d'inscription: juin 2009
Messages: 67
|
Bonjour,
Je cherche à récupérer le nombre de lignes d'une requête SQL, le tout en VBA. J'ai essayé d'utiliser un RecordCount, cependant il me renvoie systématiquement -1... En espérant avoir une lumière sur ce RecordCount qui me pose un problème... EDIT : Code :
Sub CompleteTableauCommandeProvisoire() 'Déclaration des variables Dim cnx As ADODB.Connection Dim rst As ADODB.Recordset 'Instanciation des variables Set cnx = New ADODB.Connection Set rst = New ADODB.Recordset Dim sql1 As String Dim debutperiode As Date Dim ddeb As String Dim dfin As String Dim Ligne As Integer Dim j As Integer Dim result_sql Dim Col Dim cptLigne As Integer cnx.ConnectionString = "DSN=Stats;UID=***;PWD=***;" cnx.Open cptLigne = 6 'Changer la date de début d'année For cptLigne = 6 To 263 For debutperiode = DateSerial(2008, 12, 29) To Now() - 6 Step 7 ddeb = Format(debutperiode, "dd/mm/yyyy") dfin = Format(debutperiode + 6, "dd/mm/yyyy") 'Nombre total d'envois périodique (courrier ): sql1 = "select m.mp_l, count(*), sum(c.cde_tot_ttc)" + _ " from e_cde c, e_mode_paiement m" + _ " where c.cde_ty_se_c = 'WV2'" + _ " and c.cde_mp_c in ('KM','KI','KW','KT', 'KA','KC', 'CA')" + _ " and c.cde_mp_c = m.mp_c" + _ " and c.cde_d between" + _ " to_date('" + ddeb + " 00:00:00' , 'dd/mm/yyyy hh24:mi:ss')" + _ " and to_date('" + dfin + " 23:59:59', 'dd/mm/yyyy hh24:mi:ss') " + _ " group by m.mp_l" + _ " order by 1" rst.Open sql1, cnx rst.MoveFirst j = 0 result = rst.RecordCount Do For Ligne = cptLigne To cptLigne + result For Col = 65 To 67 'Lecture en ligne Range(Chr(Col) & Ligne).Select 'Récupère résultat result_sql = rst.Fields(j).Value 'Transfert le résultat dans la cellule ActiveCell.FormulaR1C1 = result_sql j = j + 1 Next j = 0 rst.MoveNext Next Loop While rst.BOF cptLigne = cptLigne + 12 rst.Close Next Next End Sub Cordialement, Clément. |
|
|
|
|
|
#2 |
![]() |
salut,
ton recordcount correspond au numéro de l'enregistrement en cours. Or ici tu testes sa valeur après un MoveFirst...
__________________
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 |
|
Nouveau membre du Club
![]() Date d'inscription: juin 2009
Messages: 67
|
Ce qui veut dire que je dois le placer après un MoveLast ?
Si c'est le cas, on m'indique une erreur : "L'ensemble des lignes ne prend pas en charge les récupérations arrière" |
|
|
|
|
|
#4 |
![]() |
les deux parties à regarder sont dans cet article :
http://vb.developpez.com/bidou/recor...rseurs#LIV-B-2 et http://vb.developpez.com/bidou/recor...ordset#LVI-A-9 voir les types de curseurs pour avoir un recordcount qui "fonctionne" solution trouvée juste ici : http://www.developpez.net/forums/d77...recordset-1-a/
__________________
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
Dernière modification par AlainTech ; 05/07/2009 à 08h26. Motif: Fusion de 2 messages |
|
|
|
|
#5 |
|
Nouveau membre du Club
![]() Date d'inscription: juin 2009
Messages: 67
|
Merci beaucoup pour votre aide !
Problème résolu |
|
|
|
|
|
![]() |
||
[XL-2003] Compter les lignes d'une requête SQL
|
||
| Outils de la discussion | |
|
|