Requète de la quantité en stock

Résolu
runworld Messages postés 6 Statut Membre -  
runworld Messages postés 6 Statut Membre -
bonjour à tous, débutant en programmation asp.net/vb.net je développe un projet de gestion de stock avec base de données sql server 2008 r2. mes recherches m'ont permis d'avancé timidement mais surement sur mon projet jusqu'à ce jour. voila que je suis coincé à cause d'un problème qui m'empêche maintenant d'avancé. et cela fait que je perd les boules. en faite je voudrais avoir la valeur en terme de quantité de mon stock que j'affiche dans un gridview quand l'utilisateur sélectionne une famille d'article dans un dropdownlist. mes tables concerner sont: article, mouvement, type mouvement, site, sous site, faire. j'aimerais bien poster un image de ma page asp.net et de mon MPD mais je sais pas comment on le fait sur ce site.s'il vous plait aidez moi je sais plus ou mettre la tête.

merci d'avance,

5 réponses

  1. runworld Messages postés 6 Statut Membre
     
    voila ma requête testé dans sql server 2008 r2 avant de la codé en vb.net mais elle ne marche pas (dans sql server 2008 r2) aider moi les geek de l'informatique

    select ARTICLE.CODART,ARTICLE.CODFAMART,ARTICLE.DESIGART,ARTICLE.SEUILMINI,MOUVEMENT.DATMVT,TYPE_MOUVEMENT.LIBTYPMVT,
    SITE.LIBSITE,SOUS_SITE.LIBSOUSIT SUM(ENTREE.QTEMVT)-SUM(SORTIE.QTEMVT) AS STOCK
    FROM
    ARTICLE,MOUVEMENT,TYPE_MOUVEMENT,FAIRE ENTREE,FAIRE SORTIE,SITE,SOUS_SITE
    WHERE
    ENTREE.CODMVT IN (SELECT CODMVT FROM MOUVEMENT,TYPE_MOUVEMENT WHERE TYPE_MOUVEMENT.LIBTYPMVT LIKE 'ENTR' AND TYPE_MOUVEMENT.CODTYPMVT=MOUVEMENT.CODTYPMVT)
    AND SORTIE.CODMVT IN (SELECT CODMVT FROM MOUVEMENT,TYPE_MOUVEMENT WHERE TYPE_MOUVEMENT.LIBTYPMVT LIKE 'SORT' AND TYPE_MOUVEMENT.CODTYPMVT=MOUVEMENT.CODTYPMVT)
    0
  2. runworld Messages postés 6 Statut Membre
     
    Autre information
    voici la liste des différents type_mouvement : ( Sortie rebu
    Sortie payante
    Sortie gratuite
    Sortie regule inventaire
    Entrée pharmacie F1
    Entrée pharmacie F2
    Entrée regule inventaire
    Transfert1-
    Transfert1+
    Transfert2-
    Transfert2+ )
    mais seule les sortie (tous les type de sortie que j'ai cité ci-dessus décrémente le stock) et seule les entrées (tous les types d'entrées que j'ai cité ci-dessus incrémente le stock) le type transfert n'agit pas sur le stock parce que mis dans un stock fictif.
    0
  3. runworld Messages postés 6 Statut Membre
     
    voici ma nouvelle requête:

    SELECT HEALTHBOARD.dbo.ARTICLE.CODART, HEALTHBOARD.dbo.ARTICLE.CODFAMART, HEALTHBOARD.dbo.ARTICLE.DESIGART,
    HEALTHBOARD.dbo.ARTICLE.SEUILMINI, HEALTHBOARD.dbo.FAIRE.QTEMVT, HEALTHBOARD.dbo.MOUVEMENT.DATMVT,
    HEALTHBOARD.dbo.TYPE_MOUVEMENT.LIBTYPMVT, HEALTHBOARD.dbo.SOUS_SITE.LIBSOUSIT, HEALTHBOARD.dbo.SITE.LIBSITE,

    FROM HEALTHBOARD.dbo.ARTICLE, HEALTHBOARD.dbo.FAIRE, HEALTHBOARD.dbo.MOUVEMENT, HEALTHBOARD.dbo.SOUS_SITE,
    HEALTHBOARD.dbo.TYPE_MOUVEMENT, HEALTHBOARD.dbo.SITE
    WHERE HEALTHBOARD.dbo.ARTICLE.CODART = HEALTHBOARD.dbo.FAIRE.CODART AND
    HEALTHBOARD.dbo.FAIRE.CODMVT = HEALTHBOARD.dbo.MOUVEMENT.CODMVT AND
    HEALTHBOARD.dbo.MOUVEMENT.CODSOUSIT = HEALTHBOARD.dbo.SOUS_SITE.CODSOUSIT AND
    HEALTHBOARD.dbo.MOUVEMENT.CODTYPMVT = HEALTHBOARD.dbo.TYPE_MOUVEMENT.CODTYPMVT AND FAIRE.CODMVT IN
    (SELECT MOUVEMENT_2.CODMVT
    FROM HEALTHBOARD.dbo.MOUVEMENT MOUVEMENT_2, HEALTHBOARD.dbo.TYPE_MOUVEMENT TYPE_MOUVEMENT_2
    WHERE TYPE_MOUVEMENT_2.LIBTYPMVT LIKE 'ENTR' AND TYPE_MOUVEMENT_2.CODTYPMVT = MOUVEMENT_2.CODTYPMVT) AND
    FAIRE.CODMVT IN
    (SELECT MOUVEMENT_1.CODMVT
    FROM HEALTHBOARD.dbo.MOUVEMENT MOUVEMENT_1, HEALTHBOARD.dbo.TYPE_MOUVEMENT TYPE_MOUVEMENT_1
    WHERE TYPE_MOUVEMENT_1.LIBTYPMVT LIKE 'SORT' AND TYPE_MOUVEMENT_1.CODTYPMVT = MOUVEMENT_1.CODTYPMVT)

    mais quand je l'exécute dans sql server 2008 r2 j'ai l'erreur suivante:
    Msg 156, Niveau 15, État 1, Ligne 5

    Syntaxe incorrecte vers le mot clé 'FROM'.
    Msg 156, Niveau 15, État 1, Ligne 13
    Syntaxe incorrecte vers le mot clé 'AND'.

    s'ils vous plait aidez moi à resoudre mon problème
    0
  4. runworld Messages postés 6 Statut Membre
     
    salut la communauté voila j'ai finalement eclaté m'a requête en deux requête:
    1) requête pour avoir la somme des entrées
    select ARTICLE.CODART,ARTICLE.DESIGART,ARTICLE.SEUILMINI,mouvement.DATMVT,TYPE_MOUVEMENT.LIBTYPMVT,
    SITE.LIBSITE,sous_site.LIBSOUSIT,SUM(FAIRE.QTEMVT) as qte_entree

    from FAIRE faire, mouvement mouvement, TYPE_MOUVEMENT TYPE_MOUVEMENT, ARTICLE ARTICLE,
    SITE site,SOUS_SITE sous_site

    where faire.CODMVT=mouvement.CODMVT and TYPE_MOUVEMENT.CODTYPMVT= mouvement.CODTYPMVT and site.CODSITE=sous_site.CODSITE and sous_site.CODSOUSIT= mouvement.CODSOUSIT

    and faire.CODART=ARTICLE.CODART and TYPE_MOUVEMENT.LIBTYPMVT like 'entr%'
    group by ARTICLE.CODART,ARTICLE.DESIGART,
    ARTICLE.SEUILMINI,mouvement.DATMVT,TYPE_MOUVEMENT.LIBTYPMVT,SITE.LIBSITE,sous_site.LIBSOUSIT

    2) requête pour avoir la somme des sorties

    select ARTICLE.CODART,ARTICLE.DESIGART,ARTICLE.SEUILMINI,mouvement.DATMVT,TYPE_MOUVEMENT.LIBTYPMVT,
    SITE.LIBSITE,sous_site.LIBSOUSIT,SUM(FAIRE.QTEMVT) as qte_sortie

    from FAIRE faire, mouvement mouvement, TYPE_MOUVEMENT TYPE_MOUVEMENT, ARTICLE ARTICLE,
    SITE site,SOUS_SITE sous_site
    where faire.CODMVT=mouvement.CODMVT and TYPE_MOUVEMENT.CODTYPMVT= mouvement.CODTYPMVT and site.CODSITE=sous_site.CODSITE and sous_site.CODSOUSIT= mouvement.CODSOUSIT
    and faire.CODART=ARTICLE.CODART and TYPE_MOUVEMENT.LIBTYPMVT like'sorti%'
    group by ARTICLE.CODART,ARTICLE.DESIGART,
    ARTICLE.SEUILMINI,mouvement.DATMVT,TYPE_MOUVEMENT.LIBTYPMVT,SITE.LIBSITE,sous_site.LIBSOUSIT

    maintenant je veux faire la somme de mes deux requêtes (différence) pour avoir le stock. comment procéder aider moi s'ils vous plait
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. runworld Messages postés 6 Statut Membre
     
    bonsoir à tous pour tous ceux qui seront confronté à ce problème un jour voici la solution:

    SELECT
    a.CODART,
    a.CODFAMART ,
    a.DESIGART,
    a.SEUILMINI,
    max(m.DATMVT)as DATMVT,
    min(LIBTYPMVT)as LIBTYPMVT,
    s.LIBSITE,
    ss.LIBSOUSIT,

    (SUM(CASE WHEN tm.LIBTYPMVT LIKE 'entr%' THEN f.QTEMVT ELSE 0 END)
    -
    SUM(CASE WHEN tm.LIBTYPMVT LIKE 'sorti%' THEN f.QTEMVT ELSE 0 END)) as stock

    FROM FAIRE f
    INNER JOIN mouvement m ON f.CODMVT = m.CODMVT
    INNER JOIN TYPE_MOUVEMENT tm ON tm.CODTYPMVT = m.CODTYPMVT
    INNER JOIN ARTICLE a ON f.CODART = a.CODART
    INNER JOIN SOUS_SITE ss ON ss.CODSOUSIT = m.CODSOUSIT
    INNER JOIN SITE s ON s.CODSITE = ss.CODSITE

    WHERE tm.LIBTYPMVT LIKE 'entr%'
    OR tm.LIBTYPMVT LIKE 'sorti%'

    GROUP BY
    a.CODART,
    a.DESIGART,
    a.CODFAMART ,
    a.SEUILMINI,

    s.LIBSITE,
    ss.LIBSOUSIT

    adapter la requête à vos besoins.
    merci
    0