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 :

Exécution en double à la sortie d'une ligne de table [WD19]


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut Exécution en double à la sortie d'une ligne de table
    Bonjour,

    Je rencontre un problème à la sortie d'une ligne de table, où j'ai mis mon code qui vient ajouter des infos dans un fichier.
    Le problème est que ce code est exécuté deux fois (une fois quand je valide ma saisie par la touche entrée par exemple et une seconde fois juste avant que je clique sur une autre ligne de ma table).
    Avez-vous déjà eu ce problème ?

    Merci d'avance.

  2. #2
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Si tu en disais un peu plus (le code de sortie de table par exemple), ne crois-tu pas que ça aiderait ?
    Et cette table, mémoire ou liée au fichier ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    c'est une table remplie par programmation.

    Voici le code à la sortie d'une ligne:
    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
    SI TABLE_heures_en_prod.COL_N_Poste = 0 OU TABLE_heures_en_prod.COL_N_Poste = "" ALORS
    	TABLE_heures_en_prod.COL_Affectation = ""
    SINON 
    	HExécuteRequête(REQ_affect,hAvecFiltre,COL_N_Poste)
    	HLitRecherchePremier(REQ_affect,REQ_affect.Code_zone_affecta,COL_N_Poste)
    	SI HTrouve(REQ_affect) ALORS
    		TABLE_heures_en_prod.COL_Affectation = REQ_affect.Nom_affectation_Re1 + " / " + REQ_affect.Nom_affectation_Re + " / " +  REQ_affect.Nom_affectation
    	FIN
    FIN
    HLibèreRequête(REQ_affect)
    Multitâche(-1)
     
    HLitRecherchePremier(Recup_presences,IDRecup_presences,gnIdTableFormationGestionHeures)
    SI HTrouve(Recup_presences) ALORS
    	SI COL_N_Poste <> "" ALORS
    		Recup_presences.Cd_Zone = COL_N_Poste..ValeurAffichée
    		Recup_presences.Temps_presence = COL_Durée
    		HModifie(Recup_presences)
    	FIN
    SINON
    	SI COL_N_Poste <> "" ALORS
    		Recup_presences.Cd_Zone = COL_N_Poste..ValeurAffichée
    		Recup_presences.Date = SAI_Date1
    		Recup_presences.Matricule = SAI_Matricule..ValeurAffichée
    		Recup_presences.Temps_presence = COL_Durée
    		Recup_presences.type_presence = "prod"
    		Recup_presences.ANNEE = Droite(SAI_Date1..ValeurAffichée,4)
    		Recup_presences.Mois = Milieu(SAI_Date1..ValeurAffichée,4,2)
    		HAjoute(Recup_presences)
    	FIN
    FIN
    gnIdTableFormationGestionHeures = 0

    et voici le code à la sélection d'une ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gnIdTableFormationGestionHeures = 0
    gnIdTableFormationGestionHeures = COL_ID

    Merci pour votre aide.

  4. #4
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Bien, alors maintenant qu'est-ce qui vous fait dire que ce code est exécuté deux fois ?
    J'en profite pour vous conseiller de tester que vos Hmodifie et HCreation sont bien executés.
    Regardez bien l'aide HModifie et HCreation (Doublons)

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut
    En mode débug je vois que je passe deux fois dans ce code.
    Par exemple je saisie quelque chose dans la 1ère colonne puis je tape sur la touche entrée (ce qui exécute ce code).
    Ensuite si je change de ligne dans la table (je vais sortir une nouvelle fois de la ligne), le code est exécuté à nouveau.

  6. #6
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Petite question : Quand veux tu ajouter ta ligne dans la BDD ?

    Je pense à deux pistes qui pourrait être à la source de ton problème :

    • gestion de la touche entrée avec la fonction ToucheEnfoncée;
    • un bouton de type validation (description du bouton dans l'onglet IHM) qui effectue le code d'insertion.


    Tiens nous au courant.

    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  7. #7
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    Salut dsr57,

    J'essayais de l'y amener pas à pas.
    Tu as été un peu plus vite, mais pourquoi pas ?
    D'autant que ta réponse est dans l'esprit.

    mimi1255,
    Tu as maintenant de quoi investiguer.
    Et n'oublies pas de tester hdoublon sur tous tes hModifie ou hCreation.

  8. #8
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut
    Je veux ajouter ma ligne dans la BDD dès que je sors de la ligne de la table.

    il y avait la fonction "Retour à la ligne par ENTREE" que j'ai désactivé mais le problème reste le même.

    Je ne vois vraiment pas.

  9. #9
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    999
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 999
    Points : 2 526
    Points
    2 526
    Par défaut
    et un bouton de type validation (comme t'a suggéré dsr57)

    Par contre, quel problème pose se traitement effectué 2 fois ? (pour comprendre)

  10. #10
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut
    Je n'ai pas de bouton de type validation.

    Le problème c'est que le code ci-dessous est exécuté deux fois donc l'ajout des données se fait deux fois:
    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
    SI TABLE_heures_en_prod.COL_N_Poste = 0 OU TABLE_heures_en_prod.COL_N_Poste = "" ALORS
    	TABLE_heures_en_prod.COL_Affectation = ""
    SINON 
    	HExécuteRequête(REQ_affect,hAvecFiltre,COL_N_Poste)
    	HLitRecherchePremier(REQ_affect,REQ_affect.Code_zone_affecta,COL_N_Poste)
    	SI HTrouve(REQ_affect) ALORS
    		TABLE_heures_en_prod.COL_Affectation = REQ_affect.Nom_affectation_Re1 + " / " + REQ_affect.Nom_affectation_Re + " / " +  REQ_affect.Nom_affectation
    	FIN
    FIN
    HLibèreRequête(REQ_affect)
    Multitâche(-1)
     
    HLitRecherchePremier(Recup_presences,IDRecup_presences,gnIdTableFormationGestionHeures)
    SI HTrouve(Recup_presences) ALORS
    	SI COL_N_Poste <> "" ALORS
    		Recup_presences.Cd_Zone = COL_N_Poste..ValeurAffichée
    		Recup_presences.Temps_presence = COL_Durée
    		HModifie(Recup_presences)
    	FIN
    SINON
    	SI COL_N_Poste <> "" ALORS
    		Recup_presences.Cd_Zone = COL_N_Poste..ValeurAffichée
    		Recup_presences.Date = SAI_Date1
    		Recup_presences.Matricule = SAI_Matricule..ValeurAffichée
    		Recup_presences.Temps_presence = COL_Durée
    		Recup_presences.type_presence = "prod"
    		Recup_presences.ANNEE = Droite(SAI_Date1..ValeurAffichée,4)
    		Recup_presences.Mois = Milieu(SAI_Date1..ValeurAffichée,4,2)
    		HAjoute(Recup_presences)
    	FIN
    FIN
    gnIdTableFormationGestionHeures = 0

  11. #11
    Membre habitué Avatar de Christophe.LOGEL
    Homme Profil pro
    Expert WinDev / WebDev
    Inscrit en
    Mars 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Expert WinDev / WebDev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 121
    Points : 182
    Points
    182
    Par défaut
    Bonjour,

    Je pense que vous avez une table avec saisie, donc quand vous rentrez en saisie dans la ligne windev exécute le code de sélection de ligne puis le code entrée en saisie de ligne. Après la saisie, il exécute le code de sortie de saisie ( sortie de ligne) puis quand vous changez de ligne, il exécute aussi le code de sortie de ligne. C'est normal... donc 2 exécutions.

    Cordialement,
    Christophe LOGEL
    www.sigmasys.fr

  12. #12
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    Tu peux essayer d'encadrer le code de la procédure de sortie par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SI TABLE_heures_en_prod..Modifié alors
    ...
    FIN
    Le flag Modifié est vrai quand on est passé en saisie sur la ligne et que l'on quitte cette ligne.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  13. #13
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 324
    Points : 40
    Points
    40
    Par défaut
    Finalement, j'ai ajouté un bouton valider où j'ai placé mon code dedans.

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

Discussions similaires

  1. [WD15] Exécuter un code sur touche entrée d'une ligne de table
    Par kinansoag dans le forum WinDev
    Réponses: 3
    Dernier message: 15/10/2014, 21h04
  2. Récuperer la sortie d'une ligne de commande
    Par rambc dans le forum Interfaçage autre langage
    Réponses: 6
    Dernier message: 21/05/2009, 16h33
  3. Obtenir la sortie d'une ligne de commande dans un variable java
    Par Dalidou dans le forum Général Java
    Réponses: 2
    Dernier message: 06/04/2009, 09h17
  4. taille max de nb de caractère dans une ligne de table mysql
    Par zidenne dans le forum Administration
    Réponses: 1
    Dernier message: 01/09/2006, 11h04
  5. Imposer a Access l'écrasement d'une ligne de table
    Par 3lyxir dans le forum Access
    Réponses: 7
    Dernier message: 18/05/2006, 14h39

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