1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Rafraichir Table SQL

Discussion dans 'Windev' créé par anakinsqt, Avr 18, 2021.

  1. anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1
    Bonjour,
    Un dernier renseignement, j'ai plusieurs fichiers Table qui alimente un autre fichier Table par le biais d'une requête.
    J'ai un petit souci, lorsque je modifie une ligne d'un des fichiers Table (Ex. : Livraisons) , la modification ne se reporte pas dans le Fichier Table alimentée par une requête.

    Je sais appliquer la méthode traditionnelle, mais avec une requête SQL, je ne sais pas
     
    Tags:
  2. anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1
    Voici le code SQL, ce n'est pas moi qui l'ai fait, vous vous en doutez bien ...

    Code (Text):

    SELECT   A.IDProduits , A.Produits, A.Conditionnement,
    COALESCE (qstock,0) AS qstock , COALESCE( B.qlivr,0) AS qlivr , COALESCE( C.qsor,0) AS qsor , COALESCE( D.qregul,0) AS qregul ,  A.Prix_Unitaire ,
    COALESCE(D.qstock,0) + COALESCE(D.qregul,0) + COALESCE( B.qlivr,0)  - COALESCE(C.qsor,0) AS Stock_Final ,
    (COALESCE(D.qstock,0) + COALESCE(D.qregul,0) + COALESCE( B.qlivr,0)  - COALESCE(C.qsor,0) ) * A.Prix_Unitaire  AS Valeur_Stock
    FROM Produits A
    LEFT JOIN ( SELECT IDProduits, SUM(Quantité_Livrée) AS qlivr FROM Livraisons GROUP BY IDProduits) B
    ON B.IDProduits = A.IDProduits
    LEFT JOIN  (SELECT IDProduits, SUM(Quantité_Sortie) AS qsor FROM Sorties GROUP BY IDProduits) C
    ON C.IDProduits = A.IDProduits
    LEFT JOIN  (SELECT IDProduits, SUM(Régul_Stock) AS qregul , MAX (Stock_Initial) AS qstock, MAX(Stock_Initial) AS qstock FROM Régularisation GROUP BY IDProduits) D
    ON D.IDProduits = A.IDProduits
     
     
  3. Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Je sais appliquer la méthode traditionnelle
    Cliquez pour agrandir...
    Laquelle ?
    Pour qu'il y ait une modification, il faudrait peut être employer une requête INSERT ou UPDATE comme on te l'avais dit il y a 2 ans sur un autre forum.
     
    Gemini1961 apprécie ceci.
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Laquelle ?
    Pour qu'il y ait une modification, il faudrait peut être employer une requête INSERT ou UPDATE comme on te l'avais dit il y a 2 ans sur un autre forum.
    Cliquez pour agrandir...
    Je ne vois pas trop comment faire, d'autant que le code que j'ai envoyé fonctionne très bien... Il n'y a que le rafraîchissement qui ne se fait pas.
    Je vois ce que tu veux dire avec UPDATE, j'ai regardé, comment le programmer... Je vais voir
     
  • Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328
    Une requête SELECT sert principalement à
    1-récupérer les colonnes d'une table
    2-effectuer des calculs

    en vue d'un affichage ou de l'utilisation de ces données dans une requête "principale" s'il s'agit d'une sous requête

    En aucun cas une reqête SELECT telle qu'elle ne peut mettre à jour des données.

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    le code que j'ai envoyé fonctionne très bien
    Cliquez pour agrandir...
    Dans quel cas ?
     
    Gemini1961 apprécie ceci.
  • Wikeos

    Wikeos Active Member

    Inscrit:
    Fev 27, 2020
    Messages:
    172
    J'aime reçus:
    170

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Je ne vois pas trop comment faire, d'autant que le code que j'ai envoyé fonctionne très bien... Il n'y a que le rafraîchissement qui ne se fait pas.
    Je vois ce que tu veux dire avec UPDATE, j'ai regardé, comment le programmer... Je vais voir
    Cliquez pour agrandir...
    Comme

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    a si bien répondu tu doit faire un UPDATE sur ta requête et non un SELECT.

    Effectivement, ta requête fonctionne toujours si tu attend toujours les même résultat en affichage, tout changement sur une requête passe par un UPDATE / DELETE.

    Un simple "F2" sur ta requête va te dévoiler le code en SQL, reprenons l'exemple de windev :

    Code (Text):
    UPDATE CLIENT
    SET
    Civilite = 'Mme',
    NomClient = 'VAUVERT'
    WHERE CLIENT.NumClient = 45762
    La nous allons mettre a jour la table CLIENT, avec comme paramètre le numéro de client = 45762, nous allons seulement modifier la civilité et son nom.
     
    Gemini1961 apprécie ceci.
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Une requête SELECT sert principalement à
    1-récupérer les colonnes d'une table
    2-effectuer des calculs

    en vue d'un affichage ou de l'utilisation de ces données dans une requête "principale" s'il s'agit d'une sous requête

    En aucun cas une reqête SELECT telle qu'elle ne peut mettre à jour des données.

    Dans quel cas ?
    Cliquez pour agrandir...
    Bon, j'ai créé un bouton Rafraichir dans lequel j'ai mis ce code :

    Code (Text):

    HExécuteRequête(Requête_Stocks)
    TableAffiche(Table_Stocks ,taCourantBandeau)
     
    Sauf que je suis obligé d'appuyer à chaque fois que je modifie une saisie. Y aurait-il une manière d'améliorer la chose
     
  • Wikeos

    Wikeos Active Member

    Inscrit:
    Fev 27, 2020
    Messages:
    172
    J'aime reçus:
    170

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bon, j'ai créé un bouton Rafraichir dans lequel j'ai mis ce code :

    Code (Text):

    HExécuteRequête(Requête_Stocks)
    TableAffiche(Table_Stocks ,taCourantBandeau)
     
    Sauf que je suis obligé d'appuyer à chaque fois que je modifie une saisie. Y aurait-il une manière d'améliorer la chose
    Cliquez pour agrandir...
    Oui, ExécuteTraitement()
    Lien :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328
    Tu as aussi la possibilité d'éxécuter la requête à l'issue d'une modification sur une des table concernée, i.e. sur un ajout d'une tuple dans entrée ou dans sortie
     
  • anakinsqt

    anakinsqt Member

    Inscrit:
    Sept 5, 2019
    Messages:
    115
    J'aime reçus:
    1

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Oui, ExécuteTraitement()
    Lien :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Cliquez pour agrandir...
    J'ai mis ExecuteTraitement(Rafraîchir,trtClic), et cela me met ce message :

    Erreur dans le traitement Clic sur Rafraîchir.
    Votre code a provoqué un dépassement de la pile d'exécution.
     
    #10 anakinsqt, Avr 19, 2021
    Dernière édition: Avr 19, 2021
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,938
    J'aime reçus:
    1,564
    Multitâche ()
    Il faut laisser le temps au système de mettre à jour l'ihm.
     
  • Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ExecuteTraitement(Rafraîchir,trtClic)
    Cliquez pour agrandir...
    Pourquoi ne pas créer une procédure tout simplement.
    Le dépassement de la pile, c'est la plupart du temps une boucle sans fin, met un point d'arrêt pour voir où tu en es.
     
  • Isabelle

    Isabelle Active Member

    Inscrit:
    Jan 18, 2018
    Messages:
    358
    J'aime reçus:
    249
    Ca devient un peu lourd cette affaire, non ?
     
  • Scorpion

    Scorpion New Member

    Inscrit:
    Fev 28, 2018
    Messages:
    24
    J'aime reçus:
    6
    Alors pour simplifier la chose, place ton code de rafraichissement dans l'option "sortie d'une ligne de " ainsi que tu modifie ou pas, la table se rafraichi automatiquement
     
    Gemini1961 apprécie ceci.
  • Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    598
    J'aime reçus:
    328
    Sortie de ligne est valable s'il saisit dans un champ table, qui plus est avec modification.
    A l'heure actuelle on ne sait pas et on attend toujours son MLD.
    Lorsque la modification de données engendre une modification d'affichage, souvent, je règle ça avec un trigger.
     
    #15 Dandypunk, Avr 20, 2021
    Dernière édition: Avr 20, 2021
  • Partager cette page

    Chargement...