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 :

Garder les lignes d'une liste selectionées - SelectPlus [WD25]


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut Garder les lignes d'une liste selectionées - SelectPlus
    Hello toutes et tous,
    j'espère que le confinement se passe bien

    j'ai une question sur la fonction SelectPlus() : via une boucle dans une requete je veux selectionner plusieurs lignes d'une liste. Ça fonctionne, mais le processus ne garde pas les lignes selectionnées, les nouvelles lignes selectionnées effacent les anciennes.

    J'ai tenté de stocker les lignes selectionnées dans une table, avec Ajoute(tabTableauCreneauxSelect[i]) mais ça ne m'enregistre qu'un seule ligne à chaque fois.


    Merci pour votre aide

    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
     
    POUR TOUT MaReq 
    			i est un numérique = 1
    			//a chaque valeur IDCreneaux de la requête vérifier si la ligne existante de la liste est la même valeur
    			// si oui, passer la ligne de la liste en etat "selectionné"			
     
    			TANTQUE i <= xNbrCreneaux
     
    				SI 	MaReq.IDCRENEAUX = LISTE_CreneauxClients[i].ValeurMémorisée ALORS//si idcreneauclient égale id (mémorisé) de la ligne i 			
    					LISTE_CreneauxClients.SelectPlus(i)//si oui sélectionner la ligne
    					//info("ligne "+i+" sélectionnée")
     
    				FIN
    				i++ 				
    			FIN		
     
    		FIN

  2. #2
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    Je réponds à am propre question car j'ai avancé sur ma problématique, mais toujours coincé à la fin.

    Pour sélectionner les lignes d'une liste j'ai finalement utilisé un tableau (dans une boucle, dans une requête) qui sert à stocker les indices des lignes à sélectionner.
    Et au lieu d'utiliser SelectPlus, j'utilise ListeSelectePlus.

    Mon problème vient lorsque que je déroule les indices de mon tableau et que je veux selectionner les lignes de la liste via ListeSelectPlus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    POUR TOUT x DE tabTableauCreneauxSelect
         //Trace(x) --> j'ai bien au moins deux indices de lignes
         ListeSelectPlus(LISTE_CreneauxClients,x)
    FIN
    Un peu d'aide serait bienvenue, en vous remerciant.

    ***

    Voici mon code finale (si ça peut aider). Je rappelle que ce petit prog permet de sélectionner les créneaux de clients (samedi matin, dimanche après-midi,...) dans une liste de tous les créneaux.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
     
    ListeSupprimeTout(LISTE_CreneauxClients)//réinitialise la liste des créneaux
     
     
    //////////////////////////////////////////////////////////////////////////////////////////////
    // 0. Récupérer et afficher la liste -libellé- des créneaux dans LISTE_CreneauxClients
    // 0bis. ajouter la valeur ID en mémorisée pour chaque libellé
     
    		sdReqCreneaux est une Source de Données
    		SI PAS HExécuteRequêteSQL(sdReqCreneaux,"SELECT Libelle, IDCreneaux FROM Creneaux") ALORS
    			Info(ErreurInfo())
    		FIN
    		xNbrCreneaux est un numérique = HNbEnr(sdReqCreneaux)//trouve le nombre total de créneaux dans la table Créneaux
    		//Info(xNbrCreneaux)                                                 // affiche le nombre de créneaux de la table Créneaux
     
                    POUR TOUT sdReqCreneaux
    			ListeAjoute(LISTE_CreneauxClients,gLien(sdReqCreneaux.IDCreneaux)+sdReqCreneaux.Libellé)
                                                                                                //ajoute l'IDCreneaux en mémorisé/caché via glien, en plus de l'affichage du libellé créneaux
    		FIN
     
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 1. Récupérer le ID client via la ligne sélectionnée de la liste des clients via Colonne_IDClient
    // 2. Requête pour trouver les créneaux du client sélectionné dans la liste
     
    		 IDClient est un numérique = TABLE_ClientRapide.COL_IDClient //récupère le numéro de ligne de la sélection de la table client
    		 MaReq est une Requête SQL = 
    		[
    		     SELECT Creneaux.IDCreneaux AS IDCreneaux FROM Creneaux, 
    		    Creneaux_Client 
    		    WHERE
    		    Creneaux.IDCreneaux = Creneaux_Client.IDCreneaux AND(Creneaux_Client.IDClient= {ParamIdClient})
    		]
    		MaReq.ParamIdClient = IDClient // je met l'idclient dans le paramètre de la requete 
     
    		//Req1 est une source de données
    		 SI PAS HExécuteRequête(MaReq,hRequêteDéfaut) ALORS
    		      Info(ErreurInfo())
    		FIN
     
    		 tabTableauCreneauxSelect est un tableau de numériques// tableau pour enregistrer chaque match entre
    											    //idcreneauclient et idcreneau
    		 VarIDCreneaux est un numérique
     
    		POUR TOUT MaReq 
    			i est un numérique = 1
     
    			 //a chaque valeur IDCreneaux de la requete : verifier si la ligne existante de la liste est la meme valeur
    			// si oui, passer la ligne de la liste en etat selectionné		
     
     
    			TANTQUE i <= xNbrCreneaux
     
     
    				VarIDCreneaux = LISTE_CreneauxClients[i].ValeurMémorisée
    				//Info(MaReq.IDCRENEAUX+"-"+testvaleurmemo+" valeur i: "+i)
     
    				SI 	MaReq.IDCRENEAUX = LISTE_CreneauxClients[i].ValeurMémorisée ALORS	//si l'id creneauclient égale id (mémorisé) de la ligne i 
     
     
    					 //LISTE_CreneauxClients.SelectPlus(i)//si oui sélectionner la ligne
    					//Info("MATCH ! IDCrenauClient : "+MaReq.IDCRENEAUX+"- IDCreneaux table Creneaux : "+VarIDCreneaux+" valeur i: "+i)
     
     
    					TableauAjoute(tabTableauCreneauxSelect, i) // ajoute dans un tableau les indices des lignes 
     
    				FIN
     
    				i++ // au bout des 4 test, il sort
     
    			 FIN // FIN DU TANTQUE
     
     
    			 //ListeAjoute(LISTE_CreneauxClients,MaReq.Libelle)
    		FIN
     
     
     
    		POUR TOUT x DE tabTableauCreneauxSelect
    			//Trace(x)
    			ListeSelectPlus(LISTE_CreneauxClients,x)
    		FIN
                    ToastAffiche("Liste renseignée")

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 122
    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 122
    Points : 9 547
    Points
    9 547
    Par défaut
    Quelle est la question ?

    Si tu fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ListeSelectPlus(LISTE_CreneauxClients,3)
    ListeSelectPlus(LISTE_CreneauxClients,6)
    ListeSelectPlus(LISTE_CreneauxClients,9)
    Est-ce que les lignes 3, 6 et 9 sont bien sélectionnées ?

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    ...j'ai donc trouvé mon problème.
    La liste n’était pas en multi-selection, option qui s'active dans la fenêtre de l'UI
    En ressayant les deux techniques pour sélectionner les lignes de ma liste, cela fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeSelectPlus(LISTE_CreneauxClients,i)
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR TOUT x DE tabTableauCreneauxSelect
       ListeSelectPlus(LISTE_CreneauxClients,x)
    FIN
    Merci TBC92, j'ai pas eu le temps de voir ton message.

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

Discussions similaires

  1. [XL-2010] Suppression d'une ligne dans une feuille A tout en garder les infos dans une feuille B
    Par sebastien_ofs dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/01/2015, 12h10
  2. Réponses: 3
    Dernier message: 23/05/2012, 15h03
  3. Réponses: 3
    Dernier message: 28/04/2009, 00h42
  4. [A-07] Selectionner toutes les lignes d'une liste
    Par stagolee dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/11/2008, 21h08
  5. garder en memoire les champs d'une liste deroulante multiple
    Par eclipse012 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/01/2007, 10h55

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