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 :

Mise à jour des enregistrements [WD20]


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Salut !

    J'ai un projet qui consiste à concevoir un logiciel de gestion des stocks d'un petit magasin. Dieu merci, j'ai eu l'occasion de le finir.
    Lorsque je faisais le test, tout a fonctionné correctement.

    J'ai ensuite crée l'installable et je l'ai installé sur mon poste avant de le mettre sur le poste du magasin. Lorsque je saisissais les données j'ai fait une erreur de saisie sur la quantité d'un article qui été une entrée, je voulais modifier l'enregistrement, je me suis rendus compte que j'ai oublié cette fonctionnalité.

    J'ai repris le projet, lorsque je modifie l'enregistrement sur la table des entrées, la modification s’effectue correctement mais les enregistrements qui sont sur la table stock ne changent pas donc le stock disponible reste le même.

    Voici la fenêtre des entrées, elle contient la table intitulée : TABLE_ENTRÉES
    Nom : FENETRE LISTE DES ENTREE.png
Affichages : 1868
Taille : 30,1 Ko

    Et la fenêtre STOCK qui contient la table intitulée : TABLE_STOCK
    Nom : FENETRE STOCK.png
Affichages : 1710
Taille : 18,8 Ko

    Je ne sais pas comment mettre les enregistrements de la table stock à jour à chaque modification.

    Je pensais à utiliser les TIGGERS mais je ne m'y connais pas trop. Alors que ce n'est pas sur le guide d'autoformation.

    Pouvez-vous m'aider s'il vous plaît pour que je puisse finir ce projet.

    Merci !

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    Il faudrait le code ou vous effectuez la mise à jours. Il faut retirer la valeur avant modif et ajouter la valeur après modif.

    Personnellement j'évite d'utiliser des tables Stocks ou Cumuls.
    Je ne stocke que les lignes de détail.
    Pour afficher ou éditer les recaps j'utilise les fonction SUM, Count et Group By de SQL. Au moins vous êtes certain de rester toujours cohérent.

    Dans votre cas si vous ne voulez pas tout refaire je serai tenté d'écrire une fonction qui compte et enregistre les résultats dans votre table Stocks.
    Vous appelez la fonction avant chaque affichage de récap.
    Sinon vous aurez toujours le risque d'une invraissemblance.

  3. #3
    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,
    Si les triggers ne sont pas couverts par le guide d'auto-formation, WinDev est livré avec un exemple qui en parle.
    Tu peux commencer par y jeter un œil, ainsi que dans l'aide en ligne.
    Ca te fait un bon point de départ.

    Tatayo.

  4. #4
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Merci beaucoup!

    Je recherche à consulter l'exemple ainsi que l'aide en ligne.

    Je vous tiendrais au courant de la suite.

  5. #5
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Salut à vous !

    Désolé d'avoir mis du temps à vous donner suite de mon problème. J'été souffrant et après je ne me suis pas connecté pour un problème de connexion.

    En fait, je n'ai pas pu trouvé de solution. J'ai pensé à ce que Delphi-ne a dit, de ne pas utiliser des cumuls sur la fiche STOCK.
    Donc j'ai refait l'analyse voir image ci-dessous:
    Nom : MCD_POSS.png
Affichages : 1790
Taille : 19,0 Ko

    J'aimerais qu'à chaque entrée ou sortie la fiche STOCK soit remplit automatiquement.

    Voici l'analyse précédente:
    Nom : analyse.png
Affichages : 1876
Taille : 26,2 Ko

    Avec ce code sur le Bouton Valider de la fiche ENTREE:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    *****************************
    Initialisation de BTN_Valider
    ******************************
    STOCK.Quantité_Stock_Entrée = 0
    STOCK.Quantité_Stock_Sortie = 0
     
    ********************
    Clic sur BTN_Valider
    *********************
    // Lecture des informations saisies
    EcranVersFichier()
     
    //S'il s'agit d'un nouvel enregistrement
    SI ENTREES..NouvelEnregistrement = Vrai ALORS
    	// On l'ajoute
    	HAjoute(ENTREES)
     
    	// Il faut modifier le stock du produit en conséquence
    	HLitRecherchePremier(STOCK, Référence, ENTREES.Référence)
    	//STOCK.Quantité_Stock_Sortie = 0
    	SI HTrouve(STOCK) = Faux ALORS
    		HRAZ(STOCK)
    		STOCK.Référence = ENTREES.Référence
    		HAjoute(STOCK)	
    	FIN
     
    	// XX produit en moins en stock
    	STOCK.Quantité_Stock_Entrée += ENTREES.Quantité_Ent
    	STOCK.Quantité_Stock_Actuel = STOCK.Quantité_Stock_Entrée - STOCK.Quantité_Stock_Sortie
    	HModifie(STOCK)
     
    	// Il faut modifier le stock du produit en conséquence
    	HLitRecherchePremier(STOCK, Référence, ENTREES.Référence)
    	//STOCK.Quantité_Stock_Sortie = 0
    	SI HTrouve(STOCK) = Faux ALORS
    		HRAZ(STOCK)
    		STOCK.Référence = ENTREES.Référence
    		HAjoute(STOCK)	
    	FIN
     
    FIN
     
    // Ajoute / Modifie l'enregistrement
    HEnregistre(ENTREES)
     
     
    // Ferme la fenêtre
    Ferme("",Vrai)
     
    ***************
    En utilisant désormais la première figure, et comme je ne fais pas des cumuls sur la fiche STOCK qu'est-ce que je dois enlever sur ce code?

    Quel code pouvez-vous me donner s'il vous plaît?

    Merci

  6. #6
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    Si je reprend ton premier problème qui était que lorsque tu modifie un enregistrement, la table ne se met pas à jour.
    Tout dépend comment tu rempli ta table:
    Si elle est rempli par programmation, fait une procedure Remplir_Table qui va supprimer tous les éléments de la table et la remplir, tu va pouvoir appeler cette fonction après chaque modification.
    Si elle est rempli depuis une requête tu peux utiliser hExecuteRequête ou par liaison tu peux utiliser la fonction TableAffiche(Nom_De_La_Table).

    Reviens nous avec ta solution!

  7. #7
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    D'accord, MERCI beaucoup !

  8. #8
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    pianochaoz, j'essayais de créer une procédure locale dans la fenêtre où j'ai mis la TABLE_Stock, voici le code, vérifiez si c'est correcte :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    PROCEDURE Remplir_TableStock()
     
    TableSupprimeTout(TABLE_STOCK)
     
    //S'il s'agit d'un nouvel enregistrement
    SI ENTREES..NouvelEnregistrement = Vrai ALORS
    	// On l'ajoute
    	HAjoute(ENTREES)
     
    	// Il faut modifier le stock du produit en conséquence
    	HLitRecherchePremier(STOCK, Référence, ENTREES.Référence)
    	STOCK.Quantité_Stock_Sortie = 0
    	SI HTrouve(STOCK) = Faux ALORS
    		HRAZ(STOCK)
    		STOCK.Référence = ENTREES.Référence
    		HAjoute(STOCK)	
    	FIN
     
    	// XX produit en moins en stock
    	STOCK.Quantité_Stock_Entrée += ENTREES.Quantité_Ent
    	STOCK.Quantité_Stock_Actuel = STOCK.Quantité_Stock_Entrée - STOCK.Quantité_Stock_Sortie
    	HModifie(STOCK)
     
    	// Il faut modifier le stock du produit en conséquence
    	HLitRecherchePremier(STOCK, Référence, ENTREES.Référence)
    	STOCK.Quantité_Stock_Sortie = 0
    	SI HTrouve(STOCK) = Faux ALORS
    		HRAZ(STOCK)
    		STOCK.Référence = ENTREES.Référence
    		HAjoute(STOCK)	
    	FIN
     
    FIN
    Je voulais appeler cette procédure dans le code de la TABLE_Stock mais il n'y a pas la rubrique "A chaque modification". C'est seulement "Rafraîchissement par tirer/relâcher de TABLE_STOCK". OU BIEN ce n'est là que je dois appeler la procédure Remplir_TableStock

  9. #9
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    J'ai pu faire la mise à jour. Voici comment j'ai procédé:

    Tout d'abord j'ai crée une procédure locale dans le fichier ENTREE Remplir_STOCKENTREE, voila le code:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    PROCEDURE Remplir_STOCKENTREE()
    STOCK.PQte_Entrée = 0
    STOCK.PQte_Sortie = 0
     
    // Il faut modifier le stock du produit en conséquence
    HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE)
    SI HTrouve(STOCK) = Faux ALORS
    	HRAZ(STOCK)
    	STOCK.IDARTICLE = ENTREE.IDARTICLE
    	HAjoute(STOCK)	
    FIN
     
    // XX produit en moins en stock
    STOCK.PQte_Entrée += ENTREE.Qte_Entrée
    STOCK.Qte_En_Stock = STOCK.PQte_Entrée - STOCK.PQte_Sortie
    HModifie(STOCK)
     
    // Il faut modifier le stock du produit en conséquence
    HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE)
    STOCK.PQte_Sortie = 0
    SI HTrouve(STOCK) = Faux ALORS
    	HRAZ(STOCK)
    	STOCK.IDARTICLE = ENTREE.IDARTICLE
    	HAjoute(STOCK)	
    FIN
     
    Ensuite j'ai codé le bouton Valider du fichier ENTREE comme suit :
     
    // Lecture des informations saisies
    EcranVersFichier()
     
    //S'il s'agit d'un nouvel enregistrement
    SI ENTREE..NouvelEnregistrement = Vrai ALORS
    	// On l'ajoute
    	HAjoute(ENTREE)
    FIN
     
    Remplir_STOCKENTREE()
     
    // Ajoute / Modifie l'enregistrement
    HEnregistre(ENTREE)
     
    // Ferme la fenêtre
    Ferme("",Vrai)
    Après une modification de la quantité entrée par exemple, la mise à jour se fait mais je remarque que la nouvelle valeur s'ajoute sur la précédente.

    Pour tester, j'ai remplacer 50 par 40

    La valeur est 100 car il y avait deux opérations 50+40(nouvelle valeur)+10

    Alors qu'elle devrait être 50 (40+10).

    Est-ce que je devrais ajouter un autre code?

  10. #10
    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
    Je pense surtout que tu devrais en enlever !
    A quoi bon répéter deux fois ce bout de code ?
    Code WinDev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Il faut modifier le stock du produit en conséquence
    HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE)
    STOCK.PQte_Sortie = 0
    SI HTrouve(STOCK) = Faux ALORS
    HRAZ(STOCK)
    STOCK.IDARTICLE = ENTREE.IDARTICLE
    HAjoute(STOCK) 
    FIN

    Je pense aussi que tu devrais apprendre à débuguer avec WinDev, en posant un point d'arrêt au début de ton code.
    Ainsi tu peux faire avancer WinDev pas à pas en surveillant le contenu de tes variables, et l'état de l'enregistrement courant.


    Tatayo.

    P.S. pour la lisibilité de tes messages, pense à la balise code...

  11. #11
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Code de la procedure
    Code windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Remplir_STOCKENTREE()
     
    // Il faut modifier le stock du produit en conséquence
    SI PAS HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE) ALORS
    	HRAZ(STOCK)
    	STOCK.IDARTICLE = ENTREE.IDARTICLE
    FIN
     
    // XX produit en moins en stock
    STOCK.PQte_Entrée += ENTREE.Qte_Entrée
    STOCK.Qte_En_Stock = STOCK.PQte_Entrée - STOCK.PQte_Sortie
    HEnregistre(STOCK)

    Code du bouton "Valider"
    Code windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Enregistrement des informations
    EcranVersFichier()
    HEnregistre(ENTREE)
     
    Remplir_STOCKENTREE()
     
    // Ferme la fenêtre
    Ferme("",Vrai)

    Ensuite, si je peux te donner un conseil, c'est de ne pas mettre à jour de stock, mais d'avoir une table d'entrée/sortie de la forme:
    Article_ES
    ---------------------
    IDArticle
    Qte
    Type (E/S)
    PAHT
    NumDocument
    Date
    Ça te permet de ne jamais avoir de stock fixe, soit d'avoir moins d'erreur de calcul, ton stock étant calculé à la volée au moment où tu en as besoin. Ensuite il te suffit d'avoir un fichier d'inventaire tournant ou de fin d'exercice et de recalculer en fonction de celui-ci.

    Bon dev,
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  12. #12
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Merci à tous de vous êtes penchés sur mon problème.

    J'essayerais de modifier le code du projet avec celui que vous avez donné. Je vous tiendrais au courant du résultat.

    Merci Tatayo pour le conseil concernant le débogueur.

    Merci philouZ pour le conseil de la table d'entrée/sortie, c'est une excellente idée. Je m'attacherais à l'appliquer sur mes futurs projets.

  13. #13
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Bonjour tout le monde !

    Tout a fonctionné très-bien.

    Je voulais savoir, est-ce que c'est normal lorsqu'un utilisateur se trompe lors d'une saisie et qu'elle modifie la valeur qui a été saisie par la bonne valeur, que cette dernière s'ajoute sur l'ancienne?

    Voici un exemple de cas :

    Un utilisateur alpha enregistre une opération d'entrée. Il se rappelle que la valeur de la quantité saisie n'est pas correcte.
    Il lance la FEN_TABLE_ENTREE et clique sur le BTN_MODIFIER et c'est la FEN_Fiche_ENTREE qui s'ouvre et il modifie la valeur (ex: remplace un 10 par 15).

    Sachant que le code du BTN_MODIFIER est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Une ligne est-elle sélectionné ?
    SI TableSelect(TABLE_ENTREE)=-1 ALORS RETOUR
     
    // Ouverture de la fiche du fichier ENTREE en mode modification
    Ouvre(FEN_Fiche_ENTREE)
     
    // Rafraichissement de la table
    TableAffiche(TABLE_ENTREE,taCourantBandeau)
    Il trouve que dans la TABLE_ENTREE le 10 a bien été remplacé par le 15. Mais dans la FEN_TABLE_STOCK, la TABLE_STOCK la valeur est 25 au lieu de 15.

  14. #14
    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
    Je suppose que tu ne défalques pas l'ancienne quantité avant d'ajouter la nouvelle.
    Mais ce n'est qu'une hypothèse.
    La seule façon d'en être sûr est, comme je l'ai déjà indiqué, de mettre un point d'arrêt au début du code et de voir ce qu'il se passe en avançant pas à pas et en surveillant les variables et leur contenu.

    Tatayo.

  15. #15
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Bonjour !

    Je me suis documenté sur ça mais je n'arrive pas à comprendre comment cela fonction. Est-ce qu'il n'y a pas d'autre solution?

    Genre par exemple, n'est-il pas possible d'utiliser un Tigger_Avant ? Comme ça, on pourrait le soustraire sur la nouvelle valeur saisie.

  16. #16
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Bonjour,

    Peux-tu poster le code que tu as afin qu'on puisse t'aider. Je pense que c'est au moment de l'enregistrement qu'il y a un problème de logique, mais sans le code je ne peux pas te dire où il est.

    En prenant l'exemple que je t'ai envoyé, voilà ce que cela donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Enregistrement des informations
    Soit QtePrecedente = ENTREE.Qte_Entrée
    EcranVersFichier()
    HEnregistre(ENTREE)
     
    Remplir_STOCKENTREE(QtePrecedente)
     
    // Ferme la fenêtre
    Ferme("",Vrai)
    Code windev : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Remplir_STOCKENTREE(QtePrecedente = 0)
     
    // Il faut modifier le stock du produit en conséquence
    SI PAS HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE) ALORS
    	HRAZ(STOCK)
    	STOCK.IDARTICLE = ENTREE.IDARTICLE
    FIN
     
    // XX produit en moins en stock
    STOCK.PQte_Entrée += ENTREE.Qte_Entrée - QtePrecendente
    STOCK.Qte_En_Stock = STOCK.PQte_Entrée - STOCK.PQte_Sortie
    HEnregistre(STOCK)
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

  17. #17
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Bonjour !

    Voici le code que j'ai utilisé pour la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    PROCEDURE Remplir_STOCKENTREE()
    STOCK.PQte_Entrée = 0
    STOCK.PQte_Sortie = 0
     
    // Il faut modifier le stock du produit en conséquence
    SI PAS HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE) ALORS
    	HRAZ(STOCK)
    	STOCK.IDARTICLE = ENTREE.IDARTICLE
    FIN
     
    // XX produit en moins en stock
    STOCK.PQte_Entrée += ENTREE.Qte_Entrée
    STOCK.Qte_En_Stock = STOCK.PQte_Entrée - STOCK.PQte_Sortie
    HEnregistre(STOCK)
    Voici celui que j'ai utilisé pour le BTN_Valider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Enregistrement des informations
    EcranVersFichier()
    HEnregistre(ENTREE)
     
    Remplir_STOCKENTREE()
     
    // Ferme la fenêtre
    Ferme("",Vrai)

  18. #18
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    Ton problème est un problème de conception. Tu as une fenêtre qu'on pourrait appeler 'Création de nouvelle commande'.
    A priori, ta fenêtre fonctionne correctement.

    Si j'ai bien tout suivi, la situation qui te pose problème est la suivante :
    - L'utilisateur crée une nouvelle commande.
    Il valide sa commande (par le bouton BTN_VALIDER)
    - Il se rend compte qu'il a fait une erreur, il veut donc modifier la commande.
    - Et donc il ouvre la nouveau la fenêtre 'Création de nouvelle commande'.
    Et du coup, le programme crée une nouvelle commande, au lei de modifier la dernière commande crée.
    C'est normal !

    Ce qu'il faut c'est une fenêtre 'modifier une commande', ou bien une fenêtre 'annuler une commande'
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  19. #19
    Nouveau Candidat au Club Avatar de MOHAMED Rachade
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 57
    Points : 0
    Points
    0
    Par défaut Mise à jour des enregistrements
    Bonjour !

    Oui, c'est ça. Je pense que sur la fenêtre qu'on doit créer, si on se base de tes explications, on devrait utiliser les code donné par philouZ.

    Pour la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PROCEDURE Remplir_STOCKENTREE(QtePrecedente = 0)
     
    // Il faut modifier le stock du produit en conséquence
    SI PAS HLitRecherchePremier(STOCK, IDARTICLE, ENTREE.IDARTICLE) ALORS
    	HRAZ(STOCK)
    	STOCK.IDARTICLE = ENTREE.IDARTICLE
    FIN
     
    // XX produit en moins en stock
    STOCK.PQte_Entrée += ENTREE.Qte_Entrée - QtePrecendente
    STOCK.Qte_En_Stock = STOCK.PQte_Entrée - STOCK.PQte_Sortie
    HEnregistre(STOCK)
    Pour la validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Enregistrement des informations
    Soit QtePrecedente = ENTREE.Qte_Entrée
    EcranVersFichier()
    HEnregistre(ENTREE)
     
    Remplir_STOCKENTREE(QtePrecedente)
     
    // Ferme la fenêtre
    Ferme("",Vrai)
    Maintenant, lorsque je l'utilise, la QtePrecedente est en rouge sur le code.

  20. #20
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2003
    Messages : 942
    Points : 1 933
    Points
    1 933
    Par défaut
    Remplace
    Code windev : Sélectionner tout - Visualiser dans une fenêtre à part
    Soit QtePrecedente = ENTREE.Qte_Entrée
    par
    Code windev : Sélectionner tout - Visualiser dans une fenêtre à part
    QtePrecedente est numerique = ENTREE.Qte_Entrée
    Philippe,


    N'hésitez à lever le pouce si mon aide vous a été utile.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/08/2012, 19h58
  2. Réponses: 15
    Dernier message: 12/12/2011, 17h07
  3. Réponses: 0
    Dernier message: 08/04/2010, 12h58
  4. Réponses: 3
    Dernier message: 21/08/2006, 10h03
  5. Réponses: 4
    Dernier message: 03/05/2006, 16h26

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