Bonjour à tous,


J'ai une requête SQL dans une macro Excel pour récupérer mes données directement dans l'ODBC. Je doit la modifier à cause d'une sous-famille de ref qui ne ressort pas comme attendu, l'équipe IT a fait sa requête dans leur système en direct et le résultat est celui attendu, à moi maintenant d'adapter le SQL pour que ça fonctionne pareil et c'est bien là le problème..

Connexion ODBC :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
chaineConnexion = "Driver={Client Access ODBC Driver (32-bit)};System=SIPRDOPT;Uid=XX;Pwd=XX+;DBQ=OPADTA"

Requête initiale OK :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'Crétaion de la requete SQL
SQL = "Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA,MRCOMV, MRTYMV, Sum(MRQTUC) AS SUMQTT " & _
  "From " & _
    "( Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MRCOMV, MRTYMV, MRQTUC " & _
      "From X_MVREFA " & _
      "Where MRCOMV = 'S' And MRCONS <> ' ' AND MRCENT IN ('W4', 'W5') AND MRDAMV >= " & dateDebutSQL & " AND MRDAMV <= " & dateFinSQL & _
    " Union All " & _
      "Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MRCOMV, MRTYMV, MRQTUC " & _
      "From X_MVREFA A " & _
      "Where MRCOMV = 'S' AND MRCENT IN ('W4', 'W5') AND MRDAMV >= " & dateDebutSQL & " AND MRDAMV <= " & dateFinSQL & " And MRCONS = ' ' And MRNOMV Not In " & _
           "( Select B.MRNOMV " & _
             "From X_MVREFA B " & _
             "Where B.MRCOMV = 'E' " & _
                "And B.MRREFA = A.MRREFA  " & _
                "And B.MRCENT In ('W4', 'W5')) " & _
    ") As Req " & _
 "Group By MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MRCOMV, MRTYMV  " & _
 "Order By MRREFA  "

Requête IT interne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, ifnull(mcrefa, '') as mcrefa, MRCOMV, MRTYMV, Sum(MRQTUC) AS SUMQTT 
From
( Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, mcrefa, MRCOMV, MRTYMV, MRQTUC 
From opadta.X_MVREFA 
left join opadta.x_mvcoli on mrnomv = mcnomv and MRANMV=MCANMV and MRRAMV=MCRAMV
Where MRCOMV = 'S' And MRCONS <> ' ' AND MRCENT IN ('W4', 'W5') AND MRDAMV >=20220901 AND MRDAMV <= 20220921
Union All 
Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, mcrefa, MRCOMV, MRTYMV, MRQTUC 
From opadta.X_MVREFA A
left join opadta.x_mvcoli on mrnomv = mcnomv and MRANMV=MCANMV and MRRAMV=MCRAMV 
Where MRCOMV = 'S' AND MRCENT IN ('W4', 'W5') AND MRDAMV >=20220901 AND MRDAMV <= 20220921 And MRCONS = ' ' And MRNOMV Not In  
( Select B.MRNOMV 
From opadta.X_MVREFA B 
Where B.MRCOMV = 'E' 
And B.MRREFA = A.MRREFA And B.MRCENT In ('W4', 'W5')) ) As Req
Group By MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, mcrefa, MRCOMV, MRTYMV
Order By MRDAMV, MRREFA, mcrefa

Adaptée ici avec erreur -2147217900
[IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0104 - Elément syntaxique MCNOMV n'est pas correct. Eléments possibles : JSON.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'Création de la requete SQL
SQL = "Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MCREFA, MRCOMV, MRTYMV, Sum(MRQTUC) AS SUMQTT " & _
  "From " & _
    "( Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MCREFA, MRCOMV, MRTYMV, MRQTUC " & _
      "From X_MVREFA " & _
      "LEFT JOIN X_MVCOLI on MRNOMV is MCNOMV And MRANMV is MCANMV and MRRAMV is MCRAMV " & _
      "Where MRCOMV is 'S' And MRCONS <> ' ' AND MRCENT IN ('W4', 'W5') AND MRDAMV >= " & dateDebutSQL & " AND MRDAMV <= " & dateFinSQL & _
    " Union All " & _
      "Select MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MCREFA, MRCOMV, MRTYMV, MRQTUC " & _
      "From X_MVREFA A " & _
      "LEFT JOIN X_MVCOLI on MRNOMV is MCNOMV And MRANMV is MCANMV and MRRAMV is MCRAMV " & _
      "Where MRCOMV = 'S' AND MRCENT IN ('W4', 'W5') AND MRDAMV >= " & dateDebutSQL & " AND MRDAMV <= " & dateFinSQL & " And MRCONS = ' ' And MRNOMV Not In " & _
           "( Select B.MRNOMV " & _
             "From X_MVREFA B " & _
             "Where B.MRCOMV is 'E' " & _
                "And B.MRREFA is A.MRREFA  " & _
                "And B.MRCENT In ('W4', 'W5')) " & _
    ") As Req " & _
 "Group By MRNDOC, MRCONS, MRDAMV, MRCFOU, MRREFA, MCREFA, MRCOMV, MRTYMV  " & _
 "Order By MRDAMV, MRREFA, MCREFA  "

J'ai fais des recherches sur JSON et n'ai absolument rien compris, est-ce réellement à mettre en place ? J'ai également vu cet article sur les jointures mais ca ne m'aide pas à corriger ma requête..
https://www.developpez.net/forums/d5...-dit-jointure/


Quelqu'un s'aurait-il apporté sa précieuse aide ?


Merci beaucoup beaucoup !

LRN