OVH Cloud OVH Cloud

Etat statistique

4 réponses
Avatar
Luis
Bonjour,
Je reviens sur la question de l'autre jour, HELP!!!
Explications: On met au travail des employ=E9s chez des=20
clients pour d=E9pannages etc...
Alors =E0 chaque fois on ouvre une fiche avec le nom de=20
l'employ=E9, chez quel client, date pr=E9vue =E0 laquelle=20
l'employ=E9 commance sont travail, la date =E0 laquelle il a=20
r=E9=E9llement commenc=E9, date =E0 laquelle il est pr=E9vu qu'il=20
finisse et la date =E0 laquelle il fini sont travail.
Mon probl=E8me est d'imprimer un =E9tat journalier dans lequel=20
je retrouve:
1) le nombre de personnes occup=E9es.
2) le nombre et les noms des personnes comman=E7ant=20
r=E9ellement =E0 travailler, le jour.
3) le nombre et les nom des personnes ayant arr=EAt=E9 (ou=20
fini) leur travail.
4) le nombre et les noms des personnes pr=E9vue pour=20
commencer un travail le lendemain.
5) le nombre et les noms des personnes dont le travail=20
est pr=E9vu pour le lendemain.
6) le nombre de personnes d=E9l=E9gu=E9es le jours ( r=E9f=E9rence=20
date de cr=E9ation de la fiche)

Pour =E7a j'ai les donn=E9es:
Champ [Date] (cr=E9ation de la fiche)
Champ [NomEmploy=E9]
Champ [NomClient]
Champ [Datepr=E9vueD=E9but]
Champ [NomD=E9but]
Champ [DateFin]
Champ [NomDatepr=E9vuFin]
Champ [Frequence]

J'ai essay=E9 de prendre la requ=EAtte utilis=E9e pour la=20
cr=E9ation de la fiche (formulaire) avec l'assistant =E9tat,=20
mais je n'arrive =E0 rien.
Si vous avez une id=E9e?
Merci.
Luis

4 réponses

Avatar
Michel Walsh
Hi,


Chouette, un petit examen.

Je commence par les faciles.

2).
SELECT * FROM tatable WHERE NomDébutÚte( )

(j'imagine que NomDébut est le champ "date prévue à laquelle
l'employé commance sont travail " ).

On peut obtenir le compte des enregistrements avec

SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )


Mais on ne sait pas si une personne est assigné à deux travaux en même
temps (quelconque erreur de saisie, par exemple).

SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé FROM tatable WHERE
NomDébutÚte() )

par contre founira le nombe distincts d'employés qui commenceraient
demain.


4).

SELECT * FROM tatable WHERE DateprévueDébutÚte( ) + 1

Voir 2. pour autres commentaires.


6).

pas la moindre idée de ce qui est demandé, là, désolé. J'espère ne
pas couler l'interro...


1).

SELECT * FROM tatable WHERE Date() BETWEEN NomDébut AND Nz(DateFin,
NomDateprévuFin)


Je suppose que DateFin est NULL tant que le contrat n'est pas
effectivement termné. Si NomDatePrévuFin n'est pas mise à jour
quotidionnellement, essayer plutôt quelque chose comme


SELECT * FROM tatable WHERE Date() >= NomDébut AND DateFin IS NULL

soit, que le contrat a commencé, mais n'est pas encore terminé (DateFin IS
NULL impliquant la dernière observation).



5).

SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut AND Nz(DateFin,
NomDatePrévuFin))


3).

Celle-ci est un peu plus compliquée. Je vais procéder en plusieurs
petites étapes. D'une part qui est à considéré? question bête? pas
vraiment, par exemple, moi, je ne serai pas parmi ceux qui travaillent, dans
TA liste, demain. Donc,

SELECT DISTINCT NomEmployé FROM tatable

est une première requête fournissant "l'univers" sur lequel on est
intéressé. J'appelle cette requête (table, si elle existe déjà) Employés.


Ensuite, ce qui est facile, c'est de trouver ceux qui travaillent
demain. C"est le cas 1). Appelons cette requêtes Actifs (comme dans
employés actifs).


La liste des employés innactifs demain est donc la liste des employés
qui sont dans Employés, mais non dans Actifs. Bingo, il y a un Wizard qui le
fait, le code qu'il génère devrait ressembler à:


SELECT Employés.* FROM Employés LEFT JOIN Actifs ON Employés.NomEmployé
¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL


À noter que cela ne signifie pas qu'un employé ne sera pas actif DEMAIN,
seulement qu'il ne l'est pas, aujourd'hui.



À noter qu'en dépit des apparences, quand on regarde les détails, il
demeure beaucoup d'imprécisions qui sont reliées aux politiques et
procédures de la compagnie.



Espérant être utile,
Vanderghast, Access MVP


"Luis" wrote in message
news:071501c3b4c7$20775950$
Bonjour,
Je reviens sur la question de l'autre jour, HELP!!!
Explications: On met au travail des employés chez des
clients pour dépannages etc...
Alors à chaque fois on ouvre une fiche avec le nom de
l'employé, chez quel client, date prévue à laquelle
l'employé commance sont travail, la date à laquelle il a
rééllement commencé, date à laquelle il est prévu qu'il
finisse et la date à laquelle il fini sont travail.
Mon problème est d'imprimer un état journalier dans lequel
je retrouve:
1) le nombre de personnes occupées.
2) le nombre et les noms des personnes commançant
réellement à travailler, le jour.
3) le nombre et les nom des personnes ayant arrêté (ou
fini) leur travail.
4) le nombre et les noms des personnes prévue pour
commencer un travail le lendemain.
5) le nombre et les noms des personnes dont le travail
est prévu pour le lendemain.
6) le nombre de personnes déléguées le jours ( référence
date de création de la fiche)

Pour ça j'ai les données:
Champ [Date] (création de la fiche)
Champ [NomEmployé]
Champ [NomClient]
Champ [DateprévueDébut]
Champ [NomDébut]
Champ [DateFin]
Champ [NomDateprévuFin]
Champ [Frequence]

J'ai essayé de prendre la requêtte utilisée pour la
création de la fiche (formulaire) avec l'assistant état,
mais je n'arrive à rien.
Si vous avez une idée?
Merci.
Luis
Avatar
Michel Walsh
Salut,


J'ai confondu demain et aujourd'hui tout partout...j'espère que le
contexte permet de corriger automatiquement... ? Date( ), c'est
aujourd'hui, Date( ) + 1, demain ( au cas où).

Vanderghast, Access MVP
Avatar
Bonjour,
Tout d'abord, les réponses à tes questions:
Champ [Date] (création de la fiche)
Champ [NomEmployé]
Champ [NomClient]
Champ [DateprévueDébut] 'date à laquelle le début du
travail est prévu
Champ [NomDébut] 'Nom de l'employé qui commence le
travail [NomEmployé]
Champ [DateFin] 'date à laquelle l'employé a fini
rééllement son travail
Champ [NomDateprévuFin] 'Nom de l'employé qui va finir
le travail [NomEmployé]
Champ [Frequence]
Je comprend ta question car j'ai oublié de donner deux
champs.
Champ [DateDébut]
Champ [DateprévueFin]

Si j'ai bien compris ça donnerai ceci:
1).
SELECT * FROM tatable WHERE Date() >= DateDébut AND
DateFin IS NULL
au lieu
SELECT * FROM tatable WHERE Date() >= NomDébut AND
DateFin IS NULL


2).
SELECT * FROM tatable WHERE DateDébutÚte( )

le compte des enregistrements avec

SELECT COUNT(*) FROM tatable WHERE DateDébutÚte( )

au lieu de

SELECT * FROM tatable WHERE NomDébutÚte( )

SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )

3). je ne comprend pas ce que tout celà va faire, je suis
peut-être bête, même sûrement bête mais je ne comprend pas

SELECT DISTINCT NomEmployé FROM tatable
J'appelle cette requête (table, si elle existe déjà)
Employés.

'elle existe, mais la table employés comprend tous les
employés (qu'ils travaillent ou pas, qu'ils soint
disponibles ou non -vacaces, malades etc..)
Il y a une table dans laquelle il y a les noms de ceux
qui sont délégué ou qui vont être délégués.

SELECT Employés.* FROM Employés LEFT JOIN Actifs ON
Employés.NomEmployé
¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL

5).

SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut
AND Nz(DateFin, NomDatePrévuFin))

la date de demain, qui peut-être dans 2 jours (exemple du
vendredi pour la lundi), je l'indique dans un champ du
formulaire "Impressions" par la commande:
DoCmd.OpenReport "Synthèse",
acNormal, , "([DateprévueDébut]=[FORMS]![IMPRESSIONS].
[Texte17]) and ([DateDébut]= Int(Now()) and [DateFIN]= Int
(Now())and ([DatePrévueFin]= Int(Now()))"

6).
Ma question était mal posée.
Il est important de savoir le nombre de personnes et les
noms à qui on a proposé un travail (pour le jour même,
pour le lendemain ou pour dans 3 jours par exemple) jour
par jour, la date de création de la fiche est la seule
référence possible.

!!!!!Moi par contre j'ai une question:
Ce que tu m'a envoyé c'est du code que je place où dans
mon Etat, et comment?
Je te remercie pour ton super travail.
Luis

-----Message d'origine-----
Hi,


Chouette, un petit examen.

Je commence par les faciles.

2).
SELECT * FROM tatable WHERE NomDébutÚte( )

(j'imagine que NomDébut est le champ "date prévue à
laquelle

l'employé commance sont travail " ).

On peut obtenir le compte des enregistrements avec

SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )


Mais on ne sait pas si une personne est assigné à
deux travaux en même

temps (quelconque erreur de saisie, par exemple).

SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé
FROM tatable WHERE

NomDébutÚte() )

par contre founira le nombe distincts d'employés qui
commenceraient

demain.


4).

SELECT * FROM tatable WHERE DateprévueDébutÚte( )
+ 1


Voir 2. pour autres commentaires.


6).

pas la moindre idée de ce qui est demandé, là,
désolé. J'espère ne

pas couler l'interro...


1).

SELECT * FROM tatable WHERE Date() BETWEEN NomDébut
AND Nz(DateFin,

NomDateprévuFin)


Je suppose que DateFin est NULL tant que le contrat
n'est pas

effectivement termné. Si NomDatePrévuFin n'est pas mise
à jour

quotidionnellement, essayer plutôt quelque chose comme


SELECT * FROM tatable WHERE Date() >= NomDébut AND
DateFin IS NULL


soit, que le contrat a commencé, mais n'est pas encore
terminé (DateFin IS

NULL impliquant la dernière observation).



5).

SELECT * FROM tatable WHERE ((Date()+1) BETWEEN
NomDébut AND Nz(DateFin,

NomDatePrévuFin))


3).

Celle-ci est un peu plus compliquée. Je vais
procéder en plusieurs

petites étapes. D'une part qui est à considéré?
question bête? pas

vraiment, par exemple, moi, je ne serai pas parmi ceux
qui travaillent, dans

TA liste, demain. Donc,

SELECT DISTINCT NomEmployé FROM tatable

est une première requête fournissant "l'univers" sur
lequel on est

intéressé. J'appelle cette requête (table, si elle
existe déjà) Employés.



Ensuite, ce qui est facile, c'est de trouver ceux
qui travaillent

demain. C"est le cas 1). Appelons cette requêtes
Actifs (comme dans

employés actifs).


La liste des employés innactifs demain est donc la
liste des employés

qui sont dans Employés, mais non dans Actifs. Bingo, il
y a un Wizard qui le

fait, le code qu'il génère devrait ressembler à:


SELECT Employés.* FROM Employés LEFT JOIN Actifs ON
Employés.NomEmployé

¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL


À noter que cela ne signifie pas qu'un employé ne
sera pas actif DEMAIN,

seulement qu'il ne l'est pas, aujourd'hui.



À noter qu'en dépit des apparences, quand on regarde
les détails, il

demeure beaucoup d'imprécisions qui sont reliées aux
politiques et

procédures de la compagnie.



Espérant être utile,
Vanderghast, Access MVP


"Luis" wrote in
message

news:071501c3b4c7$20775950$
Bonjour,
Je reviens sur la question de l'autre jour, HELP!!!
Explications: On met au travail des employés chez des
clients pour dépannages etc...
Alors à chaque fois on ouvre une fiche avec le nom de
l'employé, chez quel client, date prévue à laquelle
l'employé commance sont travail, la date à laquelle il a
rééllement commencé, date à laquelle il est prévu qu'il
finisse et la date à laquelle il fini sont travail.
Mon problème est d'imprimer un état journalier dans
lequel

je retrouve:
1) le nombre de personnes occupées.
2) le nombre et les noms des personnes commançant
réellement à travailler, le jour.
3) le nombre et les nom des personnes ayant arrêté (ou
fini) leur travail.
4) le nombre et les noms des personnes prévue pour
commencer un travail le lendemain.
5) le nombre et les noms des personnes dont le travail
est prévu pour le lendemain.
6) le nombre de personnes déléguées le jours ( référence
date de création de la fiche)

Pour ça j'ai les données:
Champ [Date] (création de la fiche)
Champ [NomEmployé]
Champ [NomClient]
Champ [DateprévueDébut]
Champ [NomDébut]
Champ [DateFin]
Champ [NomDateprévuFin]
Champ [Frequence]

J'ai essayé de prendre la requêtte utilisée pour la
création de la fiche (formulaire) avec l'assistant état,
mais je n'arrive à rien.
Si vous avez une idée?
Merci.
Luis



.



Avatar
Michel Walsh
Salut,

- Je ferais un état pour chaque requête (sauvegardée ou écrite dans la
propriété RecordSource de l'état). Et je ressemblerais ces états, dans un
état général (qui contiendrait donc 6 sous-états).



- Si demain n'est pas nécessairement Date( ) + 1, mais la prochaine
date dans une table JoursOuvrés, alors remplacer Date( ) + 1 par:

( SELECT MIN(jourOuvrable) FROM JoursOuvrés WHERE jourouvrable>
Date( ) )



Si on désire au moins trois ( ou "offset", pour un cas général) jours
ouvrables par rapport à maintenant:

SELECT a.jourOuvrable
FROM JoursOuvrés As a INNER JOIN JoursOuvrés AS b
ON b.jourOuvrable <= a.jourOuvrable
WHERE a.jourOuvrable > Date( ) AND b.jourOuvrable > Date()
GROUP BY a.jourOuvrable
HAVING COUNT(*) = [offset]





Évidemment, c'est plus long que Date( ) + offset, mais j'imagine que le
principe est "auto"-évident, on décompte le nombre de jours, dans la table,
entre maintenant, Date( ), et la date de l'enregistrement. L'enregistrement
qui a fourni un décompte égal à ce qu'on cherche est celui-là qui est à
retourner. J'ai supposé que [offset] > 0 ( >= 1 si on préfère).


Espérant être utile,
Vanderghast, Access MVP


wrote in message
news:082f01c3b812$2097d790$
Bonjour,
Tout d'abord, les réponses à tes questions:
Champ [Date] (création de la fiche)
Champ [NomEmployé]
Champ [NomClient]
Champ [DateprévueDébut] 'date à laquelle le début du
travail est prévu
Champ [NomDébut] 'Nom de l'employé qui commence le
travail [NomEmployé]
Champ [DateFin] 'date à laquelle l'employé a fini
rééllement son travail
Champ [NomDateprévuFin] 'Nom de l'employé qui va finir
le travail [NomEmployé]
Champ [Frequence]
Je comprend ta question car j'ai oublié de donner deux
champs.
Champ [DateDébut]
Champ [DateprévueFin]

Si j'ai bien compris ça donnerai ceci:
1).
SELECT * FROM tatable WHERE Date() >= DateDébut AND
DateFin IS NULL
au lieu
SELECT * FROM tatable WHERE Date() >= NomDébut AND
DateFin IS NULL


2).
SELECT * FROM tatable WHERE DateDébutÚte( )

le compte des enregistrements avec

SELECT COUNT(*) FROM tatable WHERE DateDébutÚte( )

au lieu de

SELECT * FROM tatable WHERE NomDébutÚte( )

SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )

3). je ne comprend pas ce que tout celà va faire, je suis
peut-être bête, même sûrement bête mais je ne comprend pas

SELECT DISTINCT NomEmployé FROM tatable
J'appelle cette requête (table, si elle existe déjà)
Employés.

'elle existe, mais la table employés comprend tous les
employés (qu'ils travaillent ou pas, qu'ils soint
disponibles ou non -vacaces, malades etc..)
Il y a une table dans laquelle il y a les noms de ceux
qui sont délégué ou qui vont être délégués.

SELECT Employés.* FROM Employés LEFT JOIN Actifs ON
Employés.NomEmployé
¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL

5).

SELECT * FROM tatable WHERE ((Date()+1) BETWEEN NomDébut
AND Nz(DateFin, NomDatePrévuFin))

la date de demain, qui peut-être dans 2 jours (exemple du
vendredi pour la lundi), je l'indique dans un champ du
formulaire "Impressions" par la commande:
DoCmd.OpenReport "Synthèse",
acNormal, , "([DateprévueDébut]=[FORMS]![IMPRESSIONS].
[Texte17]) and ([DateDébut]= Int(Now()) and [DateFIN]= Int
(Now())and ([DatePrévueFin]= Int(Now()))"

6).
Ma question était mal posée.
Il est important de savoir le nombre de personnes et les
noms à qui on a proposé un travail (pour le jour même,
pour le lendemain ou pour dans 3 jours par exemple) jour
par jour, la date de création de la fiche est la seule
référence possible.

!!!!!Moi par contre j'ai une question:
Ce que tu m'a envoyé c'est du code que je place où dans
mon Etat, et comment?
Je te remercie pour ton super travail.
Luis

-----Message d'origine-----
Hi,


Chouette, un petit examen.

Je commence par les faciles.

2).
SELECT * FROM tatable WHERE NomDébutÚte( )

(j'imagine que NomDébut est le champ "date prévue à
laquelle

l'employé commance sont travail " ).

On peut obtenir le compte des enregistrements avec

SELECT COUNT(*) FROM tatable WHERE NomDébutÚte( )


Mais on ne sait pas si une personne est assigné à
deux travaux en même

temps (quelconque erreur de saisie, par exemple).

SELECT COUNT(*) FROM ( SELECT DISTINCT NomEmployé
FROM tatable WHERE

NomDébutÚte() )

par contre founira le nombe distincts d'employés qui
commenceraient

demain.


4).

SELECT * FROM tatable WHERE DateprévueDébutÚte( )
+ 1


Voir 2. pour autres commentaires.


6).

pas la moindre idée de ce qui est demandé, là,
désolé. J'espère ne

pas couler l'interro...


1).

SELECT * FROM tatable WHERE Date() BETWEEN NomDébut
AND Nz(DateFin,

NomDateprévuFin)


Je suppose que DateFin est NULL tant que le contrat
n'est pas

effectivement termné. Si NomDatePrévuFin n'est pas mise
à jour

quotidionnellement, essayer plutôt quelque chose comme


SELECT * FROM tatable WHERE Date() >= NomDébut AND
DateFin IS NULL


soit, que le contrat a commencé, mais n'est pas encore
terminé (DateFin IS

NULL impliquant la dernière observation).



5).

SELECT * FROM tatable WHERE ((Date()+1) BETWEEN
NomDébut AND Nz(DateFin,

NomDatePrévuFin))


3).

Celle-ci est un peu plus compliquée. Je vais
procéder en plusieurs

petites étapes. D'une part qui est à considéré?
question bête? pas

vraiment, par exemple, moi, je ne serai pas parmi ceux
qui travaillent, dans

TA liste, demain. Donc,

SELECT DISTINCT NomEmployé FROM tatable

est une première requête fournissant "l'univers" sur
lequel on est

intéressé. J'appelle cette requête (table, si elle
existe déjà) Employés.



Ensuite, ce qui est facile, c'est de trouver ceux
qui travaillent

demain. C"est le cas 1). Appelons cette requêtes
Actifs (comme dans

employés actifs).


La liste des employés innactifs demain est donc la
liste des employés

qui sont dans Employés, mais non dans Actifs. Bingo, il
y a un Wizard qui le

fait, le code qu'il génère devrait ressembler à:


SELECT Employés.* FROM Employés LEFT JOIN Actifs ON
Employés.NomEmployé

¬tifs.NomEmployé WHERE Actifs.NomEmployé IS NULL


À noter que cela ne signifie pas qu'un employé ne
sera pas actif DEMAIN,

seulement qu'il ne l'est pas, aujourd'hui.



À noter qu'en dépit des apparences, quand on regarde
les détails, il

demeure beaucoup d'imprécisions qui sont reliées aux
politiques et

procédures de la compagnie.



Espérant être utile,
Vanderghast, Access MVP


"Luis" wrote in
message

news:071501c3b4c7$20775950$
Bonjour,
Je reviens sur la question de l'autre jour, HELP!!!
Explications: On met au travail des employés chez des
clients pour dépannages etc...
Alors à chaque fois on ouvre une fiche avec le nom de
l'employé, chez quel client, date prévue à laquelle
l'employé commance sont travail, la date à laquelle il a
rééllement commencé, date à laquelle il est prévu qu'il
finisse et la date à laquelle il fini sont travail.
Mon problème est d'imprimer un état journalier dans
lequel

je retrouve:
1) le nombre de personnes occupées.
2) le nombre et les noms des personnes commançant
réellement à travailler, le jour.
3) le nombre et les nom des personnes ayant arrêté (ou
fini) leur travail.
4) le nombre et les noms des personnes prévue pour
commencer un travail le lendemain.
5) le nombre et les noms des personnes dont le travail
est prévu pour le lendemain.
6) le nombre de personnes déléguées le jours ( référence
date de création de la fiche)

Pour ça j'ai les données:
Champ [Date] (création de la fiche)
Champ [NomEmployé]
Champ [NomClient]
Champ [DateprévueDébut]
Champ [NomDébut]
Champ [DateFin]
Champ [NomDateprévuFin]
Champ [Frequence]

J'ai essayé de prendre la requêtte utilisée pour la
création de la fiche (formulaire) avec l'assistant état,
mais je n'arrive à rien.
Si vous avez une idée?
Merci.
Luis



.