[ACCESS2007] Rajouter un délai dans un champ date

Le
Patrick de Montpellier
Bonjour à tous,

J'ai un souci que je n'arrive pas à résoudre, surement par méconnaissance
d'access.

J'ai une Table1 dans lequel il y a un champ "date" au format [Date/Heure]
(et un champ société)

Dans la Table2 j'ai un champ "delaidelivraison" qui est au format
[Numérique] (et un champ société)

J'ai donc voulu créer une requête qui me mettrait à jour le champ "date" de
Table1 en rajoutant la valeur du champ "delaidelivraison" de Table 2

Ma requête mise à jour avait juste comme valeur
[date]+[delaidelivraison]

Hors la mise à jour me donnait des valeurs beaucoup plus importante que
prévue.

Pouvez vous m'aider dans la formulation de ma requête ?

Concrêtement en table 1 j'ai :
date 19/06/2007

en table 2 j'ai
delaidelivraison 1

J'aimerai avoir une requête qui me donne soit en mise a jour dans la Table1
directement la valeur de 19/06/2007 + 1 j donc le 20/06/2007

La valeur de "delaidelivraison" étant comprise entre 1 et 7

Tant qu'à y être est t'il possible d'y inclure un report en fonction des
jours fériés ou pas ?

Vous remerciant par avance de votre aide.

Bonne journée.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6328191
Bonjour à tous,

J'ai un souci que je n'arrive pas à résoudre, surement par méconnaissance
d'access.

J'ai une Table1 dans lequel il y a un champ "date" au format [Date/Heure]
(et un champ société)

Dans la Table2 j'ai un champ "delaidelivraison" qui est au format
[Numérique] (et un champ société)

J'ai donc voulu créer une requête qui me mettrait à jour le champ "date" de
Table1 en rajoutant la valeur du champ "delaidelivraison" de Table 2

Ma requête mise à jour avait juste comme valeur
[date]+[delaidelivraison]

Hors la mise à jour me donnait des valeurs beaucoup plus importante que
prévue.

Pouvez vous m'aider dans la formulation de ma requête ?

Concrêtement en table 1 j'ai :
date 19/06/2007

en table 2 j'ai
delaidelivraison 1

J'aimerai avoir une requête qui me donne soit en mise a jour dans la Table1
directement la valeur de 19/06/2007 + 1 j donc le 20/06/2007

La valeur de "delaidelivraison" étant comprise entre 1 et 7

Tant qu'à y être est t'il possible d'y inclure un report en fonction des
jours fériés ou pas ?

Vous remerciant par avance de votre aide.

Bonne journée.
Bonjour,

Si le delai est toujours en jour alors dateadd("d",Delai,Date) est pour toi.
Pour ce qui est des jours feriés il existe des fonctions qui te retourne
vrai si la date est fériée.
A toi de combiner les deux pour obtenir une date qui te vas
Perso voici la focntion que j'utilise pour le jours fériés
Option Compare Database
Option Explicit
Function Ferie(Range As Date) As Boolean

Dim A As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer
Dim f As Integer
Dim g As Integer
Dim h As Integer
Dim I As Integer
Dim k As Integer
Dim q As Integer
Dim m As Integer
Dim n As Integer
Dim p As Integer
Dim Z As Integer
Dim Pâques As Date
Dim LundiPâques As Date
Dim Ascension As Date
Dim LundiPentecôte As Date
Dim Pentecôte As Date

Z = Year(Range) 'année
A = Z Mod 19
b = Int(Z / 100)
c = Z Mod 100
d = Int(b / 4)
e = b Mod 4
f = Int((b + 9) / 25)
g = Int((b - f + 1) / 3)
h = (19 * A + b - d - g + 15) Mod 30
I = Int(c / 4)
k = c Mod 4
q = (32 + 2 * e + 2 * I - h - k) Mod 7
m = Int((A + 11 * h + 22 * q) / 451)
n = Int((h + q - 7 * m + 114) / 31) 'jour
p = (h + q - 7 * m + 114) Mod 31 'mois

Pâques = DateSerial(Z, n, p + 1)
LundiPâques = Pâques + 1
Ascension = Pâques + 39
Pentecôte = Pâques + 49
LundiPentecôte = Pâques + 50
Select Case Format(Range, "dd/mm/yyyy")
Case Format(Pâques, "dd/mm/yyyy"): Ferie = True
Case Format(LundiPâques, "dd/mm/yyyy"): Ferie = True
Case Format(Ascension, "dd/mm/yyyy"): Ferie = True
Case Format(Pentecôte, "dd/mm/yyyy"): Ferie = True
'Case Format(LundiPentecôte, "dd/mm/yyyy"): Ferie = True '
N'est plus férier
Case Format(DateSerial(Z, 7, 14), "dd/mm/yyyy"): Ferie = True '
14 juillet
Case Format(DateSerial(Z, 5, 1), "dd/mm/yyyy"): Ferie = True '
1er Mai
Case Format(DateSerial(Z, 5, 8), "dd/mm/yyyy"): Ferie = True '
Victoire de 1945
Case Format(DateSerial(Z, 11, 11), "dd/mm/yyyy"): Ferie = True '
Armictice 1918
Case Format(DateSerial(Z, 8, 15), "dd/mm/yyyy"): Ferie = True '
Assomption
Case Format(DateSerial(Z, 11, 1), "dd/mm/yyyy"): Ferie = True '
Toussaint
Case Format(DateSerial(Z, 12, 25), "dd/mm/yyyy"): Ferie = True '
Noël
Case Format(DateSerial(Z, 1, 1), "dd/mm/yyyy"): Ferie = True '
Nouvel An
Case Else: Ferie = False
End Select


'On peut personnaliser : exemple date anniversaire...
'refaire les 4 lignes de code : If, ferie, Else, End If
'avec : DateSerial (Z, mois anniversaire, jour anniversaire)
'ça peut donner :
'Case DateSerial(Z, 5, 14) : ferie = true
'Msg_ferie = "Amélie " & Z - 1998 & " ans" 'ici, 1998 est l'année
de naissance bien sûr !


End Function

Patrick de Montpellier
Le #6328121

Bonjour,
Si le delai est toujours en jour alors dateadd("d",Delai,Date) est pour toi.
Merci.


Pour ce qui est des jours feriés il existe des fonctions qui te retourne
vrai si la date est fériée.
A toi de combiner les deux pour obtenir une date qui te vas
Perso voici la focntion que j'utilise pour le jours fériés
Option Compare Database
..........
End Function
Merci beacoup pour ton aide.


Je vais me servir probablement des deux pour faire ensuite des comparatifs
en fonctions des spécificités de chaque dépot de réception.

Bonne fin de journée.

Patrick

Publicité
Poster une réponse
Anonyme