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 :

Ajouter un nouvel enregistrement [WD17]


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Ajouter un nouvel enregistrement
    Bonjour,

    Débutant en windev,j'arrive pas à ajouter un stock.
    Pour Hmodifie,ça marche,les données de stock sont modifiées mais lorsque je veux ajouter un nouveau stock rien n'est affiché dans le tableau.
    J'espère que qq peut m'aider.Le code que j'ai testé est le suivant:

    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
    EcranVersFichier(FEN_saisie_piece_STK,stock_MP)
     
    SI stock_MP..NouvelEnregistrement=Vrai ALORS
    	HAjoute(stock_MP)
           HLitRecherchePremier(stock_MP,IDstock_MP,stock_MP.IDstock_MP)
     
    SI HTrouve(stock_MP)=Faux ALORS
    HAjoute(stock_MP)
    FIN
     
         stock_MP.N_res +=SAI_Quantité
          HModifie(stock_MP)
     
    FIN
    MaFenêtre..ValeurRenvoyée=Vrai
    Ferme()

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Vous ne décrivez pas assez votre contexte pour que nous puissions comprendre exactement comment vous organisez votre programme.

    Je crois comprendre que vous appelez une fenêtre spécifique pour enregistrer une nouvelle fiche stock, à partir d'une première fenêtre qui comprend le tableau qui n'est pas mis à jour.

    Vous n'avez aucune instruction de mise à jour du tableau dans le code que vous nous soumettez. Donc, il n'y a a priori aucun mystère.
    Suivant que vous voulez ajouter votre nouvel élément en fin de tableau ou à une position spécifique ou dans un tableau trié, vous devez voir respectivement les instructions TableauAjoute, TableauInsère ou TableauAjouteTrié.

    Vous pouvez insérer votre nouvelle ligne dans le bout de code que vous nous montrez, avant de fermer la fenêtre, mais ce sera sans doute plus simple à gérer dans la première fenêtre, en testant votre valeur de retour (renvoyée à Vrai).


    Pour le reste, vous devez revoir votre code :

    1. La boucle interne :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      SI HTrouve(stock_MP)=Faux ALORS 
      HAjoute(stock_MP)
      FIN
      n'a pas lieu d'être ou est en tout cas inefficace dans le code présenté.
      Vous venez de faire un HAjoute soit il a réussi et ne sera pas répété, soit il a échoué et échouera à nouveau puisque vous n'avez rien modifié.
      Si l'idée est de tester si l'ajout a réussi, alors voyez du côté des erreurs.
    2. Vous renvoyez
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      MaFenêtre..ValeurRenvoyée=Vrai
      dans tous les cas, ce qui ne vous apporte rien. Soit vous le supprimez, soit vous ne le renvoyez que si 'Ajout a réussi.


    Bon travail et bon dimanche

    Hemgé

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bonjour

    Avec ce problème débile je pense pas que je vais passer un bon dimanche

    Bon,j'ai essayer de tester même le code ci-dessous mais rien n'est affiché malgré que j'ai utilisé la fonction tableaffiche pour l'affichage.Et lorsque j'utilise seulement Hajoute ça marche parfaitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    EcranVersFichier(FEN_saisie_piece_STK,stock_MP)
     
    SI stock_MP..NouvelEnregistrement=Vrai ALORS
     
    HAjoute(stock_MP)
     
    FIN
     
    Ferme()

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Antarctique

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 17
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Je crois que ta démarche de programmation est un peu "fausse".

    Tout d'abord il faut commencer par comprendre ce que l'on fait en fonction de ce que l'on veut faire.

    Pour ton problème, j'ai pu comprendre que tu voulais mettre a jour un fichier de stock, généralement Quantité, PMP,... avec leurs nouvelles valeurs.

    Mais aussi que tu voulais créer des nouveaux articles avec leurs nouvelles valeurs Quantité,PMP,..., d’où le recours à la commande HAjoute() dans ton code?

    Dans ce cas il te faut une référence unique pour chaque article (a part le IDAuto de fichier) c'est sur cette référence que tu vas faire la recherche dans le fichier avant d'ajouter un nouvel enregistrement et non pas sur le IDAuto.

    Le code d'initialisation de ta fenêtre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Affichage des enregistrements
    FichierVersEcran()
     
    // Valeur de retour par défaut
    MaFenêtre..ValeurRenvoyée = Faux
    Le code de ton bouton valider :

    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
    EcranVersFichier()
     
    SI stock_MP..NouvelEnregistrement ALORS
    	HRecherchePremier(stock_MP,reference,sai_reference)
    	SI HTrouve() ALORS
    		Erreur("Référence deja utilisée")
    		RepriseSaisie(sai_reference)
    	SINON
    		HAjoute(stock_MP)
    	FIN
    SINON
    	stock_MP.N_res +=SAI_Quantité
    	HModifie(stock_MP)
    FIN
    // Valeur de retour de la fenêtre
    MaFenêtre..ValeurRenvoyée = Vrai
     
    Ferme()
    Mais dans ce cas il te faut verrouiller la modification des anciennes références lors d'une modification de la quantité par exemple.

    Le code d'initialisation de ta fenêtre sera donc le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Affichage des enregistrements
    FichierVersEcran()
     
    SI PAS stock_MP..NouvelEnregistrement ALORS
    	sai_reference..Etat = Grisé
    FIN 
     
    // Valeur de retour par défaut
    MaFenêtre..ValeurRenvoyée = Faux
    Dans la fenêtre contenant la table qui affiche le stock le bouton Ajouter doit s'initialiser avec la commande Hraz() avant d'appeler la fenêtre FEN_saisie_piece_STK

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Création d'un nouvel enregistrement
    HRAZ(stock_MP)
     
    // Ouverture de la fiche du fichier Stock en mode création
    SI Ouvre(FEN_saisie_piece_STK) ALORS
    	// Rafraichissement de la table
    	TableAffiche(TABLE_F_Stock,taCourantPremier)
    FIN
    Voila j’espère que la démarche été claire.

    Bonne journée

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2012
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Bonjour
    merci bien pour votre aide Hemgé et Channibal
    malgré que j'arrive pas à travailler avec nouvelenregistrement mais j'ai essayé de changer le code et çamarche,voici le code que j'ai utilisé :


    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
     
    HLitRecherche(stock_MP, IDstock_MP, SAI_IDpiece_de_rechange)
    EcranVersFichier(MaFenêtre,stock_MP)
    SI HTrouve(stock_MP) ALORS
    	// Modification de l'enregistrement trouvé
    	EcranVersFichier(FEN_saisie_piece_STK,stock_MP)
     
    	stock_MP.stk_restant =stock_MP.Quantité + stock_MP.stk_restant
     
    	HModifie(stock_MP, HNumEnr(stock_MP))
    SINON
    	// Si l'enregistrement n'est pas trouvé, c'est un ajout
    	HAjoute(stock_MP)
    FIN
     
    MaFenêtre..ValeurRenvoyée=Vrai
     
    Ferme()
    Bon debut de semaine

  6. #6
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Si MaFenêtre et FEN_saisie_piece_STK sont identiques, la ligne EcranVersFichier(FEN_saisie_piece_STK,stock_MP) ne sert à rien.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  7. #7
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonjour,

    Comme frenchsting le relève,
    la ligne EcranVersFichier(FEN_saisie_piece_STK,stock_MP) ne sert à rien.
    Vous arrivez dans votre fenêtre de gestion d'article en passant la valeur de l'article à retrouver (paramètre ou variable globale) ou - plus probablement d'après votre code - vous saisissez cette valeur dans la fenêtre dont vous nous détaillez une partie du code.

    Vous recherchez et lisez l'enregistrement, puis vous l'affectez avant de tester si vous l'avez bien trouvé.
    Cela peut sembler un peu rapide, mais cela vous économise une ligne de code, l'autre alternative étant de mettre cette affectation et dans le ALORS et dans le SINON.

    Dans votre code, si trouvé ou pas trouvé, les zones tampons correspondant aux rubriques du fichier auront de toute façon été mises à jour par l'instruction EcranVersFichier de votre ligne 2 (en modification ou en création), puis vous écrivez dans le fichier.

    Par ailleurs, quelle est l'utilité de votre ligne 15 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaFenêtre..ValeurRenvoyée=Vrai
    Que vous ayez modifié ou créé, voire que vous n'ayez rien fait pour une autre raison, le retour sera toujours Vrai selon votre code actuel.

    Vous n'êtes pas obligé d'activer ce renvoi et si vous ne le testez pas, alors supprimez cette ligne.
    Si vous le testez, il vous faut réfléchir à l'utilité de ce test, qui - sous réserve que vous n'avez peut-être pas tout repris ici - peut soit indiquer qu'il s'agit d'un ajout ou d'une modification, soit que l'écriture dans le fichier s'est bien déroulée (après ajout ou modification), soit ...

    ..NouvelEnregistrement n'a pas d'utilité ici, puisque vous testez Htrouve.
    En sus, n'oubliez pas qu'il peut être remis à Faux par un HRAZ.

    Hemgé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] requête : je ne peux pas ajouter de nouvel enregistrement
    Par tibofo dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 12/10/2016, 15h15
  2. [AC-97] Ajouter un nouvel enregistrement en prennant en compte un filtre
    Par Milyshyn76 dans le forum IHM
    Réponses: 2
    Dernier message: 10/02/2011, 14h40
  3. [MySQL] ajouter un nouvel enregistrement
    Par info_sara dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/05/2008, 07h35
  4. [MySQL] Problème d'ajout de nouvel enregistrement
    Par bosserieux dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 17/01/2008, 10h54
  5. problème : Ajouter un nouvel enregistrement
    Par rob2-9 dans le forum Access
    Réponses: 2
    Dernier message: 10/08/2006, 17h52

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