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 :

sélection multiples avec Tableselect


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut sélection multiples avec Tableselect
    J ai une table avec sélection multiple et des champs de saisie SAI_texte1 ,SAI_texte2 et SAI_texte3

    Je voudrais récupérer les données des lignes sélectionnées dans les champs de saisie ; pour cela j’utilise ce code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    POUR TOUTE LIGNE SELECTIONNEE DE TABLE_LISTE
     
    	SAI_texte1= TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,1)]
    	SAI_texte2= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,2)]
           SAI_texte3= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,3)]
    fin
    mon problème c’est quand je sélectionne une seule ligne le code ne fonctionne pas , je pense qu’ il faut utiliser une condition
    merci d avance

  2. #2
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 812
    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 812
    Points : 5 271
    Points
    5 271
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Ton problème est triple.
    2 problèmes (dont 1 majeur) au niveau de la récupération des données

    A priori, tu veux récupérer les premières (max 3) sélections de ton champ table.
    Pourquoi parcourir toutes les lignes, d'autant plus qu'à la première ligne la récupération est "théoriquement" terminée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SAI_texte1= TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,1)]
    SAI_texte2= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,2)]
    SAI_texte3= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,3)]
    On en arrive au problème majeur :
    Si aucun enregistrement n'est sélectionné, ou si le rang (r) passé en paramètre est supérieur au nombre de lignes sélectionnées TableSelect renvoie -1
    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,r)]
    revient à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TABLE_historique.COL_NOM[-1]
    , et ça, Windev n'aime pas.

    Une solution consiste à faire des traitement différents en fonction du nombre de lignes sélectionné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELON TableSelectOccurrence(TABLE_LISTE)
         CAS 1:
              SAI_texte1= TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,1)]
         CAS 2:
              SAI_texte1= TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,1)]
              SAI_texte2= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,2)]
         CAS >2:
              SAI_texte1= TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,1)]
              SAI_texte2= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,2)]
              SAI_texte3= TABLE_historique.COL_NOM[TableSelect (TABLE_LISTE,3)]
    FIN
    Une autre solution plus "compacte"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    nSélection est entier
    saNomChamp est chaine
     
    POUR nSélection=1 A 3
         saNomChamp=chaineConstruit("SAI_Texte%1",nSélection)
         {saNomChamp,IndChamp}=TABLE_historique.COL_NOM[TableSelect(TABLE_LISTE,nSélection)]
    	SI nSélection+1>TableSelectOccurrence(TABLE_Test) ALORS  //Traitement de 1 et 2 sélections
    		nSélection=3
    	FIN
    FIN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Merci beauoup Monsieur Voroltinquo

  4. #4
    Membre habitué Avatar de mous97
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2018
    Messages : 119
    Points : 175
    Points
    175
    Par défaut
    Un "Pour toute ligne sélectionnée" serai plus propre et simple

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

Discussions similaires

  1. Sélection multiple avec Mysql
    Par DuoCow dans le forum Requêtes
    Réponses: 21
    Dernier message: 19/10/2016, 08h17
  2. [WB21] Sélection multiple avec une liste ou une combo.
    Par Xstophsig dans le forum WebDev
    Réponses: 1
    Dernier message: 07/09/2016, 11h00
  3. Sélection Multiple avec un QComboBox QT Jambi
    Par kamalkane dans le forum Autres
    Réponses: 0
    Dernier message: 17/09/2013, 13h58
  4. Poster une sélection multiple avec des checkbox
    Par Sub0 dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 1
    Dernier message: 02/11/2011, 17h17
  5. Réponses: 5
    Dernier message: 14/08/2009, 14h17

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