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 :

Ajout valeur à enregistrements selectionnés


Sujet :

QlikView

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut Ajout valeur à enregistrements selectionnés
    Bonjour,

    Dans la liste de capteurs je souhaite ajouter à la sélection active un capteur spécifique.
    Ayant plusieurs liste à traiter j'ai créer un bouton et lance une succession d'actions "sélectionner dans le champ".
    Tout fonctionne bien sauf pour 1 liste.

    En cliquant sur mon bouton, la marée est bien ajoutée aux capteurs sélectionnés, ils passent en vert.
    Par contre le tableau bug et me renvoi "error in set modifier ad hoc element liste: ',' i ')' experted
    Si je sélectionne manuellement les capteurs passés en vert tout rentre dans l'ordre

    Si j’envoie la variable capteurselect après clic sur le bouton dans une zone de texte je récupère ceciNom : Capture10.JPG
Affichages : 115
Taille : 9,3 Ko

    Si je sélectionne les mêmes capteurs manuellement je récupère cela "Marée","SPZ 4896","SPZ 4897"

    La construction de la chaine de caractères n'est pas la même, c'est la source du problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // code du bouton
    ='("' & concat({$} [Capteur],'"|"') & '"|"' & 'Marée")'
     
    // code de la variable
    = '"' & GetFieldSelections(Capteur, '","') & '"'
     
    // code du tableau
    =min({1 <Capteur={$(CapteurSelect)}>} Niveau)
    Merci
    Images attachées Images attachées  

  2. #2
    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,

    Je ne suis pas sur de comprendre votre problème.


    Vous savez que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='("' & concat({$} [Capteur],'"|"') & '"|"' & 'Marée")'
    ne fonctionne pas dans votre Set Analysis, mais que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = '"' & GetFieldSelections(Capteur, '","') & '"'
    fonctionne.

    Pourquoi n'utilisez-vous pas la formule qui fonctionne ?


    Sinon, si votre objectif est de toujours rajouter la Marée, pourquoi ne pas simplement utiliser l'expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =min({1 <Capteur=P(Capteur)+{'Marée'}>} Niveau)
    ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Moi j'ai pas compris la réponse.

    L'opération se fait en 2 temps:
    - récupération des capteurs sélectionnés et ajout du capteur marée c'est l'objet de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ='("' & concat({$} [Capteur],'"|"') & '"|"' & 'Marée")'
    ça marche

    - calcul des valeurs min et max sur l'ensemble de la plage temporelle pour les capteurs sélectionnés (variable CapteurSelect)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    = '"' & GetFieldSelections(Capteur, '","') & '"'
    ça marche pas.
    En fait je suis obligé de passer par cette variable compte tenu que dans le set analysis j'ai mis 1 pour avoir les min max sur toute la plage temporelle pour les capteurs sélectionnés (j'avais oublié de préciser)

    Avez vous une explication pourquoi le getfieldselections ne fonctionne pas ?


    Sinon... la solution proposée fonctionne parfaitement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =min({1 <Capteur=P(Capteur)+{'Marée'}>} Niveau)
    Je croyais que P() renvoyait les possibles (en blanc) mais qui se restreignent bien aux sélectionnés (en vert), c'est ce qu'il me faut.

    Merci

  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
    "GetFieldSelections" se base sur ce qui est sélectionné, pas sur les valeurs répondant à cette sélection.

    "(A|B|C)" ne veut pas dire "la sélection de A + B + C", mais "toutes les valeurs qui répondent à l'expression (A|B|C)".

    De même, supposons un champ qui contient les valeurs suivantes : 5, 10, 15, 20, 25, 30.
    Si vous mettez comme filtre sur ce champ ">20", ça enregistrera "> 20", pas "la liste de toutes les valeurs qui répondent à ce critère".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetFieldSelections(MonChamp, ', ')
    retournera ">20" alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    concat(DISTINCT MonChamp, ', ')
    retournera "25, 30".


    Vous pouvez utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = '"' & concat(DISTINCTCapteur, '","') & '"'

    (je ne sais pas si je suis très clair)

    qui là, se basera sur "les valeurs possibles qui répondent au critère".

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 58
    Points : 34
    Points
    34
    Par défaut
    Bonjour PhunkyBob

    Votre proposition avec Concat à la place de getfieldselection fonctionne bien.

    Toutefois je ne comprend pas pourquoi avec getfieldselection le set analysis ne fonctionnait pas quand les capteurs étaient sélectionnés par l'ordre concat via le bouton (étape1) et fonctionnait lorsque je les sélectionnais manuellement.
    Dans les deux cas ils étaient en vert et le code n'était pas modifié.

    Dans le getfieldselections je ne mettais pas de critère , je relisais uniquement les noms des capteurs sélectionnés

    Merci

  6. #6
    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
    Parce que faire une sélection en cliquant sur les éléments "A" puis "B" puis "C" n'est pas pareil que faire la sélection avec une action où on met la valeur "(A|B|C)".

    Si la fonction "GetFieldSelections" retourne "(A|B|C)", ce n'est pas utilisable dans un Set Analysis.

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

Discussions similaires

  1. [AC-2007] SQL : ajouter valeur dans un champs du dernier enregistrement d'une table
    Par atech dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 28/09/2011, 14h25
  2. Réponses: 1
    Dernier message: 27/03/2011, 19h50
  3. ajouter un enregistrement en vba
    Par xtaze dans le forum Access
    Réponses: 4
    Dernier message: 13/06/2005, 20h30
  4. [MFC]CRecordset-Ajouter un enregistrement
    Par dum's dans le forum MFC
    Réponses: 1
    Dernier message: 01/06/2005, 14h20
  5. SQL et Access : ajouter plusieurs enregistrements
    Par Bernard M dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 21h39

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