Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

requete access update avec controle de date

6 réponses
Avatar
sleg
BOnjour,


je cherche une requete pour access pour faire un update d'un champ apr
rapport a une date au format jj/mm/aaaa hh:mm

mon champs date : dateres1
mon champs control : ola1

ce que je voudrais c'est si possible si l'information dee sateres1 est
superieur a now alors j'inscrit HD dans mon champs ola1, s'il est
inferieur de plus de 60 minutes je n'inscrit rien de mon champs ola1
et si mon champs dateres1 est inferieur a now -30 minutes j'inscrit
"warning".


est il possible de le faire en une seul requete ? sinon en plusieurs.

Merci de votre aide car la je ne suis pas capable de le faire.

6 réponses

Avatar
3stone
Salut,

"sleg"
| je cherche une requete pour access pour faire un update d'un champ apr
| rapport a une date au format jj/mm/aaaa hh:mm


On ne fait pas de "update" d'un champ calculé...
on le crée simplement dans une requête et à chaque exécution ou
rafraichissement de la requête, le champ calculé est "à jour".


| mon champs date : dateres1
| mon champs control : ola1
|
| ce que je voudrais c'est si possible si l'information dee sateres1 est
| superieur a now alors j'inscrit HD dans mon champs ola1, s'il est
| inferieur de plus de 60 minutes je n'inscrit rien de mon champs ola1
| et si mon champs dateres1 est inferieur a now -30 minutes j'inscrit
| "warning".


Pour ne pas écrire une série illisible de iif() il est plus simple d'utiliser
une petite fonction qui retourne la valeur désirée...

Colle la fonction suivante dans un module général.

Function fnAlerte(Dt As Variant) As String
Dim D As Date
If IsDate(Dt) Then
D = CDate(Dt)
If D > Now Then
fnAlerte = "HD"
ElseIf DateAdd("n", 30, D) > Now Then
fnAlerte = "Warning"
ElseIf DateAdd("n", 60, D) > Now Then
fnAlerte = ""
End If
Else
fnAlerte = ""
End If
End Function


et dans la requête, tu crées le champ calculé "ola1"


ola1: fnAlerte([dateres1])

PS: tu as un problème avec tes clauses...
tu as la période -30 à -60 non couverte ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
sleg
BOnjour,

merci je teste et te fais un retour

@bientot.




On 7 août, 16:54, "3stone" wrote:
Salut,

"sleg"
| je cherche une requete pour access pour faire un update d'un champ apr
| rapport a une date au format jj/mm/aaaa hh:mm

On ne fait pas de "update" d'un champ calculé...
on le crée simplement dans une requête et à chaque exécution ou
rafraichissement de la requête, le champ calculé est "à jour".

| mon champs date : dateres1
| mon champs control : ola1
|
| ce que je voudrais c'est si possible si l'information dee sateres1 est
| superieur a now alors j'inscrit HD dans mon champs ola1, s'il est
| inferieur de plus de 60 minutes je n'inscrit rien de mon champs ola1
| et si mon champs dateres1 est inferieur a now -30 minutes j'inscrit
| "warning".

Pour ne pas écrire une série illisible de iif() il est plus simple d' utiliser
une petite fonction qui retourne la valeur désirée...

Colle la fonction suivante dans un module général.

Function fnAlerte(Dt As Variant) As String
    Dim D As Date
    If IsDate(Dt) Then
        D = CDate(Dt)
        If D > Now Then
            fnAlerte = "HD"
        ElseIf DateAdd("n", 30, D) > Now Then
            fnAlerte = "Warning"
        ElseIf DateAdd("n", 60, D) > Now Then
            fnAlerte = ""
        End If
    Else
        fnAlerte = ""
    End If
End Function

et dans la requête, tu crées le champ calculé "ola1"

    ola1: fnAlerte([dateres1])

PS: tu as un problème avec tes clauses...
      tu as la période -30 à -60 non couverte ;-)

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)


Avatar
sleg
une petite question je ne connais pas trop access , ola1:
fnAlerte([dateres1]) cette ligne je l'integre comment ? j'ai un
formulaire qui lance mes requete voici les lignes de code :

Private Sub Form_Timer()
If Format(Date, "yyyymmdd") > Format(Nz(DMax("DateExec",
"tblExecute"), 0), "yyyymmdd") Then
'If Date > Nz(DMax("DateExec", "tblExecute"), 0) Then
If Time > #6:43:00 AM# Then
'Me.TimerInterval = 3600000
Me.TimerInterval = 60000
DoCmd.OpenQuery "Delete table"
DoCmd.RunMacro "Import"
DoCmd.OpenQuery "01_delete demande"
DoCmd.OpenQuery "02_delete demande"
DoCmd.OpenQuery "03_delete_demande"
CurrentDb.Execute "Insert Into tblExecute (DateExec) Values
(#" & Date & "#);"
End If
End If
End Sub



merci de ton aide.

On 7 août, 16:54, "3stone" wrote:
Salut,

"sleg"
| je cherche une requete pour access pour faire un update d'un champ apr
| rapport a une date au format jj/mm/aaaa hh:mm

On ne fait pas de "update" d'un champ calculé...
on le crée simplement dans une requête et à chaque exécution ou
rafraichissement de la requête, le champ calculé est "à jour".

| mon champs date : dateres1
| mon champs control : ola1
|
| ce que je voudrais c'est si possible si l'information dee sateres1 est
| superieur a now alors j'inscrit HD dans mon champs ola1, s'il est
| inferieur de plus de 60 minutes je n'inscrit rien de mon champs ola1
| et si mon champs dateres1 est inferieur a now -30 minutes j'inscrit
| "warning".

Pour ne pas écrire une série illisible de iif() il est plus simple d' utiliser
une petite fonction qui retourne la valeur désirée...

Colle la fonction suivante dans un module général.

Function fnAlerte(Dt As Variant) As String
    Dim D As Date
    If IsDate(Dt) Then
        D = CDate(Dt)
        If D > Now Then
            fnAlerte = "HD"
        ElseIf DateAdd("n", 30, D) > Now Then
            fnAlerte = "Warning"
        ElseIf DateAdd("n", 60, D) > Now Then
            fnAlerte = ""
        End If
    Else
        fnAlerte = ""
    End If
End Function

et dans la requête, tu crées le champ calculé "ola1"

    ola1: fnAlerte([dateres1])

PS: tu as un problème avec tes clauses...
      tu as la période -30 à -60 non couverte ;-)

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)


Avatar
3stone
Salut,

Ah oui, rouler en voiture, mais on ne trouve pas le démarreur ;-)

Crée ta requête avec le requêteur graphique, ensuite tu bascule
en affichage SQL...

Mais je répète que tes critères ne sont pas correct...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



"sleg"
une petite question je ne connais pas trop access , ola1:
fnAlerte([dateres1]) cette ligne je l'integre comment ? j'ai un
formulaire qui lance mes requete voici les lignes de code :

Private Sub Form_Timer()
If Format(Date, "yyyymmdd") > Format(Nz(DMax("DateExec",
"tblExecute"), 0), "yyyymmdd") Then
'If Date > Nz(DMax("DateExec", "tblExecute"), 0) Then
If Time > #6:43:00 AM# Then
'Me.TimerInterval = 3600000
Me.TimerInterval = 60000
DoCmd.OpenQuery "Delete table"
DoCmd.RunMacro "Import"
DoCmd.OpenQuery "01_delete demande"
DoCmd.OpenQuery "02_delete demande"
DoCmd.OpenQuery "03_delete_demande"
CurrentDb.Execute "Insert Into tblExecute (DateExec) Values
(#" & Date & "#);"
End If
End If
End Sub



merci de ton aide.

On 7 août, 16:54, "3stone" wrote:
Salut,

"sleg"
| je cherche une requete pour access pour faire un update d'un champ apr
| rapport a une date au format jj/mm/aaaa hh:mm

On ne fait pas de "update" d'un champ calculé...
on le crée simplement dans une requête et à chaque exécution ou
rafraichissement de la requête, le champ calculé est "à jour".

| mon champs date : dateres1
| mon champs control : ola1
|
| ce que je voudrais c'est si possible si l'information dee sateres1 est
| superieur a now alors j'inscrit HD dans mon champs ola1, s'il est
| inferieur de plus de 60 minutes je n'inscrit rien de mon champs ola1
| et si mon champs dateres1 est inferieur a now -30 minutes j'inscrit
| "warning".

Pour ne pas écrire une série illisible de iif() il est plus simple d'utiliser
une petite fonction qui retourne la valeur désirée...

Colle la fonction suivante dans un module général.

Function fnAlerte(Dt As Variant) As String
Dim D As Date
If IsDate(Dt) Then
D = CDate(Dt)
If D > Now Then
fnAlerte = "HD"
ElseIf DateAdd("n", 30, D) > Now Then
fnAlerte = "Warning"
ElseIf DateAdd("n", 60, D) > Now Then
fnAlerte = ""
End If
Else
fnAlerte = ""
End If
End Function

et dans la requête, tu crées le champ calculé "ola1"

ola1: fnAlerte([dateres1])

PS: tu as un problème avec tes clauses...
tu as la période -30 à -60 non couverte ;-)

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)


Avatar
sleg
BOnjour,

oui ça je connais je parlais de ta ligne je la copie ou dans la r
equete ?? ;-))


On 8 août, 22:46, "3stone" wrote:
Salut,

Ah oui, rouler en voiture, mais on ne trouve pas le démarreur ;-)

Crée ta requête avec le requêteur graphique, ensuite tu bascule
en affichage SQL...

Mais je répète que tes critères ne sont pas correct...

--
A+
Pierre (3stone) Access MVP
Perso:http://www.3stone.be/
MPFA:http://www.mpfa.info/ (infos générales)

"sleg"
une petite question je ne connais pas trop access ,  ola1:
fnAlerte([dateres1])  cette ligne je l'integre comment ? j'ai un
formulaire qui lance mes requete voici les lignes de code :

Private Sub Form_Timer()
If Format(Date, "yyyymmdd") > Format(Nz(DMax("DateExec",
"tblExecute"), 0), "yyyymmdd") Then
'If Date > Nz(DMax("DateExec", "tblExecute"), 0) Then
        If Time > #6:43:00 AM# Then
        'Me.TimerInterval = 3600000
        Me.TimerInterval = 60000
DoCmd.OpenQuery "Delete table"
DoCmd.RunMacro "Import"
DoCmd.OpenQuery "01_delete demande"
DoCmd.OpenQuery "02_delete demande"
DoCmd.OpenQuery "03_delete_demande"
        CurrentDb.Execute "Insert Into tblExecute (DateExec) Valu es
(#" & Date & "#);"
        End If
    End If
End Sub

merci de ton aide.

On 7 août, 16:54, "3stone" wrote:



> Salut,

> "sleg"
> | je cherche une requete pour access pour faire un update d'un champ ap r
> | rapport a une date au format jj/mm/aaaa hh:mm

> On ne fait pas de "update" d'un champ calculé...
> on le crée simplement dans une requête et à chaque exécution ou
> rafraichissement de la requête, le champ calculé est "à jour".

> | mon champs date : dateres1
> | mon champs control : ola1
> |
> | ce que je voudrais c'est si possible si l'information dee sateres1 es t
> | superieur a now alors j'inscrit HD dans mon champs ola1, s'il est
> | inferieur de plus de 60 minutes je n'inscrit rien de mon champs ola1
> | et si mon champs dateres1 est inferieur a now -30 minutes j'inscrit
> | "warning".

> Pour ne pas écrire une série illisible de iif() il est plus simple d'utiliser
> une petite fonction qui retourne la valeur désirée...

> Colle la fonction suivante dans un module général.

> Function fnAlerte(Dt As Variant) As String
> Dim D As Date
> If IsDate(Dt) Then
> D = CDate(Dt)
> If D > Now Then
> fnAlerte = "HD"
> ElseIf DateAdd("n", 30, D) > Now Then
> fnAlerte = "Warning"
> ElseIf DateAdd("n", 60, D) > Now Then
> fnAlerte = ""
> End If
> Else
> fnAlerte = ""
> End If
> End Function

> et dans la requête, tu crées le champ calculé "ola1"

> ola1: fnAlerte([dateres1])

> PS: tu as un problème avec tes clauses...
> tu as la période -30 à -60 non couverte ;-)

> --
> A+
> Pierre (3stone) Access MVP
> Perso:http://www.3stone.be/
> MPFA:http://www.mpfa.info/(infos générales)- Masquer le texte des m essages précédents -

- Afficher le texte des messages précédents -


Avatar
3stone
Salut,

"sleg"
oui ça je connais je parlais de ta ligne je la copie ou dans la r
equete ?? ;-))


Et bien, à l'endroit d'un champ, pour créer ce fameux champ calculé...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)