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 :

Valeurs sélectionnées dans une liste


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 68
    Points
    68
    Par défaut Valeurs sélectionnées dans une liste
    J'ai une liste avec comme contenu un fichier parcouru avec Libellé en rubrique affichée et Id en rubrique mémorisée.

    Comment récupèrer la liste des Id des éléments sélectionnés dans la liste ? Existe t'il une fonction simple permettant de le faire ?

    J'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    POUR TOUTE LIGNE SELECTIONNEE DE LISTE_CATALOGUE
     
    	Info(LISTE_CATALOGUE..ValeurMémorisée)
    FIN
    mais je ne récupère que les indices.


    (une fois la liste récupérée je dois exécuter une requète en passant la liste comme paramètre)


    Si vous pouvez m'aider merci !!

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    En effet on ne récupère que l'indice, ce qui implique qu'il faut aller rechercher les Id correspondants... à moins que je me trompe, c'est un peu lourd.

    Je serais toi, j'afficherai plutôt un tableau avec 2 colonnes :
    - colonne 1 avec le libellé en visible
    - colonne 2 avec l'Id en invisible.

    Tu fais ensuite un traitement pour chaque ligne sélectionnée pour créer ton paramètre.

    a+

  3. #3
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Après avoir lu l'aide, il faudrait utiliser RubriqueMémorisée au lieu de ValeurMémorisée.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Merci de votre intervention


    RubriqueMemorisée ne retourne que le nom du champ (IDCATALOGUE). Je contourne le problème un utilisant RubriqueAffichée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    sMaListe est une chaîne
     
    POUR TOUTE LIGNE SELECTIONNEE DE LISTE_CATALOGUE
     
    	sMaListe += LISTE_CATALOGUE..ValeurAffichée + "; "
     
    FIN
     
    Info(sMaListe)
     
    HExécuteRequête(REQ_Requete_cmds_entre2datesProduits,hRequêteDéfaut,DATE1,DATE2,sMaListe)
    TableAffiche(TABLE_resultats,taDébut)

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    de rien

    D'après ce que je vois, il faudrait afficher le résultat de la requête pour chaque Id sélectionné, c'est ça ?

    Dans la création de sMaListe, je mettrai un TAB au lieu de ";", mais ce n'est que personnel

    Ensuite, il faudrait faire :

    POUR i = 1 A ChaineOccurence(sMaListe, TAB)
    HExécuteRequête(REQ_Requete_cmds_entre2datesProduits,hRequêteDéfaut,DATE1,DATE2,ExtraitChaine(sMaListe, TAB, i))
    ...
    FIN


    Avec une table Fichier, je ne pense que l'on puisse ajouter les érsultats de plsueirs requêtes, je te conseillerai donc de passer par une table mémoire et d'ajouter le résultat de la requête avec chaque paramètre.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    "Info" est juste là pour moi (débuggage).

    Je constitue sMaListe et je l'utilise ensuite comme Param3 dans la requète qui est exécutée une seule fois :

    Afficher tous les CIVILITE, PRENOM, NOM, SOCIETE_1, SOCIETE_2, ADR_L1, ADR_L2, ADR_L3, CP et VILLE tels que COMMANDES.DATE_TRAITEMENT est compris entre 'Param1' et 'Param2' ET LIGNCOMMANDES.LIBELLE_PRODUIT est dans la liste {{Param3} } .


    Celà semble fonctionner, mais j'aurais voulu être sûr du séparateur et éventuellement utiliser plutôt les Id au lieu des libellés.

  7. #7
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Je ne pense jamais au "IN" dans une requête. Le séparateur est en effet soit ";", soit ","... à essayer donc.

    Pour utiliser l'Id, je reviendrai donc sur ma première idée, celle de faire une table avec 2 colonnes à la place de la liste.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    Le ";" semble convenir. Je reste avec mes libellés pour le moment, je passerai aux Id en utilisant une table si la requète devient trop lente.

    Merci encore.

    PS : existe t'il un moyen de détecter la fin d'exécution d'une requète ?

  9. #9
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Je ne pense pas que l'on puisse détecter la fin d'exécution, étant donné que tout se passe dans le HExécute.

    Donc à part mettre un flag, une fois que le HExecute se termine et passe à la ligne de code suivante, je ne vois pas.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 68
    Points
    68
    Par défaut
    J'essaye ça :





    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
    sMaListe est une chaîne
     
    POUR TOUTE LIGNE SELECTIONNEE DE LISTE_CATALOGUE
    	sMaListe += LISTE_CATALOGUE..ValeurAffichée + "; "
    FIN
     
    LIB_messages = "Exécution de la requète en cours"
    BTN_Bouton1..Etat = Grisé
     
    HExécuteRequête(REQ_Requete_cmds_entre2datesProduits,hRequêteDéfaut,DATE1,DATE2,sMaListe)
     
    LIB_messages = "Fin d'exécution de la requète"
    BTN_Bouton1..Etat = Normal
     
    TableAffiche(TABLE_resultats,taDébut)

  11. #11
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    oui et tu peux mettre également un Sablier(Vrai) et Sablier(Faux) pour éviter que le user aille cliquer ailleurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sablier(Vrai)
    HExécute..
    Sablier(Faux)

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/10/2012, 14h51
  2. Récupérer valeur sélectionnée dans une Liste déroulante
    Par coeurdange dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/08/2008, 15h27
  3. Réponses: 10
    Dernier message: 15/07/2008, 16h23
  4. Réponses: 4
    Dernier message: 25/04/2007, 16h23
  5. valeur sélectionné dans une liste
    Par vanou dans le forum Langage
    Réponses: 6
    Dernier message: 12/03/2007, 16h28

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