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 :

Forcer plusieurs sélection à un objet


Sujet :

QlikView

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut Forcer plusieurs sélection à un objet
    Bonjour,

    j'ai créer une zone de texte dans qlikview, et je souhaite qu'il me fasse la somme concernant uniquement une sélection

    dans la boite pour l'expression je tape ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sum({$ <Clients={'52'}>} [Prix de la commande])
    cet expression fonctionne très bien

    Je voudrais maintenant faire la même opération mais également bloqué la sélection sur un autre critère par exemple une date précise.
    Quel devrait être l'expression permettant cela ?

    Merci pour vos réponse, excellente journée.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 252
    Points
    252
    Par défaut
    Il faut rajouter le deuxième critère après le premier en séparant pas une virgule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Sum({$ <Clients={'52'}, Date={10/02/2015}>} [Prix de la commande])

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    merci pour votre réponse, je voudrais par la suite remplacé le critère contenant la date, par un qui prendrait la dermière date dans de la base, en gros la date maximale.

    J'ai essayé plusieurs modification de cette fonctions comme par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    =Sum({$ <Clients={'52'}, Date=MAX(Date)>} [Prix de la commande])
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    =Sum({$ <Clients={'52'}, Date={MAX(Date)}>} [Prix de la commande])
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    =Sum({$ <Clients={'52'}, MAX(Date)>} [Prix de la commande])
    Cependant rien à faire, cela ne marche pas, quelqu'un saurai me dire si la manip est possible ?
    et se trouve l'erreur. merci pour vos réponse.

  4. #4
    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
    Bonjour. C'est normal que tu n'y arrive pas en utilisant la fonction max. Elle ne peut être calculée à l'intérieur d'un Set Analysis.
    Si c'est LA dernière date de ta base, tu peux modifier le script en définissant une zone DateMAxi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    matable:
    SQL Select meschamps,DateOp from ...
     
    TabMaxi:
    Load max(DateOp) as DateMaxi resident matable
    Ensuite dans ton Set Analysis, tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sum({$ <Clients={'52'}, Date={DateMaxi}>} [Prix de la commande])
    Ca devrait le faire !

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    merci pour ta réponse,

    Alors la première partie qui concerne le script c'est ok ça fonctionne,

    Par contre la partie qui concerne le Set Analysis, ne fonctionne pas

    Si je mets le "{}" autour de Datemaxi, Datemaxi reste en noir et rien ne se passe... et si je ne le mets pas, il devient brun(ce qui me semble mieux),mais ça ne fonctionne également pas... il y aurait t'il une erreur dans la fonction ?

    Je sais que les dates que les date sont en fait un décompte qui part du 01.01.1900 qui justement est le jour 1 et mon Datemaxi me renvoie justement à ce format la avec un 42000 et des poussières. serait-ce du a cela que la fonction ne fonctionne pas ?

    Merci

  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
    Bonjour. Effectivement, le set analysis n'aime pas traiter les valeurs d'une autre variable. Du coup, j'ai modifié mon fichier.
    Dans le script, j'ai fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    matable:
    SQL Select meschamps,DateOp from ... ;
    tablemax:
    load date(max(DateOp)) as DateMaxi resident matable;
    Le max(DateOp) remontant un nombre au lieu d'une date, j'ai ajouté date() pour avoir la date.

    Dans l'expression, j'ai laissé le test sans la date maxi et ajouté le test dans l'expression à calculer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =Sum({$ <Clients={'52'}>} If(Date=DateMaxi,[Prix de la commande],0))
    Du coup, ça marche ...

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Super ca fonctionne

    Merci beaucoup

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Suite un peu plus corsée de mon cas,

    je cherche à faire un cumul hebdomadaire(LU à VE) du "Prix de la commande" à partir de cette fameuse DateMax.
    La logique voudrais que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	SI la "DateMaxi"= Lundi ALORS calculer la somme du"Prix de la commande" pour cette "DateMaxi"
    				SINON SI la "DateMaxi"= Mardi 	ALORS calculer la somme du"Prix de la commande" pour cette "DateMaxi" ainsi que pour la "DateMaxi"-1
    								SINON etc...Pour le reste de la semaine
    Une autre logique serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	SI la "DateMaxi"= Lundi ALORS calculer la somme du"Prix de la commande" pour cette "DateMaxi"SINON rien
    	ou	
    	SI la "DateMaxi"= Mardi ALORS calculer la somme du"Prix de la commande" pour cette "DateMaxi" ainsi que pour la "DateMaxi"-1 SINON rien
    	ou
    	ETC... avec les autres jour de la semaine
    Est-ce que ces fonctions irait-elle ? si oui, comment serait la syntaxe ? ou encore est-ce que je dois modifier quelque chose dans le script ?

    Merci pour vos réponse

  9. #9
    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
    Bonjour. Comme la date maxi correspond à la date maxi, il n'y a pas lieu de tester la fin ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sum({$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi),[Prix de la commande],0))

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    FANTASTIQUE !!!

    Et dernière question, après j’arrête si je veux obtenir le même cumul pour la semaine prétendante (dans un but final de comparer les 2)

    Merci encore

  11. #11
    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
    Bonjour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sum({$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi-7) and Date<weekstart(DateMaxi),[Prix de la commande],0))

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Super merci beaucoup !

    Ca fonctionne. Dsl je suis un peu novice en la matière

    Si ça intéresse j'ai modifié un peu la fonction car en fait quand je parlais de cumul hebdomadaire précédant, je sous-entendais que si le cumul en semaine n concernait lundi, mardi et mercredi, on comparait avec la semaine n-1 aussi pour le lundi mardi et mercredi.

    Ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sum({$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi-7) and Date<=(DateMaxi)-7,[Prix de la commande],0))
    Merci encore pour l'aide

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    il y a quelques semaines à travers cette discussion, nous étions arrivés à cette fonction, qui me permettait automatiquement d'identifier la somme du prix des commandes pour un client et cela, à la dernière date disponible dans le système.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Sum({$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi-7) and Date<=(DateMaxi)-7,[Prix de la ligne],0))
    Aujourd'hui, sur la base de cette fonction, je voudrais établir le nombre de commande pour ce client, sachant que ma base est construite comme cela :

    Date Client N°commande Article Prix unitaire Quantité acheté Prix à la ligne
    27.02.2015 52 C184ZI 3519874 2 10 20
    27.02.2015 52 C184ZI 6321584 5 20 100
    27.02.2015 33 C185TZ 5698745 15 15 225
    27.02.2015 32 C187XT 6321584 5 10 50
    11.03.2015 52 C233XS 3519874 2 20 40
    11.03.2015 52 C365SA 5698745 15 10 150
    11.03.2015 52 C365SA 6321584 5 5 25
    11.03.2015 33 C666DS 3519874 2 10 20
    11.03.2015 32 C777SS 6321584 5 20 100

    J'ai essayé de plusieurs manière en inserrant la fonctoin DISTINCT, mais cela ne fonctionne jamais, j'ai par exemple mis :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Count(Distinct{$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi-7) and Date<=(DateMaxi)-7,[N°commande],0))
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Count({$ <Clients={'52'}>} Distinct(If(Date>=weekstart(DateMaxi-7) and Date<=(DateMaxi)-7,[N°commande],0)))
    Mais ca ne fonctionne également pas...

    Quelqu'un aurait'il une piste à me proposer

    Merci bonne journée

  14. #14
    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
    Ca y était presque !
    En mettant une parenthèse après distinct, tu as transformé le mot-clé distinct en la fonction distinct() qui n'existe pas ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    count({<Client={'52'}>} DISTINCT Commande)

  15. #15
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    je pense que le problème vient de la condition de la date car cela fonctionne avec le distinct maintenant. D'après mes testes c'est comme si la date n'était pas sélectionnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Count(Distinct{$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi),[N°commande],0))
    Car en fait la fonction devrait faire le compte des commandes sans doublons pour la semaine de la date max.
    Par exemple si la date maxi est 11.03.2015, ce décompte devrait prendre en considération :

    Lundi 09.03.2015
    Mardi 10.03.2015
    Mercredi 11.2015

    En fait, j'ai l'impression que cette fonction a marché pour faire la somme mais pas pour le décompte...

    Merci

  16. #16
    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
    Tu compte le nombre de commandes différentes. Si la date n'est pas bonne, le IF retourne 0. 0 est compté.
    Essaie de retirer le ,0 du if ou même de de mettre ,null pour retourner une valeur nulle qui ne devrait pas être comptabilisée.

  17. #17
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Oui, je compte le nombre de commande différentes. j'ai essayé avec le 0 et null... ca change pas grand chose... En fait c'est comme si le décompte prenait pas en compte les dates

    est ce que la condition de la fonction est correct ? dans le sens ou est ce qu'elle force la sélection concernant ces dates ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Count(Distinct{$ <Clients={'52'}>} If(Date>=weekstart(DateMaxi),[N°commande],0))
    Car il me semble que cette ligne dit

    faire le décompte pour le client 52 des commandes distincte si la date est égal ou supérieur à la date maximum (qui est calculé sur la date en fait) et ceux, pour les date de la semaine en cours

  18. #18
    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
    Avec le jeu d'enregistrements suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Comptage:
    Load * inline [DateOp,Client,Commande,Article,PxUnitaire,Quantité,PxLigne
    27/02/2015,52,C184ZI,3519874,2,10,20
    27/02/2015,52,C184ZI,6321584,5,20,100
    27/02/2015,33,C185TZ,5698745,15,15,225
    27/02/2015,32,C187XT,6321584,5,10,50
    03/03/2015,52,C233XS,3519874,2,20,40
    11/03/2015,52,C365SA,5698745,15,10,150
    11/03/2015,52,C365SA,6321584,5,5,25
    11/03/2015,33,C666DS,3519874,2,10,20
    11/03/2015,32,C777SS,6321584,5,20,100];
     
    TableMax:
    load Date(max(DateOp)) as DateMaxi resident Comptage;
    j'ai la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Count(Distinct {<Client={'52'}>} If(DateOp>=weekstart(DateMaxi)-7 and DateOp<=DateMaxi-7,Commande,0))
    qui me retourne 2 (1 pour la C233XS + 1 pour les autres (valeur 0)
    La formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Count(Distinct {<Client={'52'}>} If(DateOp>=weekstart(DateMaxi)-7 and DateOp<=DateMaxi-7,Commande))
    me retourne 1

    La formule dit en fait : Pour le client 52 uniquement, prendre le numéro de facture si c'est une facture de la semaine précédente, et sinon prendre 0 (première formule) ou ne rien prendre (seconde formule). Faire un comptage de ces valeurs sans compter 2 fois le même numéro de facture.

  19. #19
    Membre du Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2014
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2014
    Messages : 73
    Points : 46
    Points
    46
    Par défaut
    Mais, si on regarde votre script, je suis obligé de recharger à nouveau les DATA avec INLINE etc ???

  20. #20
    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
    Bien sûr que non. Je vous ai mis mon script de test. Le premier load est à remplacer par votre load.
    Le second load est juste à adapter (nom des champs et nom de la table resident)
    Et dans les expressions, il faut juste remplacer le nom des champs ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Tkinter] sélection d'objet pour déplacement
    Par airod dans le forum Tkinter
    Réponses: 7
    Dernier message: 18/05/2006, 09h40
  2. [C#]Comment forcer la sélection d'un noeud avec bouton droit
    Par irnbru dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/11/2005, 19h39
  3. [CR9][SQL Server] forcer la sélection à 5 enregistrements
    Par __fabrice dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 02/11/2005, 11h20
  4. Sélection d'objets pour un logiciel de type AutoCAD
    Par loran4444 dans le forum C++Builder
    Réponses: 15
    Dernier message: 09/03/2005, 19h23
  5. [Souris] Sélection d'objets visuels
    Par AlDel dans le forum Composants VCL
    Réponses: 8
    Dernier message: 09/09/2004, 13h27

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