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

QlikView Discussion :

Récupérer le contenu d'une variable avec liste déroulante


Sujet :

QlikView

  1. #1
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut Récupérer le contenu d'une variable avec liste déroulante
    Bonjour,

    Je souhaiterais réaliser un petit script qui me permettrait de stocker dans deux variables différentes le choix de l'utilisateur.
    Je m'explique mieux, l'utilisateur devra choisir deux années dans deux listes déroulantes différentes : une année de début et une année de fin et j'aimerais les stocker dans les variables anneesDebut et anneeFin par exemple. En gros, j'aimerais faire l'équivalent d'un $_POST[..] ou $_GET[..] en php.
    Comment cela est-il possible sous Qlikview ou en macro Javascript pour Qlikview ?

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Dans les propriétés de la feuille, onglet déclencheurs, on peut ajouter une macro qui modifiera une variable lors d'une sélection dans une liste.
    Cela dit, si tu as une liste de sélection, tu sélectionne une valeur dans une table. Pourquoi ne pas utiliser directement cette valeur dans tes expressions ?
    Note: Petit bug dans QV : La macro est appelée quand on sélectionne une valeur, pas lorsqu'on désélectionne une valeur ...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    sub LoadData
    set mySelections = ActiveDocument.fields("le champ de la liste deroulante1").GetSelectedValues
    set V= ActiveDocument.Variables("la variable aloué1")
    V.SetContent mySelections.Item(0).text, true

    set mySelections = ActiveDocument.fields("le champ de la liste deroulante2").GetSelectedValues
    set V= ActiveDocument.Variables("la variable aloué2")
    V.SetContent mySelections.Item(0).text, true

    end sub

    essaie cette macro, je crois que ça fera l'affaire.
    et si tu souhaites meme faire un rechargement de données, ajoutes "ActiveDocument.Reload" juste avant le END SUB


    apres il te suffira de créer un boutton qui te permetra d'activer la macro.

  4. #4
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Avec un bouton, vous pouvez affecter à une variable une valeur.

    Supposons que vous ayez ces données :
    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
    Année:
    LOAD * INLINE [
    Année
    2009
    2010
    2011
    2012
    2013
    2014
    ];
     
    AnnéeDébut:
    LOAD DISTINCT Année AS AnnéeDébut
    RESIDENT Année
    ORDER BY Année ASC;
     
    AnnéeFin:
    LOAD DISTINCT Année AS AnnéeFin
    RESIDENT Année
    ORDER BY Année ASC;
    Vous faites 2 listes de sélection "AnnéeDébut" et "AnnéeFin".

    Vous créez un bouton "Définir les valeurs", sur lequel vous mettez dans "Activer la condition" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetSelectedCount(AnnéeDébut) = 1 and GetSelectedCount(AnnéeFin) = 1
    qui permettra de faire en sorte que votre bouton ne sera actif que si l'utilisateur a bien sélectionnée une année de début et une année de fin.
    Dans la partie "Actions" du bouton, vous rajouter les actions "Externe --> Définir la variable".
    Variable :
    Valeur :
    (et pareil pour l'année de fin).
    Il faut que évidement que la variable "anneeDebut" existe (on peut la créer dans "Paramètres --> Vue d'ensemble des variables").



    En gros, j'aimerais faire l'équivalent d'un $_POST[..] ou $_GET[..] en php.
    Si vous le souhaitez, vous pouvez préciser une sélection sur un liste de sélection directement dans l'URL de votre document si celui-ci est consulté par l'acess point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://nom-du-serveur/QvAJAXZfc/opendoc.htm?document=NomDuDocument.qvw&host=Local&select=LB01,Valeur

  5. #5
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    FORMULARY,
    Quand je parlais de liste déroulante, je ne parle pas de liste de sélection existant déjà dans une de mes tables. Justement, à l'heure actuelle, je n'ai aucune table de chargée, c'est pour voir quelles années charger avant de tout récupérer.
    j'avais effectivement pensé à une macro.
    Voilà ce que j'avais réalisé sachant que je ne sais pas comment récupérer les valeurs des listes déroulantes :

    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function RecuperationAnnees(){
    	var ListeAnnees = new Array();
    	var anneeDebut=anneeDebut.getElementById('IB01');
    	var anneeFin=anneeFin.getElementById('IB02');
    	var annee=anneeDebut;
    	while (annee<=anneeFin){
    		ListeAnnees.push(annee);
    		annee++;
    	}
    	return ListeAnnees;
    }
    RecuperationAnnees()

    En fait, ce que je voudrais c'est que l'utilisateur puisse récupérer les fichiers de connexion de toutes les années entre les deux dates qu'il aura sélectionné.
    C'est en Javascript car je ne connais absolument rien en Visual basic et j'avoue avoir plus de facilité pour Javascript.

    Rab606,
    J'ai testé ta macro et cela ne me génère aucune erreur au débuguage mais j'avoue ne pas savoir comment implémenter une liste (comme pour mon script JS) ni comment "pusher" dans la dite liste. Savez-vous quel est l'équivalent de :
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.fields("anneeFin").GetSelectedValues
    ?

    PhunkyBob,
    Votre idée est très ingénieuse, et cela marche. Cependant, je vais surement devoir passer par une macro pour récupérer tout cela dans une liste non ?

    Merci encore

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 940
    Points : 1 409
    Points
    1 409
    Par défaut
    Vous créez une zone de saisie ou un objet calendrier qui met à jour une variable vdatedeb et une variable vdatefin
    Vous créez un bouton qui effectue un rechargement des données.
    Pour ça, il suffit de créer une macro qui contient juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Reload()
    Activedocument.Reload
    end sub
    et d'affecter la macro reload au bouton.
    Dans le script, vous utilisez $(vdatedeb) ou $(vdatefin) pour faire vos tests, et le tour est joué !
    Par contre, il faudra aussi prévoir le cas des mauvaises saisies ...

  7. #7
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Ok FORMULARY,
    Pour les problème de saisi, je pense qu'il faudrait juste implémenter un petit if qui inverse anneeDebut et anneeFin si anneeDebut > anneeFin, ca devrait être bon.
    Le petit bouton pour relancer c'est super ! Merci !

  8. #8
    Membre régulier
    Femme Profil pro
    Stagiaire informatique décisionnelle
    Inscrit en
    Mars 2014
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Stagiaire informatique décisionnelle
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2014
    Messages : 81
    Points : 71
    Points
    71
    Par défaut
    Bonjour,

    Au final, j'ai opté pour un mélange de la solution de PhunkyBob et de FORMULARY.

    Je suis entièrement passé par le script qlikview et réalisant des contrôles pour m'assurer que ca ne fasse pas n'importe quoi.
    Je mets le code, qui marche, ici afin que ça puisse éventuellement aider quelqu'un qui essaie de faire la même chose.
    Mon script récupère dans deux variables une année de début et une année de fin qui sont implémentées dans des listes de sélections. Il s'occupe ensuite de gérer les problèmes de saisies à l'envers, si l'utilisateur saisie une année de fin inférieure à une année de début par exemple.
    Ensuite il va parcourir tout ce qui est présent entre ces années et appeler les fichiers de connexion des années voulues qui sont des fichiers .txt de nom BR'annéeDintérêt'.

    Voici le code :
    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
     
     
    IF (NOT anneeDebut AND NOT anneeFin) THEN
    	LET anneeDebut=;
    	LET anneeFin=;
    End If
     
    Année:
    LOAD * INLINE [
    Année
    2010
    2011
    2012
    2013
    2014
    2015
    2016
    2017
    2018
    2019
    2020
    2021
    2022
    2023
    2024
    2025
    2026
    2027
    2028
    2029
    2030
    2031
    2032
    2033
    2034
    2035
    2036
    2037
    2038
    2039
    2040
    2041
    2042
    2043
    2044
    2045
    2046
    2047
    2048
    2049
    2050
    ];
     
    AnnéeDébut:
    LOAD DISTINCT Année AS AnnéeDébut
    RESIDENT Année
    ORDER BY Année ASC;
     
    AnnéeFin:
    LOAD DISTINCT Année AS AnnéeFin
    RESIDENT Année
    ORDER BY Année ASC;
     
    If (len(anneeDebut) <> 0 AND len(anneeFin) <> 0) then
    	If (anneeDebut > anneeFin) then
    		SET tmp = $(anneeDebut);
    		SET anneeDebut= $(anneeFin);
    		SET anneeFin= $(tmp);
    	End if
    	For element=$(anneeDebut) to $(anneeFin)
    		$(include=br$(element).txt);
    	next
    End if
    D'ailleurs, si vous avez des idées d'améliorations, je suis super preneuse

  9. #9
    Modérateur

    Inscrit en
    Octobre 2006
    Messages
    1 649
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 649
    Points : 2 529
    Points
    2 529
    Billets dans le blog
    6
    Par défaut
    Pour générer les années :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Année:
    LOAD 
    	2009 + recno() AS Année
    AUTOGENERATE 50;

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 12h44
  2. Récupérer le contenu d'une variable ParamDisplayValue
    Par olivier.x dans le forum Cognos
    Réponses: 7
    Dernier message: 05/01/2011, 14h31
  3. [MySQL] récupérer le contenu d'une variable
    Par nisa83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/04/2009, 23h07
  4. Réponses: 2
    Dernier message: 04/02/2009, 12h13
  5. Récupérer le contenu d'une variable d'environnement locale
    Par Cricket dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 01/02/2008, 16h38

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