OVH Cloud OVH Cloud

Mauvaise structure de table !

4 réponses
Avatar
Kiwix
Bonjour =E0 tous,

Je suis entrain de reprendre une base de donn=E9e Access de=20
pointage des heures de main d’œuvre. Mais ma table de=20
pointage est structur=E9e de la fa=E7on suivant (les champs) :

N=B0PERSONNEL
N=B0AFFAIRE
ANNEE
SEMAINE
LUNDI (dans ce champ appara=EEt les heures travaill=E9es)
MARDI (dans ce champ appara=EEt les heures travaill=E9es)
MERCREDI (dans ce champ appara=EEt les heures travaill=E9es)
JEUDI (dans ce champ appara=EEt les heures travaill=E9es)
VENDREDI (dans ce champ appara=EEt les heures travaill=E9es)
SAMEDI (dans ce champ appara=EEt les heures travaill=E9es)
DIMANCHE (dans ce champ appara=EEt les heures travaill=E9es)


Mon probl=E8me est donc ceci : Comment puis-je faire dans=20
une requ=EAte pour filtrer mes donn=E9es sur un MOIS ?=20
L’id=E9al pour moi serais de re-transformer ces donn=E9es dans=20
une tables structur=E9 de la fa=E7on suivant :

N=B0PERSONNEL
N=B0AFFAIRE
DATE (jj/mm/aaaa)
ANNEE
SEMAINE
HEURE=20

Merci pour vos r=E9ponse :)

4 réponses

Avatar
Raymond [mvp]
Bonjour.

ce n'est pas forcément une mauvaise idée si les calculs sont faits à la
semaine et ensuite imputés sur le mois où apparaît la fin de semaine. la
date de fin de semaine recalculée avec le n° de semaine peut donner le mois
d'imputation. Si les calculs sont faits au mois civil, il est préférable
d'avoir la date directement dans l'enregistrement. pour calculer la date
exacte du premier jour de la semaine tu as une fonction qui est sur la page
: http://mypage.bluewin.ch/w.stucki/CalculsDates.htm#LundiSem que tu peux
utilsier dans une requête.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kiwix" a écrit dans le message de
news: 128c01c4b5d9$4dec02a0$
Bonjour à tous,

Je suis entrain de reprendre une base de donnée Access de
pointage des heures de main d’œuvre. Mais ma table de
pointage est structurée de la façon suivant (les champs) :

N°PERSONNEL
N°AFFAIRE
ANNEE
SEMAINE
LUNDI (dans ce champ apparaît les heures travaillées)
MARDI (dans ce champ apparaît les heures travaillées)
MERCREDI (dans ce champ apparaît les heures travaillées)
JEUDI (dans ce champ apparaît les heures travaillées)
VENDREDI (dans ce champ apparaît les heures travaillées)
SAMEDI (dans ce champ apparaît les heures travaillées)
DIMANCHE (dans ce champ apparaît les heures travaillées)


Mon problème est donc ceci : Comment puis-je faire dans
une requête pour filtrer mes données sur un MOIS ?
L’idéal pour moi serais de re-transformer ces données dans
une tables structuré de la façon suivant :

N°PERSONNEL
N°AFFAIRE
DATE (jj/mm/aaaa)
ANNEE
SEMAINE
HEURE

Merci pour vos réponse :)
Avatar
Ilan
Bonjour,
effectivement il faudrait un champ mois. Une semaine pouvant etre a cheval
sur deux mois.
Il te faudrait peut-etre separer le tout en deux tables

Exemple :

1) PointageMensuel - N° PERSO - N°AFFAIRE - ANNEE - MOIS - HEURES TOTALES

2) PointageMensuel - PointageQuotidien - SEMAINE - JOUR - HEURES






Bonjour à tous,

Je suis entrain de reprendre une base de donnée Access de
pointage des heures de main d’œuvre. Mais ma table de
pointage est structurée de la façon suivant (les champs) :

N°PERSONNEL
N°AFFAIRE
ANNEE
SEMAINE
LUNDI (dans ce champ apparaît les heures travaillées)
MARDI (dans ce champ apparaît les heures travaillées)
MERCREDI (dans ce champ apparaît les heures travaillées)
JEUDI (dans ce champ apparaît les heures travaillées)
VENDREDI (dans ce champ apparaît les heures travaillées)
SAMEDI (dans ce champ apparaît les heures travaillées)
DIMANCHE (dans ce champ apparaît les heures travaillées)


Mon problème est donc ceci : Comment puis-je faire dans
une requête pour filtrer mes données sur un MOIS ?
L’idéal pour moi serais de re-transformer ces données dans
une tables structuré de la façon suivant :

N°PERSONNEL
N°AFFAIRE
DATE (jj/mm/aaaa)
ANNEE
SEMAINE
HEURE

Merci pour vos réponse :)



Avatar
kiwix
Comment utiliser dans une requête cette fonction ? :

Function LundiSemaineAnnéeQuelconque(Semaine As Integer,
Optional An As Integer = 0) As Date
' Objectif: Convertir un no de semaine en une date
correspondant au lundi de cette semaine
'
***********************************************************
****************************************************
On Error GoTo TraitementErreur
'Teste si le numéro de semaine est correct et si l'année
est spécifiée.
If IsNull(Semaine) Or Semaine <= 0 Or Semaine > 52 Then
MsgBox "Le numéro de semaine est incorrect, veuillez
corriger", vbCritical, "Erreur de saisie"
Exit Function
ElseIf An = 0 Then
An = Year(Date)
End If
Dim Datetemp As Date
' On calcule à partir du 1er janvier de l'année spécifiée
Datetemp = DateSerial(An, 1, 1) + (Semaine - 1) * 7
LundiSemaineAnnéeQuelconque = Datetemp - (WeekDay
(Datetemp) - vbMonday)
Exit Function
TraitementErreur:
MsgBox "No Erreur: " & Err.Number & Chr(13) & Chr(13) &
Err.Description
End Function

-----Message d'origine-----
Bonjour.

ce n'est pas forcément une mauvaise idée si les calculs
sont faits à la

semaine et ensuite imputés sur le mois où apparaît la fin
de semaine. la

date de fin de semaine recalculée avec le n° de semaine
peut donner le mois

d'imputation. Si les calculs sont faits au mois civil, il
est préférable

d'avoir la date directement dans l'enregistrement. pour
calculer la date

exacte du premier jour de la semaine tu as une fonction
qui est sur la page

:
http://mypage.bluewin.ch/w.stucki/CalculsDates.htm#LundiSem

que tu peux
utilsier dans une requête.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Kiwix" a écrit
dans le message de

news: 128c01c4b5d9$4dec02a0$
Bonjour à tous,

Je suis entrain de reprendre une base de donnée Access de
pointage des heures de main d&#8217;&#339;uvre. Mais ma table de
pointage est structurée de la façon suivant (les champs) :

N°PERSONNEL
N°AFFAIRE
ANNEE
SEMAINE
LUNDI (dans ce champ apparaît les heures travaillées)
MARDI (dans ce champ apparaît les heures travaillées)
MERCREDI (dans ce champ apparaît les heures travaillées)
JEUDI (dans ce champ apparaît les heures travaillées)
VENDREDI (dans ce champ apparaît les heures travaillées)
SAMEDI (dans ce champ apparaît les heures travaillées)
DIMANCHE (dans ce champ apparaît les heures travaillées)


Mon problème est donc ceci : Comment puis-je faire dans
une requête pour filtrer mes données sur un MOIS ?
L&#8217;idéal pour moi serais de re-transformer ces données dans
une tables structuré de la façon suivant :

N°PERSONNEL
N°AFFAIRE
DATE (jj/mm/aaaa)
ANNEE
SEMAINE
HEURE

Merci pour vos réponse :)


.



Avatar
Raymond [mvp]
Tu places la fonction dans un module standard.
dans la requête, en mode création access, dans une colonne tu indiques:
DatedeSaisie: LundiSemaineAnnéeQuelconque([SEMAINE]; [ANNEE])

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"kiwix" a écrit dans le message de
news: 056901c4b5ee$81138300$
Comment utiliser dans une requête cette fonction ? :

Function LundiSemaineAnnéeQuelconque(Semaine As Integer,
Optional An As Integer = 0) As Date
' Objectif: Convertir un no de semaine en une date
correspondant au lundi de cette semaine
'
***********************************************************
****************************************************
On Error GoTo TraitementErreur
'Teste si le numéro de semaine est correct et si l'année
est spécifiée.
If IsNull(Semaine) Or Semaine <= 0 Or Semaine > 52 Then
MsgBox "Le numéro de semaine est incorrect, veuillez
corriger", vbCritical, "Erreur de saisie"
Exit Function
ElseIf An = 0 Then
An = Year(Date)
End If
Dim Datetemp As Date
' On calcule à partir du 1er janvier de l'année spécifiée
Datetemp = DateSerial(An, 1, 1) + (Semaine - 1) * 7
LundiSemaineAnnéeQuelconque = Datetemp - (WeekDay
(Datetemp) - vbMonday)
Exit Function
TraitementErreur:
MsgBox "No Erreur: " & Err.Number & Chr(13) & Chr(13) &
Err.Description
End Function