Where ( ((WeekDay(NouvelleDATE, 2) Between 1 and 3) And (DateAdd("d", 2, NouvelleDate) > [v Date modifiée...])) Or ((WeekDay(NouvelleDATE, 2) Between 4 and 5) And (DateAdd("d", 4, NouvelleDate) > [v Date modifiée...])) Or ((WeekDay(NouvelleDATE, 2) = 6) And (DateAdd("d", 3, NouvelleDate) > [v Date modifiée...])) )A tester
Quel type de base de donnée ?
(DateAdd("d", 2, NouvelleDate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionClauseWHERE = ClauseWHERE & " And iif(Weekday(NouvelleDate)<=4,NouvelleDate +2,iif(Weekday(NouvelleDate)<=6,NouvelleDate +4,iif(Weekday(NouvelleDate)>6,NouvelleDate +3,NouvelleDate))) > [v Date modifiée accusé depart]"
Truc = Truc & "mon texte très " & _ "long, voire " & _ "très très long" & _ "Maxi : 21 séparateurs _ dans une chaine"Cela rendra lisible ton code sans être obligé de se déplacer latéralement.
Public Sub RefreshQuery() 'Public car appel extérieur (frmMàJ) Dim sql As String, ClauseWHERE As String sql = "SELECT tblSauvegardeTraitementCauseRetard.* FROM tblSauvegardeTraitementCauseRetard" 'Aménager la clause Where If Not Me.chkVArLigne Then ClauseWHERE = ClauseWHERE & "And [vAr-ligne] like '*" & Me.txtVArLigne & "*' " End If If Not Me.chkVRefClient Then ClauseWHERE = ClauseWHERE & "And vrefclientLigne like '*" & Me.txtVRefClient & "*' " End If If Not Me.chkClient Then ClauseWHERE ClauseWHERE & "And Client '" & Me.cmbClient & "' " End If If Not Me.chkADV Then ClauseWHERE ClauseWHERE & "And [v representant] '" & Me.cmbADV & "' " End If If Not Me.chkOF Then ClauseWHERE ClauseWHERE & "AND OF '" & Me.cmbOF & "' " End If Select Case Me.TypeTraitement Case 1 'Si la date à laquelle l'ADV à saisi le nouveau délai client (v Date derniere modification des dates accuses) est > à 'la date d'envoi de l'info par la production à l'ADV (Date du jour) 'Et si la NouvelleDate n'est pas null 'Et si la NouvelleDate est > à (v Date modifiée accusé depart) 'Le nouveau délai doit être traité par l'ADV ClauseWHERE = ClauseWHERE & " And [v Date derniere modification des dates accuses] < [Date du jour] AND NouvelleDate is not null" 'Test sur la NouvelleDate: + 2 jours si c'est un lundi, mardi, mercredi '''''''''''''''''''''''''''+ 4 jours si c'est jeudi et vendredi '''''''''''''''''''''''''''+ 3 jours si c'est un samedi 'ClauseWHERE = ClauseWHERE & " And iif(Weekday(NouvelleDate)<=4,NouvelleDate +2,iif(Weekday(NouvelleDate)<=6,NouvelleDate +4,iif(Weekday(NouvelleDate)>6,NouvelleDate +3,NouvelleDate))) > [v Date modifiée accusé depart]" ClauseWHERE = ClauseWHERE & " AND ( ((WeekDay(NouvelleDate, 2) Between 1 and 3) And" & _ " (DateAdd('d', 2, NouvelleDate) > [v Date modifiée accusé depart]))" & _ " Or ((WeekDay(NouvelleDATE, 2) Between 4 and 5) And" & _ " (DateAdd('d', 4, NouvelleDate) > [v Date modifiée accusé depart]))" & _ " Or ((WeekDay(NouvelleDate, 2) = 6) And" & _ " (DateAdd('d', 3, NouvelleDate) > [v Date modifiée accusé depart])) )" Case 2 ClauseWHERE = ClauseWHERE & " And NouvelleDate Is Null" End Select If Len(ClauseWHERE) = 0 Then GoTo AménagerLaQueueSQL Else ' supprimer le 1er And et Aménager la tête de clause ClauseWHERE = " Where " & Right(ClauseWHERE, Len(ClauseWHERE) - 3) sql = sql & ClauseWHERE End If AménagerLaQueueSQL: sql = sql & ";" Debug.Print sql Me.Sfrm.Form.RecordSource = sql Me.Sfrm.Form.Refresh End Sub
ClauseWHERE = ClauseWHERE & " And iif(Weekday(NouvelleDate)<=4,NouvelleDate +2,iif(Weekday(NouvelleDate)<=6,NouvelleDate +4,iif(Weekday(NouvelleDate)>6,NouvelleDate +3,NouvelleDate))) > [v Date modifiée accusé depart]"