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 !
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 ?
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
Merci, j'ai commencé par le plus simple : juste une table, la db_evenemnt :
RECSET.Open "select abs(ev.mt_brut_cie) as dernier_versement from db_evenement ev" & _
" where ev.no_police = '" & NO_POLICE & "' order by ev.d_effet desc", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic
Ce code marche, dès que j'ajoute TOP 1, je reçois une erreur, comme avant : Erreur d'exécution '-2147217900 (80040e14)' ORA-00923: FROM keyword not found where expected :
Dim RECSET As New ADODB.Recordset
RECSET.Open "select TOP 1 abs(ev.mt_brut_cie) as dernier_versement from db_evenement ev" & _
" where ev.no_police = '" & NO_POLICE & "' order by ev.d_effet desc", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic
Je me demande si "TOP 1" est vraiment approprié dans ADODB.Recordset ? Merci pour votre aide.
Merci, j'ai commencé par le plus simple : juste une table, la db_evenemnt :
RECSET.Open "select abs(ev.mt_brut_cie) as dernier_versement from db_evenement ev" & _
" where ev.no_police = '" & NO_POLICE & "' order by ev.d_effet desc", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic
Ce code marche, dès que j'ajoute TOP 1, je reçois une erreur, comme avant : Erreur d'exécution '-2147217900 (80040e14)' ORA-00923: FROM keyword not found where expected :
Dim RECSET As New ADODB.Recordset
RECSET.Open "select TOP 1 abs(ev.mt_brut_cie) as dernier_versement from db_evenement ev" & _
" where ev.no_police = '" & NO_POLICE & "' order by ev.d_effet desc", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic
Je me demande si "TOP 1" est vraiment approprié dans ADODB.Recordset ? Merci pour votre aide.
Est-ce que c'est vraiment nécessaire pour un ADODB RecordSet, le TOP 1? Vous avez dit qu'on récupère une observation, c'est la première, la plus récente, non ?
Est-ce que vous pourriez m'aider avec l'ajout de having, s'il vous plaît ? Mon code ne marche pas :
RECSET.Open "select 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 having count(distinct(ev.d_effet))<>1 order by ev.d_effet desc", cnn_Pegase, adOpenDynamic, adLockBatchOptimistic
L'erreur est ORA-00937 : not a single-group group function
de ce que j'ai compris de mes recherches sur internet ce serait plus ça!
VB:
" select 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 And rownum = 1" & _
" order by ev.d_effet desc"
de ce que j'ai compris de mes recherches sur internet ce serait plus ça!
VB:
" select 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 And rownum = 1" & _
" order by ev.d_effet desc"
Merci,
C'est étrange, mais ça ne marche pas, avec rownum = 1, ça récupère la première observation avant le tri par date. 🙁
Sans rownum=1 je récupère le bon résultat, mais je me demande si cette solution est correcte.
A mon avis oui, car le Recordset retient la première observation triée.
Merci pour votre aide.
Merci,
C'est étrange, mais ça ne marche pas, avec rownum = 1, ça récupère la première observation avant le tri par date. 🙁
Sans rownum=1 je récupère le bon résultat, mais je me demande si cette solution est correcte.
A mon avis oui, car le Recordset retient la première observation triée.
Merci pour votre aide.
Le Having ne sert que quand on regroupe (order by ...) ( d'où l'erreur ORA-00937 retournée par Oracle ).
Vous voulez regrouper par quoi ?
Je ne répond que par mémoire, n'ayant pas/plus de base oracle ...
"select dernier_versement from (" & _
" select abs(ev.mt_brut_cie) as dernier_versement,count(d.effet) NB" & _
" 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 " & _
" Group By Abs(ev.mt_brut_cie) " & _
" Having count(d.effet)<>1 ) " & _
" order by ev.d_effet desc)"
"select dernier_versement from (" & _
" select abs(ev.mt_brut_cie) as dernier_versement,count(d.effet) NB" & _
" 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 " & _
" Group By Abs(ev.mt_brut_cie) " & _
" Having count(d.effet)<>1 ) " & _
" order by ev.d_effet desc)"
Merci !Malheureusement je reçois la même erreur : Erreur d'exécution ' -2147217900 (80040e14)' ORA-09923: FROM Keyword not found where expected. En fait, je cherche comment place la condition having(count(distinct(ev.d_effet))) dans le code.
Merci !Malheureusement je reçois la même erreur : Erreur d'exécution ' -2147217900 (80040e14)' ORA-09923: FROM Keyword not found where expected. En fait, je cherche comment place la condition having(count(distinct(ev.d_effet))) dans le code.
J'ai découpé le code pour récupérer le (count(distinct(ev.d_effet)), mais je reste curieuse de savoir comment on place "having" dans le code. Merci pour votre aide !
- 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