Problème requete MSSQLSERVER_4104

Problème requete MSSQLSERVER_4104 - SQL/NoSQL - Programmation

Marsh Posté le 21-07-2017 à 12:10:05    

Bonjour ,  
J'utilise SQL à la carte sur sage edition pilotée i7 , je suis entrain de créer un état mais là je suis bloquée avec cette erreur :
 
[Microsoft][ODBC SQL Server Driver][SQL Server]L'identificateur en plusieurs parties "DP_ARTICLES.ART_NUM" ne peut pas être lié.4104
 
Voici ma requete :  
 

Code :
  1. SELECT ART.ART_NUM
  2. ,G.EG_Enumere,
  3.    E.AE_CodeBarre,
  4.    E.AE_Ref,
  5.   dbo.DP_STOCK_A_DATE.STD_ARREF,
  6.   ART.ART_LIB,
  7.   dbo.F_FAMILLE.FA_CodeFamille,
  8.   dbo.DP_STOCK_A_DATE.STD_DEINTITULE,
  9.   sum(dbo.DP_STOCK_A_DATE.STD_QTE),
  10. ART.ART_PRIX
  11.  
  12.  
  13. FROM dbo.DP_STOCK_A_DATE,
  14.      dbo.DP_ARTICLES AS ART,
  15.      dbo.F_FAMILLE 
  16.  
  17.  
  18. LEFT OUTER JOIN F_ARTGAMME G ON ART.ART_NUM = G.AR_Ref
  19. LEFT OUTER  JOIN F_ARTENUMREF E ON E.AG_No1 = G.AG_No
  20. WHERE  AR_Gamme1 = '1' OR AR_Gamme1='0'
  21. AND ( dbo.F_FAMILLE.FA_CODEFAMILLE=ART.ART_FACODEFAMILLE  )
  22.   AND  ( dbo.F_FAMILLE.FA_Type=0  )
  23.   AND  ( dbo.DP_STOCK_A_DATE.STD_ART_UK=ART.ART_UK  )
  24.   AND  (
  25.   (  dbo.DP_STOCK_A_DATE.STD_DLDATEBL<= @Prompt ('Indiquez une date ','A',,MONO,FREE)  )
  26.   )
  27.  
  28.   GROUP BY
  29. ART.ART_NUM
  30. ,G.EG_Enumere,
  31.    E.AE_CodeBarre,
  32.    E.AE_Ref,
  33.   dbo.DP_STOCK_A_DATE.STD_ARREF,
  34.   ART.ART_LIB,
  35.   dbo.F_FAMILLE.FA_CodeFamille,
  36.   dbo.DP_STOCK_A_DATE.STD_DEINTITULE,
  37.   ART.ART_PRIX


 
Je vous remercie d'avance , je suis coincée depuis plusieurs jours déjà , quand je fais la requete séparement ça marche mais quand j'ajoute d'autres tables ça me donne l'erreur citée :  
 

Code :
  1. SELECT  DP_ARTICLES.ART_NUM,
  2.        G.EG_Enumere,
  3.    E.AE_CodeBarre,
  4.    E.AE_Ref,
  5.    dbo.DP_ARTICLES.ART_LIB,
  6.    dbo.DP_ARTICLES.ART_PRIX
  7. FROM   dbo.DP_ARTICLES
  8. LEFT OUTER JOIN F_ARTGAMME G ON DP_ARTICLES.ART_NUM = G.AR_Ref
  9. LEFT OUTER  JOIN F_ARTENUMREF E ON E.AG_No1 = G.AG_No
  10. GROUP BY
  11.   DP_ARTICLES.ART_NUM,
  12.   G.EG_Enumere,
  13.   E.AE_CodeBarre,
  14.   E.AE_Ref, dbo.DP_ARTICLES.ART_LIB,
  15.   dbo.DP_ARTICLES.ART_PRIX

Reply

Marsh Posté le 21-07-2017 à 12:10:05   

Reply

Marsh Posté le 24-07-2017 à 00:21:52    

Fais tes jointures au fur et à mesure de ton FROM déjà plutôt que faire un mix des deux...
 

Code :
  1. FROM dbo.DP_ARTICLES AS ART
  2. INNER JOIN   dbo.F_FAMILLE  ON dbo.F_FAMILLE.FA_CODEFAMILLE=ART.ART_FACODEFAMILLE
  3. INNER JOIN dbo.DP_STOCK_A_DATE ON dbo.DP_STOCK_A_DATE.STD_ART_UK=ART.ART_UK
  4. LEFT OUTER JOIN F_ARTGAMME G ON ART.ART_NUM = G.AR_Ref
  5. LEFT OUTER  JOIN F_ARTENUMREF E ON E.AG_No1 = G.AG_No
  6. WHERE  (AR_Gamme1 = '1' OR AR_Gamme1='0')
  7.   AND  ( dbo.F_FAMILLE.FA_Type=0  )
  8.   AND  (  dbo.DP_STOCK_A_DATE.STD_DLDATEBL<= @Prompt ('Indiquez une date ','A',,MONO,FREE)  )

Message cité 1 fois
Message édité par antac le 24-07-2017 à 00:22:25
Reply

Marsh Posté le 24-07-2017 à 10:09:15    

C'est clair. Et sinon un petit schéma de la bdd pourrait aider, parce que là [:michaeldell:2]...


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 25-07-2017 à 10:30:38    

J'ai pu régler le problème merci :) par contre quand j'ajoute un 2 ieme prompt que j'ai collé directement de SQL de la requete sur  l'univers j'ai l'erreur : erreur de syntaxe @prompt, @variable ...  
 
pourtant ça marche en l’exécutant sur sage EP , mais je veux ajouter d'autres champ et des jointures c pour ça j'utilise sql à la carte :/
 

Code :
  1. WHERE
  2.   ( dbo.F_FAMILLE.FA_CODEFAMILLE=dbo.DP_ARTICLES.ART_FACODEFAMILLE  )
  3.   AND  ( dbo.F_FAMILLE.FA_Type=0  )
  4.   AND  ( dbo.DP_STOCK_A_DATE.STD_ART_UK=dbo.DP_ARTICLES.ART_UK  )
  5.   AND  (
  6.   (  dbo.DP_STOCK_A_DATE.STD_DLDATEBL<= @Prompt ('Indiquez une date ','A',,MONO,FREE)  )
  7.   AND  ( (dbo.DP_ARTICLES.ART_NUM+' - '+dbo.DP_ARTICLES.ART_LIB) IN @Prompt('Choisissez le/les article(s) voulu(s).','A','Articles\Référence - Désignation Article',MULTI,CONSTRAINED)  )
  8.   )


 
 

antac a écrit :

Fais tes jointures au fur et à mesure de ton FROM déjà plutôt que faire un mix des deux...
 

Code :
  1. FROM dbo.DP_ARTICLES AS ART
  2. INNER JOIN   dbo.F_FAMILLE  ON dbo.F_FAMILLE.FA_CODEFAMILLE=ART.ART_FACODEFAMILLE
  3. INNER JOIN dbo.DP_STOCK_A_DATE ON dbo.DP_STOCK_A_DATE.STD_ART_UK=ART.ART_UK
  4. LEFT OUTER JOIN F_ARTGAMME G ON ART.ART_NUM = G.AR_Ref
  5. LEFT OUTER  JOIN F_ARTENUMREF E ON E.AG_No1 = G.AG_No
  6. WHERE  (AR_Gamme1 = '1' OR AR_Gamme1='0')
  7.   AND  ( dbo.F_FAMILLE.FA_Type=0  )
  8.   AND  (  dbo.DP_STOCK_A_DATE.STD_DLDATEBL<= @Prompt ('Indiquez une date ','A',,MONO,FREE)  )



 
 

Reply

Marsh Posté le 25-07-2017 à 10:50:45    

Oui j'ai oublié de le mettre mais je crois que vous en aurez pas besoin mtn :)
 
 

TotalRecall a écrit :

C'est clair. Et sinon un petit schéma de la bdd pourrait aider, parce que là [:michaeldell:2]...


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed