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 :

Table avec cases à cocher [WD15]


Sujet :

WinDev

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut Table avec cases à cocher
    Bonjour,

    Je souhaiterais placer des cases à cocher dans une table afin d’effectuer un traitement seulement sur les lignes qui sont cochées.

    Après avoir lié la table à un fichier de l’analyse, j’insère une nouvelle colonne COL_SEL type interrupteur.

    La table est en saisie, sélection multiple, la colonne "Interrupteur" est en saisie. Toutes les autres colonnes de la table sont en affichage.

    Au lancement, les lignes peuvent être cochées.

    Mais comment récupérer les lignes qui sont cochées ?

    Le code suivant ne fonctionne pas car si deux lignes sont cochées : le premier info affiche toujours la valeur 1.
    Et le deuxième info affiche toujours la valeur de la dernière ligne sélectionnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Info(TableSelectOccurrence(TAB_01)) //affiche la valeur 1 alors que 2 lignes sont cochées
     
    POUR x = 1 _A_ TableSelectOccurrence(TAB_01)
    	m=TAB_01[TableSelect(TAB_01,x)].COL_NOM
    	Info(m)
    FIN
    D’avance merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    TableSelectOccurrence te renvoie le nombre de lignes SELECTIONNEES, et non de lignes dont ta colonne est cochée.
    Si tu veux utiliser TableSelect et TableSelectOccurrence, tu dois utiliser une table Multi-Selection, et dans ce cas ta colonne ne sert plus à rien.

    Sinon tu dois balayer la table et vérifier le contenu de ta colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    POUR TOUTE LIGNE DE TAB_01
       SI TAB_01.COL_SEL ALORS
          ... Ton code ...
       FIN
    FIN
    Tatayo.

  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 Salut
    Pour moi, ton code est presque bon, tu n'utilise pas l'indice x comme je le fais habituellement. Essaye le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    1234567 Info(TableSelectOccurrence(TAB_01)) //affiche la valeur 1 alors que 2 lignes sont cochées
     
    POUR x = 1 _A_ TableSelectOccurrence(TAB_01)
    	si TAB_01.COL_Select[x] = vrai alors
    		m=TAB_01.COL_NOM[x]
    		Info(m)
    	fin
    FIN
    Les solutions les plus simples sont les plus efficaces

  4. #4
    Membre chevronné Avatar de Guardian
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    820
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 820
    Points : 1 808
    Points
    1 808
    Par défaut
    Sauf que, comme le dit tatayo, pour parcourir une table il faut utiliser et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POUR x = 1 _A_ TableSelectOccurrence

  5. #5
    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
    Slt ArielD,

    Sauf ton respect de membre chevronné, les deux solutions fonctionnent.
    Peut être la solution "pour toute ligne" est elle plus rapide, cela reste à prouver...
    Les solutions les plus simples sont les plus efficaces

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    lololebricoleur => sauf ton respect de membre à l'essai ( ), ton code ne fonctionne que dans un cas: une table multi-selection dans laquelle l'utilisateur sélectionne toutes les lignes... En effet, TableSELECTOccurrence renvoie le nombre de lignes sélectionnées, et non le nombre de ligne de la table. Dans le cas d'une table mono-selection, tu ne verifies au mieux que la première ligne...
    Pour parcourir toute la table, il faut utiliser POUR TOUTE LIGNE ou TableOccurrence, au choix.

    Après concernant la différence de performance entre les deux, m'est avis que c'est kifkif bourricot.

    Tatayo.

  7. #7
    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
    Respect, un point pour toi.

    C'est effectivement la fonction tableoccurence.

    Tu utilise plutôt laquelle toi ?

    Je débute à tout point de vue, y compris pour essayer de filer un coup de main histoire de ne pas être qu'un "profiteur".
    Les solutions les plus simples sont les plus efficaces

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    J'utilise plutôt POUR TOUTE LIGNE, je trouve la syntaxe plus claire.
    D'ailleurs pour le parcours de tableau, la lecture de fichiers texte... j'utilise aussi POUR TOUT.

    Le seul cas pour lequel je n'utilise pas POUR TOUT pour parcourir une table est quand je veux supprimer des lignes. Dans ce cas j'utilise une boucle TANTQUE en parcourant la table de bas en haut.

    Tatayo.

  9. #9
    Membre chevronné Avatar de Guardian
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    820
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 820
    Points : 1 808
    Points
    1 808
    Par défaut
    Idem

    Il me semble d'ailleurs avoir lu que le traitement était plus rapide, mais il se peut que je confonde et je n'ai pas retrouvé l'information.

  10. #10
    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
    Ok, merci pour l'info les gars
    Les solutions les plus simples sont les plus efficaces

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 144
    Points : 75
    Points
    75
    Par défaut
    Oui super. Merci pour les infos.

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

Discussions similaires

  1. Copier un enregistrement d'une table vers une autre avec case à cocher
    Par myrddin99 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 01/05/2012, 11h44
  2. Table de multiplication avec case à cocher
    Par DBA_OCP dans le forum Langage
    Réponses: 12
    Dernier message: 11/03/2009, 20h41
  3. TreeView avec case à cocher
    Par da_latifa dans le forum Delphi
    Réponses: 9
    Dernier message: 07/10/2006, 01h01
  4. Réponses: 2
    Dernier message: 31/03/2006, 15h35
  5. Treeview avec case à cocher
    Par valoji dans le forum Composants VCL
    Réponses: 4
    Dernier message: 28/01/2006, 21h35

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