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 :

Modifier la valeur d'une colonne dans un champ table dans une boucle


Sujet :

WinDev

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Modifier la valeur d'une colonne dans un champ table dans une boucle
    Bonjour,

    J'eesaye de faire un truc simple en apparence mais qui ne marche pas et je ne comprend pas pourquoi.

    Dans une fenêtre, j'ai un champ table en accés direct sur un fichier pour le contenu, basic
    Dans cette table, j'ai une colonne de type interrupteur liée à une rubrique de type booléen du fichier de donnée, simple

    Dans le code de la modification de cette colonne inter, je veux exécuter une boucle qui parcours toute la table pour mettre à jour d'autres lignes
    J'ai donc fait un tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sNaf est une chaîne = Table_NAF.NAF
    bVal est un booléen = Table_NAF.COL_Select
     
     
    POUR TOUTE LIGNE DE Table_NAF
    	SI Gauche(Table_NAF.NAF,Taille(sNaf)) = sNaf ALORS 
    		COL_Select = bVal
    	FIN
    FIN
    Mais ça ne marche pas.
    La boucle se fait bien, j'ai vérifié
    le SI fonctionne bien, j'ai vérifié
    Mais le "COL_Select = sNaf" est sans aucun effet

    J'ai testé tout un tas de truc :
    - Si je fais se "COL_Select = sNaf" en dehors de la boucle avec un indice de ligne, pas de problème. Un "COL_Select[3] = vrai" en dehors de la boucle par exemple, ça fonctionne
    - Mais si je fais se même "COL_Select[3] = vrai" dans la boucle et bien ça ne marche pas !?
    - Pas plus que "COL_Select = vrai" ou " COL_Select = bVal"

    Vous avez une idée ou une solution svp ?

    Merci d'avance
    Les solutions les plus simples sont les plus efficaces

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 804
    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 804
    Points : 5 251
    Points
    5 251
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    POUR TOUTE LIGNE nLigneTraitée de TABLE_NAF
         	SI Gauche(Table_NAF[nLigneTraitée].NAF,Taille(sNaf)) = sNaf ALORS 
    		COL_Select[nLigneTraitée] = bVal
    	FIN
    FIN
    TableEnregistre(TABLE_NAF)
    Peut être.
    Ensuite, ton affectation initiale ne me semble pas claire, il serait judicieux de préciser l'indice de la ligne que tu veux, e.g. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sNaf est une chaîne = Table_NAF[1].NAF
    bVal est un booléen = Table_NAF[1].COL_Select
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Merci Vorol,

    J'ai oublié de préciser mais j'ai déjà testé avec un indice, même résultat.
    Pour l'affectation initiale, le problème ne vient pas de là, testé aussi

    J'ai solutionné en utilisant une boucle "Pour x = de 1 a table..occurence" et là ça fonctionne
    Les solutions les plus simples sont les plus efficaces

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR i = 1 _À_ Table_NAF..Occurrence
    	SI Gauche(NAF[i],iTaille) = sNaf ALORS COL_Select[i] = bVal
    FIN
    Et celui là non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR TOUTE LIGNE i DE Table_NAF
    	SI Gauche(NAF[i],iTaille) = sNaf ALORS COL_Select[i] = bVal
    FIN
    Si quelqu'un a une explication, suis prenneur ;-)
    Les solutions les plus simples sont les plus efficaces

  5. #5
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 804
    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 804
    Points : 5 251
    Points
    5 251
    Billets dans le blog
    1
    Par défaut
    Que donne le code avec une table chargée en mémoire ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut
    Pas testé, vais essayer
    Les solutions les plus simples sont les plus efficaces

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2003
    Messages
    941
    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 : 941
    Points : 1 931
    Points
    1 931
    Par défaut
    Si ta table est en accès direct, toutes les modifications effectuées dans la table sont annulées lors de l'affichage de la ligne puisque le fichier est parcouru au fur et à mesure de l'affichage des lignes.

    Il faut nécessairement que t table soi chargée en mémoire pour faire ce que tu souhaites.
    Philippe,


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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/07/2017, 18h05
  2. [XL-2007] Récupérer la valeur de 2 colonnes de la ligne sélectionnée dans une ListBox
    Par chrisaccess dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/02/2015, 21h03
  3. Modifier la valeur de plusieurs colonnes
    Par flashnet dans le forum jQuery
    Réponses: 4
    Dernier message: 06/10/2011, 22h52
  4. Réponses: 2
    Dernier message: 08/07/2011, 15h09
  5. Réponses: 3
    Dernier message: 12/06/2006, 12h04

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