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 :

Traitement sur rupture [WD24]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut Traitement sur rupture
    Bonjour

    Je veux que mon code exécute un traitement a chaque rupture de la table mémoire alimenter par une requête , mais le problème il parcourt toutes la table il traite pas chaque rupture en interpretant 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
    MaRépétition est un entier = 1 // Début de la rupture
    DébutRupture est un entier  // Indice du haut de rupture
    FinRupture est un entier// Indice du bas de rupture
    Indice est un entier // Indice des ruptures
     
     
     
    TANTQUE MaRépétition <= TABLE_REQ_LOGTERMINAL..Occurrence
    	// Indice de la rupture courante
    	DébutRupture = TableIndiceRupture(TABLE_REQ_LOGTERMINAL.RUPT_HautRupture2, MaRépétition)
    	FinRupture = TableIndiceRupture(TABLE_REQ_LOGTERMINAL.RUPT_BasRupture2, MaRépétition)
     
    	// Parcours  de la rupture courante
     
     
    	POUR Indice = DébutRupture À FinRupture
    		SI EstPair(Indice) ALORS
     
    			TABLE_REQ_LOGTERMINAL[Indice].COL_DwInOutMode="Sortie"
     
     
    		SINON
     
    			TABLE_REQ_LOGTERMINAL[Indice].COL_DwInOutMode="Entrée"
     
    		FIN
    	FIN
     
     
     
    	// Passage à la rupture suivante
    	MaRépétition = FinRupture + 1
    FIN
    Merci pour vous réponses

  2. #2
    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 393
    Points
    9 393
    Par défaut
    Tu as mis une boucle TANTQUE en ligne 8, donc tu lui demandes de répéter une certaine opération.
    Et Windev, il fait ce que tu lui demandes. il exécute cette boucle.

    La première question, c'est : où as-tu placé ce code ? Sur un bouton, sur une ligne de la table, ailleurs ? C'est important pour comprendre.
    Deuxième question : as-tu vu cette page de la documentation : Ruptures champ table ?
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Tu parles de table mémoire alimentée par une requête. C'est soit l'un (table mémoire=Table remplie par programmation,) soit l'autre on a alors affaire à une table fichier.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Tu as mis une boucle TANTQUE en ligne 8, donc tu lui demandes de répéter une certaine opération.
    Et Windev, il fait ce que tu lui demandes. il exécute cette boucle.

    La première question, c'est : où as-tu placé ce code ? Sur un bouton, sur une ligne de la table, ailleurs ? C'est important pour comprendre.
    Deuxième question : as-tu vu cette page de la documentation : Ruptures champ table ?
    Bonjour j'ai essayer les deux code sur bouton , en affichage de ligne de la table toujours le même résultat et j'ai bien regarder les tables rupture

  5. #5
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Jai même essayer avec ce code même résultat je sais pas ou j'ai louper qqe chose

    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
    POUR TOUTE LIGNE nLigne DE TABLE_REQ_LOGTERMINAL
    POUR nIndice = TableIndiceRupture(TABLE_REQ_LOGTERMINAL.RUPT_HautRupture2,nLigne) _À_ TableIndiceRupture(TABLE_REQ_LOGTERMINAL.RUPT_BasRupture2,nLigne)
     
     
    	SI EstPair(nIndice) ALORS
     
    		TABLE_REQ_LOGTERMINAL[nIndice].COL_DwInOutMode="Sortie"
     
     
    	SINON
     
    		TABLE_REQ_LOGTERMINAL[nIndice].COL_DwInOutMode="Entrée"
     
    	FIN
     
     
    FIN
     
    FIN

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par moradsoft Voir le message
    Bonjour j'ai essayer les deux code sur bouton , en affichage de ligne de la table toujours le même résultat et j'ai bien regarder les tables rupture
    Et au niveau du code de fin de rupture ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  7. #7
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Et au niveau du code de fin de rupture ?
    Comment ça

  8. #8
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    Tu veux que lorsque l'on arrive en fin de rupture, une colonne des ligne de la rupture ait alternativement la valeur entrée et sortie.
    Il faut donc appeler ta fonction lors de l'affichage de la rupture.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Tu veux que lorsque l'on arrive en fin de rupture, une colonne des ligne de la rupture ait alternativement la valeur entrée et sortie.
    Il faut donc appeler ta fonction lors de l'affichage de la rupture.
    cette option n'existe pas sur les table , ta pu la trouver comment

  10. #10
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Bonjour,
    Vous n'arrivez pas à expliquer ce que vous voulez. Alors, prenons quelques exemples.

    Exemple 1 : J'ai une rupture qui contient 2 lignes. Le code actuel vous donne ceci

    ligne 1 xxxxxxx Entrée
    ligne 2 xxxxxxx Sortie

    ça ne répond pas à votre besoin, peut être vous voulez le résultat suivant :
    ligne 1 xxxxxxx
    ligne 2 xxxxxxx Sortie

    Exemple 2 : J'ai une rupture qui contient 1 ligne et ça donne ceci
    ligne 1 xxxxxxx Entrée et ça vous convient.

    Je ne sais pas comment les lignes sont triées dans chaque rupture. Je suppose que vous avez au maximum 2 lignes par rupture. Une capture d'écran de votre table est souhaitable.

  11. #11
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par midou23175 Voir le message
    Bonjour,
    Vous n'arrivez pas à expliquer ce que vous voulez. Alors, prenons quelques exemples.

    Exemple 1 : J'ai une rupture qui contient 2 lignes. Le code actuel vous donne ceci

    ligne 1 xxxxxxx Entrée
    ligne 2 xxxxxxx Sortie

    ça ne répond pas à votre besoin, peut être vous voulez le résultat suivant :
    ligne 1 xxxxxxx
    ligne 2 xxxxxxx Sortie

    Exemple 2 : J'ai une rupture qui contient 1 ligne et ça donne ceci
    ligne 1 xxxxxxx Entrée et ça vous convient.

    Je ne sais pas comment les lignes sont triées dans chaque rupture. Je suppose que vous avez au maximum 2 lignes par rupture. Une capture d'écran de votre table est souhaitable.

    Nom : IMG.png
Affichages : 1621
Taille : 24,1 Ko

    la table sans exécution du code mentionnée alors je veux qu'a chaque rupture il compte ligne de la rupture si il sont paire il fait le traitement de convertir entrée en sortie sinon il le laisse comme il est

  12. #12
    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 393
    Points
    9 393
    Par défaut
    Je n'ai jamais utilisé de table avec rupture, donc je viens d'essayer.

    1. Je crée une table.
    2. Table remplie par programmation. J'ai cru comprendre que c'était ce que tu faisais, mais c'est probablement là qu'il y a un quiproquo.
    3. Comme décrit sur cette page de la documentation , dans le paragraphe 'Comment le faire', je clique sur le bouton adéquat, pour créer 1 rupture.
    4. Quand je reviens à l'affichage de ma fenêtre, Windev a ajouté 2 bandes grises au milieu de ma table.
    Si je clique sur ces bandes grises, je peux mettre ici le code qui va s'exécuter à chaque début de rupture, ou à chaque fin de rupture.

    Donc en principe, ça parait le meilleur emplacement pour mettre ton code (code corrigé bien sûr)
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  13. #13
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par moradsoft Voir le message
    cette option n'existe pas sur les table , ta pu la trouver comment
    En lisant la doc :
    Les hauts et bas de rupture apparaissent en édition dans le champ Table.
    Pour modifier les caractéristiques de ces hauts et bas de rupture (nom, visibilité, couleur de fond, ...), il suffit d'afficher leur fenêtre de description (option "Description" du menu contextuel).
    Chaque haut et bas de rupture est associé à l'événement "Affichage d'une ligne". Cet événement est exécuté lorsqu'un nouveau haut ou bas de rupture est affiché dans le champ Table.
    Ces hauts et bas de rupture peuvent contenir des champs. Ces champs sont manipulables par programmation.
    Il y a des code de traitement au niveau des champs de rupture. Il y a d'ailleurs un exemple dans https://doc.pcsoft.fr/?1013305 qui illustre comment utiliser cet événement pour afficher un libellé dans la rupture.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  14. #14
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Pardon j'ai mal compris vous réponses , j'ai déjà met ce code dans affichage ligne de rupture et ça rester le même problème , mon code contient surement une erreur que je parviens pas a localiser

  15. #15
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 805
    Points : 5 253
    Points
    5 253
    Billets dans le blog
    1
    Par défaut
    A priori, tu veux que la première ligne de la rupture ait une colonne "Entrée" puis "Sortie" etc...
    Or, tu prend en compte la ligne "globale". nIndice commence à la première ligne de la rupture, au niveau de la table, donc ne prend pas en compte la rupture.
    Il faut faire un changement de référentiel en incluant une variable qui fasse référence à la rupture e.g. nNoLigneRupture.
    Le code devrait ressembler à ça :
    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
     
    nLigneTravail est entier
    nLigneRupture est un entier
    nIndiceHaut est un entier
    nIndiceBas est un entier
     
    nIndiceHaut=TableIndiceRupture(RUPT_HautProduit)
    nIndiceBas=TableIndiceRupture(RUPT_BasProduit)
    nLigneRupture=1
     
    POUR nLigneTravail = nIndiceHaut À nIndiceBas
    	SI EstImpair(nLigneRupture) ALORS
    		COL_IO[nLigneTravail]="Entrée"
    	SINON
    		COL_IO[nLigneTravail]="Sortie"
    	FIN
    	nLigneRupture++
    FIN
    Ce code est à placer dans la partie affichage bas de rupture

    Par ailleurs, tu n'as pas répondu à la question de mon post #3, s'agit-il d'une "vraie" table mémoire ou d'une table fichier chargée en mémoire ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  16. #16
    Membre confirmé
    Homme Profil pro
    Admin - Gestion reconverti en informatique
    Inscrit en
    Septembre 2017
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Admin - Gestion reconverti en informatique

    Informations forums :
    Inscription : Septembre 2017
    Messages : 328
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par moradsoft Voir le message
    mon code contient surement une erreur que je parviens pas a localiser
    Le problème se situe dans cette partie du code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    POUR Indice = DébutRupture À FinRupture
    	SI EstPair(Indice) ALORS
    		TABLE_REQ_LOGTERMINAL[Indice].COL_DwInOutMode="Sortie"
    	SINON
    		TABLE_REQ_LOGTERMINAL[Indice].COL_DwInOutMode="Entrée"
    	FIN
    FIN

  17. #17
    Membre à l'essai
    Inscrit en
    Septembre 2010
    Messages
    86
    Détails du profil
    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 86
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Merci ça marche, c'est une vraie table mémoire

    Citation Envoyé par midou23175 Voir le message
    Oui je suis arrivé à trouver

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

Discussions similaires

  1. [WD20] Traitement sur une rupture table windev
    Par moradsoft dans le forum WinDev
    Réponses: 3
    Dernier message: 22/11/2015, 20h23
  2. Traitement sur un selectedIndex inexistant ?
    Par 10-nice dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/08/2005, 10h33
  3. [C#] [.NET 1.1] [VSTUDIO 2003] Traitement sur les fontes
    Par stailer dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/08/2005, 19h53
  4. [VB.NET] Traitement sur chaine (simple)
    Par Tempotpo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/03/2005, 13h20
  5. [FLASH MX 2004] Traitements sur le resultat d'un AS.
    Par Med_Prog dans le forum Flash
    Réponses: 8
    Dernier message: 21/11/2004, 13h59

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