Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour,
Je fais face au délicat problème de la boucle :
J'ai trois bases simplifiées qui remontent chacune plusieurs informations :
Une base "FACTURATION"
Date
Type de commande
Code article
Quantité
Une base "POINTAGE"
Date
Nom de l'employé
Marché
Heures travaillées
Une base matrice "MATRICE" faisant le lien entre les deux
Type de commande
Marché
je souhaite rassembler ces informations à savoir remonter par marché les heures facturées et les heures pointées. je souhaite également pouvoir faire des sélections dynamiques en fonction de la date (mois, années, etc...)
Ainsi dans mon exemple :
D'après la base Pointage, l'employé Eric (qui travaille pour le marché rouge) a travaillé 84,8h au total.
D'après la base Matrice, les types de commandes correspondant au marché rouge sont D0, O0, D1, O1, D9, D2, O2, D5 et O5
D'après la base Facturation, 15 unités ont été facturés sur des commandes D0 (appartenant donc au marché rouge).
L'idée est donc d'obtenir un tableau de la sorte :
Marché | Quantité | Heures travaillées |
---|---|---|
Rouge | 84,8 | 15 |
Vert | 59,6 | 0 |
Bleu | 78 | 5 |
J'ai donc un problème de boucle puisque les bases "Pointage" et "Facturation" sont liées par le paramètre Date, les bases "Pointage" et "Matrice" sont liées par le paramètre Marché et enfin les bases "Matrice" et "Facturation" sont liées par la paramètre type de commande.
Ci-joint le qvw
merci de votre aide
Guillaume
Pas d'idée ? personne ?
sans doute revoir le modèle relationnel,
qualifier les dates, date_facture, date_ pointage
je suis sur que la table Facturation est pleine de date dans rien d'autres...
faire des load avec des where exist
Bonjour Guillaume,
Intégrer la base Matrice dans la base Facturation ou Pointage (ou seulement l'information voulue) avec des mapping tables. Ensuite, afin d'éviter des synthetic keys, créer une variable unique dans les deux matrices qui vous restent, ou bien renommer tous les variables au nom identique sauf 1.
Merci messieurs, je vais essayer tout ça.
Bonjour,
Il faut juste envoyer les données de MATRICE dans POINTAGE.
Ensuite je voudrais te dire qu'il y ait boucle ou pas la bonne pratique chez qlikview est de faire en sorte que les tables qui contiennent au plus deux champs doivent être envoyer par applymap dans les tables auxquelles elles sont reliées.
Recharge tout simplement l'application jointe pour prendre en compte les modifications que j'ai apportées au script.
Bonsoir Almamy,
je comprend votre logique à savoir supprimer la table matrice et la remplacer par "une sorte de vlookup" dans la table Pointage. C'est ce qui semble être la fonction applymap.
Néanmoins deux questions/interrogations :
pourquoi utiliser la fonction trim dans la script ?
Malgré vos modifications directement dans le script la variable "marché" ne semble toujours pas relié à la variable "Qté". Je n'arrive pas à lier ces deux variables dans un tableau simple.
Merci
Bonjour,
le trim est mis pour supprimer les espaces. je l'ai utilisé parce que "marché" est la clé entre pointage et matrice.
le problème avec la "Qté" est qu'avec ma modification tu 2 clés (date et type cde). date de facturation est-elle la même que date pointage au point de constituer une clé?
s'il te plaît post l'application modifiée pour que j'ai une idée.
Cordialement,
Almamy,
Voici l'application initiale, l'application que tu as modifié et le fichier des données.
Guillaume
Bonjour Guillaume,
Il me semble que la boucle n'a pas été résolu.