[RESOLU]Plusieurs requetes SQL en une seul sous forme de tableau

Plusieurs requetes SQL en une seul sous forme de tableau [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 26-10-2009 à 10:03:50    

Bonjour,
 
Voilà mon pb :) j'ai 4 requêtes SQL qui séparément m'affichent un tableau comme ceci
 
PRIORITE / Support
A              XX
B              YY
C              ZZ
 
 
 
PRIORITE / Intégration
A              XX
B              YY
C              ZZ
 
 
PRIORITE / Dev
A              XX
B              YY
C              ZZ
 
 
PRIORITE / Fin de dossier
A              XX
B              YY
C              ZZ
 
 
Mon but est d'arriver a ceci  
 
 
PRIORITE / Support / Integration / Dev / Fin de Dossier
A              XX            XX             XX         XX
B              YY            YY             YY         YY
C              ZZ            ZZ             ZZ         ZZ
 
 
voila les requêtes pour chacune des colonnes
 
Support :
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Support
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Front Office" Or (dbo_r_wrkgrp.WrkGrpDsc)="Back Office" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
Integration :  
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Integration
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Documentation" Or (dbo_r_wrkgrp.WrkGrpDsc)="Intégration Road Map" Or (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Intégration Road Map" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
Dev :  
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Dev
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Intégration" Or (dbo_r_wrkgrp.WrkGrpDsc)="Develo_planifiées" Or (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Intégration" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
Fin de dossier :  
 
SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS [Fin de Dossier]
FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde = dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde = dbo_r_wrkgrp.WrkGrpInCde
WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="V5 - Livraison" Or (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Qualification" Or (dbo_r_wrkgrp.WrkGrpDsc)="Qualification"  
or  (dbo_r_wrkgrp.WrkGrpDsc)="Mise en production" or  (dbo_r_wrkgrp.WrkGrpDsc)="Livraison" or  (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Qualification" )  
AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" Or (dbo_r_pri.PriDsc)="A - Perturbant la production" Or (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
GROUP BY dbo_r_pri.PriDsc;
 
 
 
 
Voilà, j'suis un novice en SQL :/ j'considère un miracle d'être arrivé jusque là, si vos lumières pouvaient m'éclairer ;)


Message édité par hazzelthorn le 28-10-2009 à 10:36:47
Reply

Marsh Posté le 26-10-2009 à 10:03:50   

Reply

Marsh Posté le 26-10-2009 à 13:33:14    

personne a d'idées ?

Reply

Marsh Posté le 26-10-2009 à 14:07:06    

si deux solutions, soit tu joues avec des union/union all, soit tu gères ca avec le langage qui te sert a présenter les données.

Reply

Marsh Posté le 26-10-2009 à 14:30:01    

union ou union all marchera pas, ptet faire des alias de ma table dbo_r_wrkgrp car j'applique mes conditions sur cette table la a chaque fois.
 
Sauf que la syntaxe pour faire des alias de table ben je sais pas faire :s

Reply

Marsh Posté le 26-10-2009 à 14:39:50    

Tu pourrais donner le schéma de ta base et expliquer ce que tu veux obtenir en français ? Parce que là pour être honnête je trouve tes requêtes SQL difficilement lisible, et je ne comprend pas ce que tu essayes de faire.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-10-2009 à 14:50:49    

tu seras gentil de me dire pourquoi un union all ne marcherait pas, parce que pour moi il n'y a qu'a unioner tes 4 requêtes, sur-selecter pour ré-appliquer un group by, et passer au taf suivant

Reply

Marsh Posté le 26-10-2009 à 15:02:48    

de toute façon, le SQL ne sert qu'à extraire les données, et pas à les présenter. ça c'est le boulot du langage client. va bien falloir finir par comprendre (et tu n'es pas le seul, rassure toi) qu'un SGBD c'est pas Excel.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-10-2009 à 15:07:10    

casimimir a écrit :

tu seras gentil de me dire pourquoi un union all ne marcherait pas, parce que pour moi il n'y a qu'a unioner tes 4 requêtes, sur-selecter pour ré-appliquer un group by, et passer au taf suivant


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-10-2009 à 15:17:42    

cgo2 a écrit :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


une requête imbuvable avec des jointures dans tous les sens.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-10-2009 à 15:18:13    

Citation :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


 
voilà mon pb ><, la j'essaye crystal report pour la mise en forme, mon maitre d'apprentissage est gentil :d

Message cité 1 fois
Message édité par hazzelthorn le 26-10-2009 à 15:18:24
Reply

Marsh Posté le 26-10-2009 à 15:18:13   

Reply

Marsh Posté le 26-10-2009 à 15:21:47    

Citation :


une requête imbuvable avec des jointures dans tous les sens.


 
du genre ?  

Reply

Marsh Posté le 26-10-2009 à 15:23:36    

hazzelthorn a écrit :

Citation :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


 
voilà mon pb ><, la j'essaye crystal report pour la mise en forme, mon maitre d'apprentissage est gentil :d


non mais sinon, ton problème est très simple à résoudre hein !  
tu fais un gros SELECT de l'ensemble des champs présents dans tes requêtes FROM (tables de la clause FROM de la req 1) INNER JOIN (tables de la clause FROM de la req 2) ON (champs communs) INNER JOIN (tables de la clause FROM de la req 3)....
ça va donner un truc parfaitement lent et illisible, mais ça marchera.


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-10-2009 à 15:26:43    

hazzelthorn a écrit :

Citation :


une requête imbuvable avec des jointures dans tous les sens.


 
du genre ?  


du genre que UNION permet de fusionner 2 recordsets dans le sens vertical. or toi, tu veux une fusion dans le sens horizontal. donc ça passe par des jointures entres tes différentes requêtes. lesquelles requêtes comportent déjà des jointures. donc tu vas être obligé de faire des jointures de recordsets déjà constitués de jointures, je te laisse imaginer le souk.
le mieux est donc de laisser tes requêtes telles quelles, et de les retraiter séparément dans le langage client


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-10-2009 à 15:28:15    

et créer des alias de ma table ou j'éxécute mes conditions  ca peut pas marcher ?  car mon problème se situe à ce niveau la, j'ai une seule table où mes conditions changent...  


Message édité par hazzelthorn le 26-10-2009 à 15:28:48
Reply

Marsh Posté le 26-10-2009 à 15:33:33    

Harkonnen a écrit :

du genre que UNION permet de fusionner 2 recordsets dans le sens vertical. or toi, tu veux une fusion dans le sens horizontal. donc ça passe par des jointures entres tes différentes requêtes. lesquelles requêtes comportent déjà des jointures. donc tu vas être obligé de faire des jointures de recordsets déjà constitués de jointures, je te laisse imaginer le souk.
le mieux est donc de laisser tes requêtes telles quelles, et de les retraiter séparément dans le langage client


 
C'est tout à fait vrai, sauf que dans certains cas (notamment les COUNT, dont il est question ici) il est possible de réécrire *proprement* toute la requête pour obtenir ce qu'il veut sans avoir un truc complètement moisi niveau performances et lisibilité. Je sais si c'est possible là, et c'est pour ça que je demandais un schéma de la table et une explication en français, parce que j'ai pas envie de passer 2 heures à tenter de comprendre ces requêtes moches. Mais bon...


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-10-2009 à 15:37:58    

un schéma de la table ? que veux tu ?

Reply

Marsh Posté le 26-10-2009 à 15:54:55    

hazzelthorn a écrit :

un schéma de la table ? que veux tu ?


 
La structure des tables quoi... :o Enfin bon laisse tomber, je vais t'expliquer la méthode dont je parlais, et tu essayeras de voir si ça peut s'appliquer dans ton cas ou pas. Je pense que ça correspond à ce que tu veux faire, mais je peux me tromper.
 
Disons que tu as une table "table", avec les champs "id" et "priorite". Le champs priorité peut prendre 3 valeurs (bas, normal et haut), et tu veux un resultset comme ça :
 

id | nb_bas | nb_normal | nb_haut


 
L'astuce c'est d'écrire une requête comme ça :
 


select id, count(priorite = 'bas' or null) as nb_bas, count(priorite = 'normal' or null) as nb_normal, count(priorite = 'haut' or null) as nb_haut
from table;


 
ou comme ça (c'est equivalent) :
 


select id, sum(if(priorite = 'bas',1,0)) as nb_bas, sum(if(priorite = 'normal'),1,0)) as nb_normal, count(if(priorite = 'haut'),1,0) as nb_haut
from table;


 
Vu que tu fais toutes tes requêtes sur les même tables, avec seulement les conditions qui changent, je pense que cette technique peut fonctionner. L'idée c'est de mettre les conditions dans le SELECT et non dans le WHERE.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-10-2009 à 16:58:43    

cgo2 a écrit :


 
Un UNION va te mettre les 4 tableaux bout à bout en ligne, là il les veux en colonnes. Comment tu ferais ?


 

Harkonnen a écrit :


une requête imbuvable avec des jointures dans tous les sens.


 
 
je ferai comme ca, et je suis d'accord que c'est moche, mais en sql sans connaitre son modèle de donnée et sans avoir envie de s'y plonger je ne ferai pas mieux pour que son truc marche en 30 secs (le temps de copier/coller comme un porc), maintenant effectivement c'est le rôle du langage de présentation a afficher.
Après faut pas s'attendre a être engagé la après ton stage :)
 

Code :
  1. SELECT priorité,
  2.     sum(support) AS support,
  3.     sum(integration AS integration),
  4.     sum(dev) AS dev,
  5.     sum(fin_de_dossier) AS fin_de_dossier
  6. (SELECT dbo_r_pri.PriDsc AS Priorité, Count(*) AS Support,0 AS integration,0 AS dev,0 AS fin_de_dossier
  7. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
  8. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Front Office" OR (dbo_r_wrkgrp.WrkGrpDsc)="Back Office" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  9. GROUP BY dbo_r_pri.PriDsc
  10. union ALL
  11. SELECT dbo_r_pri.PriDsc AS Priorité,0, Count(*) AS Integration,0,0
  12. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
  13. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Documentation" OR (dbo_r_wrkgrp.WrkGrpDsc)="Intégration Road Map" OR (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Intégration Road Map" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  14. GROUP BY dbo_r_pri.PriDsc
  15. union ALL
  16. SELECT dbo_r_pri.PriDsc AS Priorité,0,0, Count(*) AS Dev,0
  17. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde=dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde=dbo_r_wrkgrp.WrkGrpInCde
  18. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="Intégration" OR (dbo_r_wrkgrp.WrkGrpDsc)="Develo_planifiées" OR (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Intégration" ) AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  19. GROUP BY dbo_r_pri.PriDsc
  20. union ALL
  21. SELECT dbo_r_pri.PriDsc AS Priorité,0,0,0, Count(*) AS [Fin de Dossier]
  22. FROM (dbo_p_rqt INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde = dbo_r_pri.PriInCde) INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde = dbo_r_wrkgrp.WrkGrpInCde
  23. WHERE (((dbo_p_rqt.RqtStsInCde)<>5) AND ((dbo_r_wrkgrp.WrkGrpDsc)="V5 - Livraison" OR (dbo_r_wrkgrp.WrkGrpDsc)="V5 - Qualification" OR (dbo_r_wrkgrp.WrkGrpDsc)="Qualification"  
  24. OR  (dbo_r_wrkgrp.WrkGrpDsc)="Mise en production" OR  (dbo_r_wrkgrp.WrkGrpDsc)="Livraison" OR  (dbo_r_wrkgrp.WrkGrpDsc)="BPM - Qualification" )  
  25. AND ((dbo_r_pri.PriDsc)="B - Gênant mais contournable" OR (dbo_r_pri.PriDsc)="A - Perturbant la production" OR (dbo_r_pri.PriDsc)="C - Evolution à prendre en compte" ))
  26. GROUP BY dbo_r_pri.PriDsc)
  27. GROUP BY priorité


Reply

Marsh Posté le 26-10-2009 à 17:01:51    

c'est encore pîre que ce que je croyais [:psywalk]


Message édité par Harkonnen le 26-10-2009 à 17:02:09

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 26-10-2009 à 17:38:29    

[:prozac]


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 26-10-2009 à 17:54:41    

bonbonbon, en passant 5 mins a comprendre on tombe finalement la dessus, mais 5mins vs 30 secs quoi...
 
je sais pas si le case est syntaxiquement correct en mssql
 

Code :
  1. SELECT dbo_r_pri.PriDsc AS Priorité,
  2.       sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("Front Office","Back Office" ) then 1 else 0 end) AS  support,
  3.     sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("Documentation","Intégration Road Map","V5 - Intégration Road Map"  then 1 else 0 end) AS intégration,
  4.     sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("Intégration","Develo_planifiées","BPM - Intégration" ) then 1 else 0 end) AS dev,
  5.     sum(case when dbo_r_wrkgrp.WrkGrpDsc) IN ("V5 - Livraison","V5 - Qualification","Qualification","Mise en production","Livraison","BPM - Qualification" ) then 1 else 0 end) AS fin_de_dossier
  6. FROM (dbo_p_rqt
  7. INNER JOIN dbo_r_pri ON dbo_p_rqt.PriInCde = dbo_r_pri.PriInCde)
  8. INNER JOIN dbo_r_wrkgrp ON dbo_p_rqt.DstWrkGrpInCde = dbo_r_wrkgrp.WrkGrpInCde
  9. WHERE (((dbo_p_rqt.RqtStsInCde)<>5)
  10. AND  ((dbo_r_pri.PriDsc) IN ("B - Gênant mais contournable","A - Perturbant la production","C - Evolution à prendre en compte" )))
  11. GROUP BY dbo_r_pri.PriDsc)

Reply

Marsh Posté le 26-10-2009 à 19:25:25    

et bien vous savez quoi, je vous remercie, étant étudiant en BTS IG en alternance et novice en SQL j'apprends petit a petit, le but de mon maitre d'apprentissage étant de me faire comprendre la logique du langage SQL :)

 

merci casimimir, cgo2 et harkonnen  mon maitre d'apprentissage ayant lu vos commentaires m'a bien fait comprendre qu'il y avait plusieurs façons d'arriver au résultat qu'il me demandait.

 

Vos réponses sont très instructives !!

 

Merci,

 

(je n'ai pas encore pu tester vos solutions, je vous tiens au courant demain)


Message édité par hazzelthorn le 26-10-2009 à 19:26:05
Reply

Marsh Posté le 27-10-2009 à 10:41:53    

casimimir a écrit :

bonbonbon, en passant 5 mins a comprendre on tombe finalement la dessus, mais 5mins vs 30 secs quoi...


 
Ah ben voila c'est la méthode à laquelle je pensais, et là la requête est quand même plus jolie. :)


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 27-10-2009 à 13:58:58    

voila la requete sous crystal report (qui soit dit en passant est bien plus intuitif que Acess :d )
 
 
SELECT "p_rqt"."RqtStsInCde", "r_pri"."PriExCde", "r_pri"."PriDsc", "r_wrkgrp"."WrkGrpInCde"
 
FROM   "absyss_test"."dbo"."r_wrkgrp" "r_wrkgrp"  
INNER JOIN ("absyss_test"."dbo"."r_pri" "r_pri"  
INNER JOIN "absyss_test"."dbo"."p_rqt" "p_rqt" ON "r_pri"."PriInCde"="p_rqt"."PriInCde" )  
ON "r_wrkgrp"."WrkGrpInCde"="p_rqt"."DstWrkGrpInCde"
 
 
WHERE  "p_rqt"."RqtStsInCde"<>5  
AND ("r_pri"."PriDsc"='A - Perturbant la production'  
OR "r_pri"."PriDsc"='B - Gênant mais contournable'  
OR "r_pri"."PriDsc"='C - Evolution à prendre en compte')  
AND  NOT ("r_wrkgrp"."WrkGrpInCde"=1  
OR "r_wrkgrp"."WrkGrpInCde"=2  
OR "r_wrkgrp"."WrkGrpInCde"=5  
OR "r_wrkgrp"."WrkGrpInCde"=10  
OR "r_wrkgrp"."WrkGrpInCde"=11  
OR "r_wrkgrp"."WrkGrpInCde"=13  
OR "r_wrkgrp"."WrkGrpInCde"=14  
OR "r_wrkgrp"."WrkGrpInCde"=15  
OR "r_wrkgrp"."WrkGrpInCde"=17  
OR "r_wrkgrp"."WrkGrpInCde"=18  
OR "r_wrkgrp"."WrkGrpInCde"=20  
OR "r_wrkgrp"."WrkGrpInCde"=22  
OR "r_wrkgrp"."WrkGrpInCde"=23  
OR "r_wrkgrp"."WrkGrpInCde"=24  
OR "r_wrkgrp"."WrkGrpInCde"=26  
OR "r_wrkgrp"."WrkGrpInCde"=30)
 
 
 
avec le champ de formule suivant sous crystal report pour faire la somme de groupe en travail :)
 
if {r_wrkgrp.WrkGrpInCde} in [3,4] then 'Support'  
else if {r_wrkgrp.WrkGrpInCde} in [8,28,29] then 'Intégration'  
else if {r_wrkgrp.WrkGrpInCde} in [9,19,27] then 'Dev'  
else if {r_wrkgrp.WrkGrpInCde} in [16,21,6,12,7,25] then 'Fin de Dossier'
 
 
 
merci a vous tous de votre aide j'ai appris beaucoup de choses :)


Message édité par hazzelthorn le 27-10-2009 à 14:00:13
Reply

Marsh Posté le 30-10-2009 à 21:52:34    

Non,
 
il faut faire un case. Voilà un exemple :
http://www.adp-gmbh.ch/ora/sql/examples/pivot.html
 
Il fonctionne parfaitement, je m'en sers au boulot pour par exemple afficher des rubriques dans la colonne de gauche en lieu et place de tes PRIORITE, et des soldes sur différentes périodes comptables en haut.
 
:jap:


---------------
Like a flower bending in the breeze, bend with me, sway with ease. When we dance you have a way with me, stay with me, sway with me.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed