Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 First and Last en ADODB VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

VBA_dev_Anne_Marie

XLDnaute Occasionnel
Bonjour,

Je suis en train de coder en sql ADODB VBA. Je cherche à récupérer l'observation la plus récente (triée par date).
Pourriez-vous me donner l'exemple de la fonction First/Last en ADODB VBA ?

Merci beaucoup !
 
Bonjour,
Par défaut un recordset ce trouve sur le premier enregistrement {Movefirst}
Pour se rendre au dernier enregistrement c'est la méthode Movelast !

Note que si ta requête ne retourne aucun enregistrement Movefirst et Movelast genaire un erreur il faut tester si Eof et Bof son différents !

Code:
 Set RS=cn.execute(SQL)
If RS.Eof<>RS.Bof then
Rs.MoveLast
Rs.MoveFirst
End if
 
Bonjour MarieParis

Un exemple de séquence SQL en ADODB

StrSql = "SELECT TOP 1 * FROM table ORDER BY champ DESC"

Mettre ASC ou DESC selon ce que tu cherches en résultat.

Cordialement
Merci ! Pourriez-vous vérifier ma syntaxe, s'il vous plaît ? :
RECSET.Open "select TOP 1 abs(ev.mt_brut_cie) as dernier_versement from db_evenement ev, dp_classe_evt classe order by ev.d_effet desc" & _
" where ev.no_police = '" & NO_POLICE & "' and classe.b_ea =1 and classe.b_rachat = 1 and ev.is_classe_evt=classe.is_classe_evt", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic


Je reçois l'erreur : ORA-00923: FROM keyword not found where expected.

Merci beaucoup pour votre aide !
 
un requête est toujours architecturé comme suis!
  1. Select Champs
  2. From {Inner join On Value}
  3. Where facultatif
  4. Group By facultatif
  5. Having facultatif toujours lié à Count, Max, Min, Avg
  6. Order by facultatif
VB:
" select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
" from db_evenement ev, dp_classe_evt classe " & _
" where ev.no_police = '" & NO_POLICE & "' and classe.b_ea =1 and classe.b_rachat = 1 and ev.is_classe_evt=classe.is_classe_evt" & _
" order by ev.d_effet desc"
 
Dernière édition:
Merci, mais j'ai toujours la même erreur 🙁 peut-être c'est à cause de 2 tables : from db_evenement ev, dp_classe_evt classe ?
 
essais comme ça!
VB:
" select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
" from db_evenement ev inner join  dp_classe_evt classe On ev.is_classe_evt=classe.is_classe_evt" & _
" where ev.no_police = '" & NO_POLICE & "' and classe.b_ea =1 and classe.b_rachat = 1 " & _
" order by ev.d_effet desc"
 
Merci, mais j'ai toujours la même erreur sur "from". Voci mon code :
Dim RECSET As New ADODB.Recordset
RECSET.Open " select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
" from db_evenement ev inner join dp_classe_evt classe On ev.is_classe_evt=classe.is_classe_evt" & _
" where ev.no_police = '" & NO_POLICE & "' and classe.b_ea =1 and classe.b_rachat = 1 " & _
" order by ev.d_effet desc", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic


Je me demande si l'utilisation de TOP 1 est possible en ADODB RECSET.
 
le top Fonctionne avec ADO.
je t'invite à découper ta requête pour trouver l'erreur!
  1. VB:
    " select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
    " from db_evenement ev"
  2. Code:
     " select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
    " from db_evenement ev inner join dp_classe_evt classe On ev.is_classe_evt=classe.is_classe_evt"
  3. Code:
     "select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
    " from db_evenement ev inner join dp_classe_evt classe On ev.is_classe_evt=classe.is_classe_evt" & _
    " where ev.no_police = '" & NO_POLICE & "'"
  4. ETC
 
Très bonne idée, merci beaucoup, je regarde, c'est très curieux !
 
Debug.Print Sq vas copier le texte de ta requête dans la fenêtre d'exécution!
il te sufis de le copier coller dans Sql manageur pour l'évaluer et corriger le problèmes!
VB:
Dim Sql As String
Sql = " select TOP 1 abs(ev.mt_brut_cie) as dernier_versement" & _
" from db_evenement ev inner join  dp_classe_evt classe On ev.is_classe_evt=classe.is_classe_evt" & _
" where ev.no_police = '" & NO_POLICE & "' and classe.b_ea =1 and classe.b_rachat = 1 " & _
" order by ev.d_effet desc"
Debug.Print Sql
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
180
Réponses
6
Affichages
150
Réponses
72
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…