Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
bonjour,
j'ai une table qui contient les champs suivants :
Nom PC
Session
Date
HeureOn
HeureOff
qui correspond aux connexions et aux déconnexions des utilisateurs sur leur PC.
Le problème c'est que j'ai une ligne pour le On et une autre ligne pour le Off alors que je voudrais avoir pour un PC et une Session et à une Date le On et le Off sur la même ligne. Comment regrouper les lignes, j'imagine qu'il faut que je reload ma table, mais comment faire ?
Nom PC | Session | Date | HeureOn | HeureOff |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | 14:11:33 | - |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | - | 15:05:27 |
un grand merci Christian car on se rapproche du résultat final. Comme tu dis j'ai adapté car j'avais déjà les heures et le flag on/off dans ma table d'origine.
ah juste petit pb en faisant comme tu dis, j'ai perdu les PC qui ne sont jamais connectés qui n'ont pas de on/off et ça m'intéresse de les connaitre, que faut-il modifier pour les retrouver ?
Bonjour Jacky
donc tu dois avoir quelque part une liste de tous tes PC je suppose.
utilise un nom spécifique lors du load tel que
LOAD
NomPC,
NomPC as Ref_PC, // permet de garder les PC sous un nom de référence
...
Ensuite à la fin de ta procédure ajoute dans ta table finale
LOAD
NomPC ,
+ tes autres champs utiles
FROM ...
WHERE NOT exists (Ref_PC, NomPC) // permet d'ajouter tous les PC qui ne sont pas déjà référencés dans la table finale et qui font partie de ta liste de référence
bonne journée
Christian
bonjour Christian, grâce à ton aide précieuse je progresse.
j'ai fait ce que tu m'as dit mais ça ne le fait pas, ça ne rajoute pas les PC avec le WHERE NOT exists (Ref_PC, NomPC)
par contre si je mets :
concatenate
LOAD NomPC,
Site,
Salle
FROM pcAD.qvd (qvd);
sans le where je les retrouve, comment se fait-il ? puis-je laisser ça comme ça ? ou alors il y a un pb sur le where ?
Jacky
je ne sais pas comment est construit le script donc je donne juste des pistes et non des réponses
Si tu as de base tous tes PC cela peut constituer un référentiel utilisable si tu passes par des tables temporaires pour faire les JOIN ou autres traitements. A la fin la table finale ne contient plus tous les PC donc faire appel au référentiel est le moyen de les récupérer mais si tu as tout ce référentiel n'est pas utile
Christian
merci Christian, je pense arrivé au bout, il me reste encore 2 ou 3 trois petit soucis que je vais essayer de résoudre mais jusqu'à maintenant ça me semble correcte avec cette fin de script :
T5:
LOAD
[Nom PC],
Session,
Date,
if(len(HeureOn)=0 or IsNull(HeureOn), '08:00:00', HeureOn) as HeureOn,
if(len(HeureOff)=0 or IsNull(HeureOff), '18:00:00', HeureOff) as HeureOff,
Salle,
Site,
Jour,
Semaine,
Mois,
Année
resident T4;
drop table T4;
Concatenate
LOAD
[Nom PC],
Site,
Salle,
'NC' as HeureOn,
'NC' as HeureOff
FROM pcAD.qvd (qvd)
WHERE NOT exists ([Nom PC]) ;
bonjour Christian,
encore un petit coup de main si tu veux bien.
tant que j'avais un logon et logoff associé pas de soucis mais il arrive temps en temps que j'ai l'un et pas l'autre et vice versa.
je pense avoir résolu le cas si j'ai un logon et pas un logoff mais je n'arrive pas à récupérer le contraire même en changeant le JOIN, as-tu une piste ?
Bonjour Jacky
voici
bon courage
Christian
Je ne sais pas quels sont les calculs à faire ensuite mais un moyen pourrais être de passer par le 'crosss table':
Tableau d'origine:
Nom_PC | Session | Date | Heure_on | Heure_off |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | 14:11:33 | |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | 15:05:27 | |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | 18:11:33 | |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | 19:05:27 | |
LM1-CDR-A-001 | fcuser100 | 20/05/2014 | 10:10:30 | |
LM1-CDR-A-001 | fcuser100 | 20/05/2014 | 11:05:20 | |
LM1-CDR-A-003 | fcuser123 | 21/05/2014 | 16:00:00 | |
LM1-CDR-A-003 | fcuser123 | 21/05/2014 | 19:05:00 | |
LM1-CDR-A-004 | fcuser124 | 22/05/2014 | 09:00:00 | |
LM1-CDR-A-005 | fcuser125 | 22/05/2014 | 11:00:00 |
script:
CrossTable(log_type, heure, 3)
LOAD Nom_PC,
Session,
Date,
Heure_on,
Heure_off
FROM
C:\Users\ho.bdemoustier\Desktop\logonloggoff.xlsx
(ooxml, embedded labels, table is Feuil1);
Tableau Final:
Nom_PC | Session | Date | log_type | heure |
LM1-CDR-A-001 | fcuser100 | 20/05/2014 | Heure_on | 10:10:30 |
LM1-CDR-A-001 | fcuser100 | 20/05/2014 | Heure_off | 11:05:20 |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | Heure_on | 14:11:33 |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | Heure_off | 15:05:27 |
LM1-CDR-A-003 | fcuser123 | 21/05/2014 | Heure_on | 16:00:00 |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | Heure_on | 18:11:33 |
LM1-CDR-A-003 | fcuser123 | 21/05/2014 | Heure_off | 19:05:00 |
LM1-CDR-A-002 | fcuser121 | 21/05/2014 | Heure_off | 19:05:27 |
LM1-CDR-A-004 | fcuser124 | 22/05/2014 | Heure_on | 09:00:00 |
LM1-CDR-A-005 | fcuser125 | 22/05/2014 | Heure_off | 11:00:00 |
ce n'est pas le résultat escompté mais cela permet d'effectuer a peu prés tout les calculs que l'on veut derriere non ? (nombre de connexion par PC, durée des connections,.....)
bonjour Christian et un grand merci pour tout.
je pense être arrivé au bout.