Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
demoustier
Creator
Creator

Liaison entre date d'une même table

Bonjour,

Tout nouveau dans l'univers QView, j'ai un problème semble-t-il récurrent de date.

J'ai une table de Commande avec:

-Numéro de Commande

-Date de Commande

-Date de Reception commande

-Date de Livraison

-Numero de Facture

J'ai une table de Facture avec:

-Numero de facture

-Date de Facture

-Date de Reception facture

-Date de Paiement

J'essai de faire un graphique avec, par mois, le nombre de Commande passée, le nombre de Commande Reçue, le nombre de Commande Livrée, Le nombre de facture reçu et le nombre de facture payée.

Si je prend comme axe de graphe une date de la table Commande, je ne peut pas comptabiliser les factures non liées à une commande.

Si je prend comme axe de graphe une date de la table Facture, je ne peut pas comptabiliser les commandes non facturées

J'ai donc (essayé) de créer un "Master Calendar" (?!) que j'utilise comme axe de graph et j'utilise comme expression:

count (If(Date_de_Commande=TempDate,Numéro de Commande)) pour compter les commandes passées,

count (If(Date_de_Reception_Commande=TempDate,Numéro de Commande)) pour compter les commandes reçues,

count (If(Date_de_Livraison=TempDate,Numéro de Commande)) pour compter les commandes livrées,

count (If(Date_de_Facture=TempDate,Numéro de Facture)) pour compter les facturs émises,

count (If(Date_de_reception_Facture=TempDate,Numéro de Facture)) pour compter les facturs reçues,

...

Cela fonctionne à 2 problèmes prêt:

1- le temps de calcul a chaque cahngement de filtre est trés trés long

2-comme je n'ai pas de lien entre mon calendrier et mes tables Commande et facture, la selection d'une période données ne me permet pas de visualiser de quelles factures et quelles commandes il s'agit.

Quelqu'un aurait-il une solutoin ?

merci d'avance et à +

Labels (1)
1 Solution

Accepted Solutions
Not applicable

Oui. L'idée est de lier les tables Commandes et Factures avec la Calendrier.

Mais comme vous avez plusieurs colonnes dans la table Commande qu'il faut chacune lier à Calendrier, on est obligé d'ajouter une table intermédiaire, sinon on obtiendrait des clés syn.

Votre solution initiale était très très lente, car il n'y avait pas de lien, et donc un produit carthésien entre les tables. Cela faisant des millions de lignes à parcourir avec votre expression count(if(..)).

Maintenant il y a un lien entre les tables. Et on peut utiliser une expression d'analyse d'ensemble plutôt qu'un if() ....

View solution in original post

8 Replies
Not applicable

Selon moi, vous devriez effectivement lier les tables 'commandes' et 'facture' au 'master calendar' .. mais attention cela implique de changer quelque peu votre structure actuelle et attention au clés sythétiques ... une possiblité de solution en pièce jointe.

demoustier
Creator
Creator
Author

Bonjour,

Je ne peut malheureusement pas utiliser la PJ (je suis en "Personnal Edition" et mes 3 importations ont déjà été utilisées...)

Cordialement

demoustier
Creator
Creator
Author

Bonjour,

Je ne peut malheureusement pas utiliser la PJ (je suis en "Personnal Edition" et mes 3 importations ont déjà été utilisées...)

Cordialement

Not applicable

Je pense que ça vaudrait la peine d'investir dans une licence

Regardez déjà si vous pouvez avancer avec les PJ ci-dessous ...

demoustier
Creator
Creator
Author

Bien d'accord pour la licence, je vais en causer à mon boss 🙂

je ne suis pas sur d'avoir tout compris mais je vais étudier ça avec attention !!

merci !

demoustier
Creator
Creator
Author

je ne comprend pas...

En PJ mes deux tables Xls (commande et facture, je n'ai pris à chaque fois que les 900 premieres ligne).

Je crois comprendre que je doit attribuer à chaque ligne si c'est une commande recu, livrée ou facturée ???? mais une commande livrée doit aussi etre comptabilisé comme passée...

Cdlt

Not applicable

Oui. L'idée est de lier les tables Commandes et Factures avec la Calendrier.

Mais comme vous avez plusieurs colonnes dans la table Commande qu'il faut chacune lier à Calendrier, on est obligé d'ajouter une table intermédiaire, sinon on obtiendrait des clés syn.

Votre solution initiale était très très lente, car il n'y avait pas de lien, et donc un produit carthésien entre les tables. Cela faisant des millions de lignes à parcourir avec votre expression count(if(..)).

Maintenant il y a un lien entre les tables. Et on peut utiliser une expression d'analyse d'ensemble plutôt qu'un if() ....

demoustier
Creator
Creator
Author

Ca marche impec !!!!!

genial et un grand merci !