IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Requête UPDATE


Sujet :

WinDev

  1. #1
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut Requête UPDATE
    Bonjour à Tous,

    Je fais appel à vous car j'ai un problème de compréhension:

    Voilà, je possède deux tables:

    1- COMMANDES
    2- LIGNES DE COMMANDES

    Je dois, selon si les quantités reçues sont inférieures ou égales à la quantité commandée, modifier le statut de ma commande:

    Exemples:

    a) Si quantité reçue est inférieur à quantité commandée alors
    - Commande modifiée

    b) Si quantité reçue est égale (ou supérieur) à la quantité commandée alors
    - Commande soldée

    J'ai donc pensé mettre une condition en comparent les colonnes quantités commandées / quantités reçues, mais cela ne fonctionne pas, en effet, il me passe la commande en statut soldé.

    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
    SI COL_QTE_IN = COL_QTE_CMD ALORS
    		sReq4 est une chaîne="UPDATE COMMANDES SET CMD_ETAT=3 WHERE CMD_NUM='"+SAI_CMDNUM+"' "
    		SI EnModeTest() ALORS Trace("Commande soldée-", sReq4)
    		SI SQLExec(sReq4,"REQ5") ALORS
     
    		FIN
    		SQLFerme(sReq4)
    	SINON
    		sReq5 est une chaîne="UPDATE COMMANDES SET CMD_ETAT=2 WHERE CMD_NUM='"+SAI_CMDNUM+"' "
    		SI EnModeTest() ALORS Trace("Commande modifiée - ", sReq5)
    		SI SQLExec(sReq5,"REQ6") ALORS
     
    		FIN
    		SQLFerme(sReq5)
    	FIN
    NB: Le paramètre '"+SAI_CMDNUM+"' étant le numéro de la commande


    A noter que les colonnes quantités sont alimentées par la table LIGNES_COMMANDES, mais que le statut de la commande dépend de la table COMMANDES (qui elle contient l'entête de la commande)

    Nul doute que je commet une erreur, mais je ne vois pas où

    Par avance merci pour votre aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Question bête: quelles sont les valeurs de COL_QTE_IN et COL_QTE_CMD ?
    Je vois que les deux variables commencent par COL_, sont-ce des colonnes de table ? Si c'est bien le cas (bien qu'il n'y ait pas de nom de table), es-tu sûr de taper sur la bonne ligne ?

    Tatayo.

  3. #3
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Bonjour Tatayo

    Les deux colonnes que je compare sont les colonnes de la table de la fenêtre et pas les colonnes de la table SQL LIGNES_COMMANDES.

    Là est peut être mon erreur

    Quant aux valeurs de mes colonnes, elles s'affichent en gros comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MODELE       COLORIS       TAILLE     QTE COMMANDE    QUANTITE RECUE
     
    SL-GABY744     NOIR          36               10                           9
    SL-GABY744     NOIR          38               10                          10
     
    Ect........
    Merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    a priori tu passes dans la mauvaise branche du SI. Tu devrais peut-être commencer par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Trace("COL_QTE_IN = " + COL_QTE_IN + TAB + "COL_QTE_CMD = " + COL_QTE_CMD)
    Si le code que tu nous as montré n'est pas dans une boucle, il tient compte de la ligne sélectionnée.

    Sinon, j'ai une question sur ton analyse du problème :
    Si tu as une ligne livrée partielement et un autre livrée complètement : quel sera le statut de ta commande ?

  5. #5
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Re Bonjour,

    Suite à la remarque de Tatayo, ne devrais je pas plutôt commencer de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SI Requête est une chaîne="SELECT CMD_ETAT FROM COMMANDES, LIGNES_COMMANDES WHERE LGC_QTE_CMD = LGC_QTE_LIVREE AND CMD_NUM=LGC_NUM_CMD "
    SI SQLExe(Requête, "REQ") ALORS
     
    ET ICI UPDATE en statut soldé
     
    SINON
     
    ET LA UPDATE en statut modifié
    Merci
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  6. #6
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 953
    Points : 766
    Points
    766
    Par défaut
    Citation Envoyé par Bowen Voir le message
    a priori tu passes dans la mauvaise branche du SI. Tu devrais peut-être commencer par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Trace("COL_QTE_IN = " + COL_QTE_IN + TAB + "COL_QTE_CMD = " + COL_QTE_CMD)
    Si le code que tu nous as montré n'est pas dans une boucle, il tient compte de la ligne sélectionnée.

    Sinon, j'ai une question sur ton analyse du problème :
    Si tu as une ligne livrée partielement et un autre livrée complètement : quel sera le statut de ta commande ?
    Bonjour,

    Dans ce cas, le statut est modifié, et c'est à l'utilisateur de déterminer si il considère que la commande doit être soldée (exemple: il est certain que les quantités manquantes ne seront jamais livrées).
    Mais pour cela, j'ai prévu dans mon cahier des charges la possibilité de donner à l'utilisateur la possibilité de le faire si son mot de passe le lui autorise

    Merci de ton aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    Donc ton code est dans une boucle ?

    Parce que sinon, (à ce que j'en comprends et avec le code que je vois), dès que tu vas livrer une ligne sur une commande, la commande va être cloturée.

    Et si elle est dans une boucle, dès que tu vas livrer la dernière ligne de la commande la commande va être cloturée.

    Ca n'est qu'une indication pour toi. Mais je pense que tu as au devant de problèmes.

  8. #8
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Salut Raptor92

    Je pense qu'il faut que tu fasse ton test à chaque fois que tu ajoute ou que tu met à jour une réception fournisseur.

    Comment gère tu tes réceptions fournisseurs et comment alimente tu la colonne
    Quantité reçut (COL_QTE_IN)?

    Car sur le principe à chaque réception tu regarde pour quelle commande ça correspond.
    ensuite tu recherche pour chaque ligne te ta commande si tout est reçus..

    en gros

    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
     
    Commande_complète est booleen = vrai
     
    pour toutes Lignes_Commande de CommandeConcerné
       //recherche de toutes les réception pour cette ligne_commande
       si TotalRéception < TotalCommander alors
          Commande_Complète = faux
          sortir
       fin
    fin
    //Test commande complète
    si Commande_complète alors
       //passage de ta commande au statut Complète
    sinon
       //commande avec reliquat
    fin
    Enfin un truc du genre
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. Ma requète update est elle conforme ?
    Par CBTech dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 24/05/2005, 21h25
  3. [VB.NET] [ODBC] Pb requête UPDATE avec clé primaire..?
    Par Pleymo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/03/2005, 18h46
  4. requête update qui marche pas
    Par MrsFrizz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/12/2004, 08h16
  5. PB Requête update
    Par cassi2 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 25/10/2004, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo