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

Requête SQL avec fonctions date

4 réponses
Avatar
Georges
Bonjour,

je tente de faire fonctionner la requête SQL suivante dans une fonction VBA

Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesJoursPrésent (
Matricule, DébutMois, JoursTravail ) SELECT Personnel.Matricule, " &
CDate("1/" & Month(Date) - 1 & "/" & DLookup("Num", "Variables",
"Variable='Exercice'")) & " AS DébutMois,
Val(JoursTrav([DteContrat],[Sortie],Month(Date())-1)) AS JoursTravail FROM
Personnel WHERE (((Personnel.DteContrat)<= " & CDate("31/12/" &
DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
((Personnel.Sortie) Is Null Or (Personnel.Sortie)>= " & CDate("1/1/" &
DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
((Personnel.Unité)<>'4970' And (Personnel.Unité)<>'4971'));")
MyQuery.Execute

Le problème c'est que les fonction de date renvoient la valeur 0 et je ne
parviens pas à savoir ce qui ne va pas.

Merci de votre aide.

Cordialement
Georges

4 réponses

Avatar
Michel__D
Bonjour,

Georges a écrit :
Bonjour,

je tente de faire fonctionner la requête SQL suivante dans une fonction VBA

Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesJoursPrésent (
Matricule, DébutMois, JoursTravail ) SELECT Personnel.Matricule, " &
CDate("1/" & Month(Date) - 1 & "/" & DLookup("Num", "Variables",
"Variable='Exercice'")) & " AS DébutMois,
Val(JoursTrav([DteContrat],[Sortie],Month(Date())-1)) AS JoursTravail FROM
Personnel WHERE (((Personnel.DteContrat)<= " & CDate("31/12/" &
DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
((Personnel.Sortie) Is Null Or (Personnel.Sortie)>= " & CDate("1/1/" &
DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
((Personnel.Unité)<>'4970' And (Personnel.Unité)<>'4971'));")
MyQuery.Execute

Le problème c'est que les fonction de date renvoient la valeur 0 et je ne
parviens pas à savoir ce qui ne va pas.

Merci de votre aide.

Cordialement
Georges



Tu as essayé avec Date() au lieu de Date.
Avatar
Georges
Bonsoir,

j'ai essayé mais le résultat est identique.

Merci de ton intérêt.
Georges

"Michel__D" a écrit :

Bonjour,

Georges a écrit :
> Bonjour,
>
> je tente de faire fonctionner la requête SQL suivante dans une fonction VBA
>
> Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesJoursPrésent (
> Matricule, DébutMois, JoursTravail ) SELECT Personnel.Matricule, " &
> CDate("1/" & Month(Date) - 1 & "/" & DLookup("Num", "Variables",
> "Variable='Exercice'")) & " AS DébutMois,
> Val(JoursTrav([DteContrat],[Sortie],Month(Date())-1)) AS JoursTravail FROM
> Personnel WHERE (((Personnel.DteContrat)<= " & CDate("31/12/" &
> DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
> ((Personnel.Sortie) Is Null Or (Personnel.Sortie)>= " & CDate("1/1/" &
> DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
> ((Personnel.Unité)<>'4970' And (Personnel.Unité)<>'4971'));")
> MyQuery.Execute
>
> Le problème c'est que les fonction de date renvoient la valeur 0 et je ne
> parviens pas à savoir ce qui ne va pas.
>
> Merci de votre aide.
>
> Cordialement
> Georges

Tu as essayé avec Date() au lieu de Date.



Avatar
Chouette
Bonsoir,

Dans les sql de mes aplli, je transforme toujours les dates en dates
américaines MMDDYYYY pour avoir un résultat correct.

C'est une suggestion... en espérant vous avoir donné une vraie piste...

cordialement, Ch.

"Georges" a écrit :

Bonsoir,

j'ai essayé mais le résultat est identique.

Merci de ton intérêt.
Georges

"Michel__D" a écrit :

> Bonjour,
>
> Georges a écrit :
> > Bonjour,
> >
> > je tente de faire fonctionner la requête SQL suivante dans une fonction VBA
> >
> > Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesJoursPrésent (
> > Matricule, DébutMois, JoursTravail ) SELECT Personnel.Matricule, " &
> > CDate("1/" & Month(Date) - 1 & "/" & DLookup("Num", "Variables",
> > "Variable='Exercice'")) & " AS DébutMois,
> > Val(JoursTrav([DteContrat],[Sortie],Month(Date())-1)) AS JoursTravail FROM
> > Personnel WHERE (((Personnel.DteContrat)<= " & CDate("31/12/" &
> > DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
> > ((Personnel.Sortie) Is Null Or (Personnel.Sortie)>= " & CDate("1/1/" &
> > DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
> > ((Personnel.Unité)<>'4970' And (Personnel.Unité)<>'4971'));")
> > MyQuery.Execute
> >
> > Le problème c'est que les fonction de date renvoient la valeur 0 et je ne
> > parviens pas à savoir ce qui ne va pas.
> >
> > Merci de votre aide.
> >
> > Cordialement
> > Georges
>
> Tu as essayé avec Date() au lieu de Date.
>


Avatar
Georges
Bonjour,

effectivement c'était la solution. J'ai utilisé une fonction trouvée sur web
(je ne sais plus qui l'avait écrite :

Function DateUS(ByVal dt As Variant)
If IsNull(dt) Then Exit Function
DateUS = "#" & Month(dt) & "/" & Day(dt) & "/" & Year(dt) & "#"
End Function

Merci beaucoup.

"Chouette" a écrit :

Bonsoir,

Dans les sql de mes aplli, je transforme toujours les dates en dates
américaines MMDDYYYY pour avoir un résultat correct.

C'est une suggestion... en espérant vous avoir donné une vraie piste...

cordialement, Ch.

"Georges" a écrit :

> Bonsoir,
>
> j'ai essayé mais le résultat est identique.
>
> Merci de ton intérêt.
> Georges
>
> "Michel__D" a écrit :
>
> > Bonjour,
> >
> > Georges a écrit :
> > > Bonjour,
> > >
> > > je tente de faire fonctionner la requête SQL suivante dans une fonction VBA
> > >
> > > Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesJoursPrésent (
> > > Matricule, DébutMois, JoursTravail ) SELECT Personnel.Matricule, " &
> > > CDate("1/" & Month(Date) - 1 & "/" & DLookup("Num", "Variables",
> > > "Variable='Exercice'")) & " AS DébutMois,
> > > Val(JoursTrav([DteContrat],[Sortie],Month(Date())-1)) AS JoursTravail FROM
> > > Personnel WHERE (((Personnel.DteContrat)<= " & CDate("31/12/" &
> > > DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
> > > ((Personnel.Sortie) Is Null Or (Personnel.Sortie)>= " & CDate("1/1/" &
> > > DLookup("Num", "Variables", "Variable='Exercice'")) & ") AND
> > > ((Personnel.Unité)<>'4970' And (Personnel.Unité)<>'4971'));")
> > > MyQuery.Execute
> > >
> > > Le problème c'est que les fonction de date renvoient la valeur 0 et je ne
> > > parviens pas à savoir ce qui ne va pas.
> > >
> > > Merci de votre aide.
> > >
> > > Cordialement
> > > Georges
> >
> > Tu as essayé avec Date() au lieu de Date.
> >