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 :

Fonction exits dans le script


Sujet :

QlikView

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Par défaut Fonction exits dans le script
    Bonjour,

    Je rencontre un petit problème de syntaxe dans le script :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SET vImportSociete=Societe1, Societe2, Societe3, Societe4; 
     
    Table1:
    Load
    ChampSociete,
    Champ2,
    Champ3
    From xxx.QVD (qvd)
    where ChampSociete exists($(vImportSociete));
    J’ai ce message d’erreur au moment du chargement: Scories après instruction

    J’ai l’impression que je n’utilise pas correctement la fonction exists…

  2. #2
    Membre Expert
    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
    Par défaut
    Bonjour David,
    Ton script pose effectivement problème ...
    1) Set n'accepte qu'une valeur
    2) Ton where n'a pas la bonne syntaxe ...
    Je suppose que tu ne veux récupérer que quelques sociétés parmi d'autres.
    Je ferais plutôt comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Table1:
    For each Ste in xxx,yyy,zzz
    LOAD ChampSociete,Champ2,Champ3 FROM xxx.QVD (qvd)
    WHERE ChampSociete=$(Ste);
    Next
    Sinon, exists verifie l'existence d'une valeur dans une table.
    Regarde dans l'aide de QV pour plus de détails, mais sa syntaxe est plutôt du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    where not exists(ChampSociete)

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 112
    Par défaut
    Bonne idée pour la boucle, pour la fonction exists j'avais lu sur un forum que l'on pouvait l'utiliser pour remplacer le 'in' des requetes SQL

    Merci

  4. #4
    Membre Expert
    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
    Par défaut
    Il y a plein de façons d'y parvenir.
    Regarde les fonctions match, mixmatch, wildmatch ... dans l'aide

    exemple :
    Load * from table where match(champ, val1, val2, val3) > 0

  5. #5
    Modérateur

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

    La fonction "exists" sert à dire si une valeur de champ a déjà été chargée.
    Supposons que vous ayez un champ "MonJour", dans lequel vous avez déjà chargé des données qui ont pour valeur "Lundi", "Mardi" et "Mercredi".

    Si vous effectuez un rechargement sur une table avec un champ "MonJour" (donc le même nom de champ que celui déjà existant), la condition "WHERE EXISTS (MonJour)" ne chargera que les données pour lesquelles il y a déjà une valeur de jour chargée, à savoir "Lundi", "Mardi" et "Mercredi".

    Si les données ne sont pas chargées dans un champ qui porte le même nom, le 2em paramètre sert à définir dans quel champ il faut regarder pour la table actuelle.


    L'utilisation du "EXISTS" donnerait quelque chose du genre :
    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
     
    ChampSociete:
    LOAD * INLINE [
    ChampSociete
    Societe1
    Societe2
    Societe3
    Societe4
    ]; 
     
    Table1:
    LOAD
    ChampSociete,
    Champ2,
    Champ3
    FROM xxx.QVD (qvd)
    WHERE EXISTS(ChampSociete);


    Votre solution avec une variable qui contient les valeurs séparées aurait pu fonctionner si votre requête était une requête SQL, en utilisant la fonction "IN". (attention, dans certains moteurs SQL, le "IN" est limité soit en nombre de caractères, soit en nombre de valeurs)

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/05/2008, 13h54
  2. Appel à une fonction écrite dans un script
    Par sango85 dans le forum MATLAB
    Réponses: 3
    Dernier message: 12/12/2007, 08h52
  3. exit dans un script bash
    Par yann_m dans le forum Linux
    Réponses: 2
    Dernier message: 08/11/2007, 23h37
  4. [PHP-JS] fonction javascript dans un script PHP
    Par guy2004 dans le forum Langage
    Réponses: 7
    Dernier message: 19/11/2006, 17h50
  5. Réponses: 2
    Dernier message: 03/04/2006, 18h38

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