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 :

Plusieurs Itérations d'une colonne en fonction de la valeur d'une autre colonne de la même table [WD17]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut Plusieurs Itérations d'une colonne en fonction de la valeur d'une autre colonne de la même table
    Bonjour à tous et toutes,

    Je suis en apprentissage Windev et je bute sur quelque chose qui me semble réalisable mais je sais que je ne suis encore assez calé.
    J'ai une requête qui me rempli un champs table avec les données que je souhaite (donc suis content).
    Dans cette table j'ai une colonne qui me retourne un numéro de rack (Tray_id) pour lequel j'ai 90 flacons max échantillonnés (Sample_key) et ces racks sont installés sur différentes machines (Box_id).
    J'ajoute une colonne à ma table que je nomme Bottle et je souhaite pouvoir itérer chaque échantillon de 1 à 90 par numéro de Tray_id.
    C'est à dire renuméroter tous les sample_key de Tray_id = 1 de 1 à X, tous les sample_key de Tray_id = 2 de 1 a X, etc,.

    J'arrive a itérer toute la colonne par un compteur mais cela pour tous mes Tray_id confondus.

    Je suis ouvert à tous conseils et vous en remercie.

    Nom : Capture.PNG
Affichages : 258
Taille : 65,7 Ko

  2. #2
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour,
    mieux qu'une table : utiliser un champ Tableau croisé dynamique.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Vous pouvez vous servir d'une table hiérarchique où chaque nœud correspondra à une valeur de Tray_id

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Merci pour vos réponses.

    Je tiens a cette structure de table pour un export csv vers autre logiciel pour traitement externe.
    Je vais essayer et essayer encore.

  5. #5
    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
    Au départ, dans ta colonne Bottle_id , tu n'as que des 0 (pas important en fait )

    Essaie ça, si j'ai bien compris la question, c'est la bonne réponse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    num est un entier  
    tabletrie(matable, "tray_Id")
    pour i = 1 _a_ tableoccurrence(matable) 
       num ++ 
       matable.bottle_id[i] = num
       si i > 1 _et_  matable.tray_id[i] <> matable.tray_id[i-1] alors 
          num = 0
       fin
    fin
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Bonjour tbc92,

    Votre code fonctionne et je vous en remercie.
    Le Tabletrie me renvoyait une erreur car le tri de Tray_id était déjà paramétré dans ma requête, je pense, car sans le Tabletrie ça fait le job.

    Je me trouve avec un décalage de +1 sur Bottle_id au changement de valeur de Tray_id, mais cela est surement dû au fait que l'on commence à incrémenter Bottle_id avant de regarder la valeur de Tray_id.

    Je vais me pencher la-dessus.

    Cordialement.

  7. #7
    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
    Effectivement, belle boulette dans mon code, je te laisse chercher.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Bonsoir tbc92,

    Juste pour donner des news (besoin de m'exprimer).
    En bougeant ton code, j'arrive a incrémenter correctement bottle_id pour le Tray_id =1, mais ensuite quand Tray_id=2 la nouvelle incrémentation bottle_id démarre à 0 au lieu de 1. Idem quand Tray_id = 3.

    Cordialement.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Effectivement, belle boulette dans mon code, je te laisse chercher.
    Bonsoir tbc92,

    J'ai réussi a faire le traitement que je voulais avec le code ci-dessous. Je ne sais pas si c'est trés propre mais ce fait le job.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    num est un entier
    num2 est un entier
    POUR i = 1 _A_ TableOccurrence(TABLE_REQ_SampleWebApp)
    	num2=1
    	TABLE_REQ_SampleWebApp.COL_BottleNumber[i] = num2
    	SI i > 1 _ET_ TABLE_REQ_SampleWebApp.COL_Tray_id [i]<>TABLE_REQ_SampleWebApp.COL_Tray_id[i-1] ALORS 
    		num = 1
     
    		SINON
     
    		num++
    		TABLE_REQ_SampleWebApp.COL_BottleNumber[i] = num
    FIN
    FIN
    Je vous remercie encore pour l'aide.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/10/2014, 22h48
  2. Réponses: 4
    Dernier message: 01/02/2013, 15h01
  3. Réponses: 2
    Dernier message: 02/09/2011, 14h25
  4. Réponses: 5
    Dernier message: 07/05/2009, 16h41
  5. Réponses: 7
    Dernier message: 13/10/2007, 23h31

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