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

Requête SQL avec Date

4 réponses
Avatar
Georges
Bonsoir,

encore un problème de date avec un requête SQL en VBA.
La date est bien au format US mais ça plante, alors que la même requête dans
l'onglet de la base fonctionne.

Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesPaie ( Salarié,
Absence, Début, Fin, MoisPaie, Ouvrés ) SELECT Evènements.Salarié,
Evènements.Absence, [Clôture]+1 AS Début, Evènements.Fin," &
DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & " AS MoisPaie,
Work_Days([Début],[Fin],6) AS Ouvrés FROM Evènements, Calendrier WHERE
(((IIf([Début]<=[DébutPériode] And
[Fin]>[Clôture],[Calendrier]![MoisPaie],Null)) Is Not Null));")
MyQuery.Execute

J'ai aussi tenté de la faire fonctionner sans mettre la date au format US
mais le résultat est identique.

Dans une autre routine j'utilise aussi un format date US et c'est OK.

Si je remplace la section " & DateUS(CDate("1/" & Month([Fin]) & "/" &
Year([Fin]))) & " par une date comme #01/01/2009# cela fonctionne. J'ai aussi
tenté #" & DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & "# sans
plus de résultat.

Où est ce que je me trompe ?

Merci de votre éclairage.
Georges

4 réponses

Avatar
Michel__D
Bonjour,

"Georges" a écrit dans le message de news:
Bonsoir,

encore un problème de date avec un requête SQL en VBA.
La date est bien au format US mais ça plante, alors que la même requête dans
l'onglet de la base fonctionne.

Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesPaie ( Salarié,
Absence, Début, Fin, MoisPaie, Ouvrés ) SELECT Evènements.Salarié,
Evènements.Absence, [Clôture]+1 AS Début, Evènements.Fin," &
DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & " AS MoisPaie,
Work_Days([Début],[Fin],6) AS Ouvrés FROM Evènements, Calendrier WHERE
(((IIf([Début]<=[DébutPériode] And
[Fin]>[Clôture],[Calendrier]![MoisPaie],Null)) Is Not Null));")
MyQuery.Execute

J'ai aussi tenté de la faire fonctionner sans mettre la date au format US
mais le résultat est identique.

Dans une autre routine j'utilise aussi un format date US et c'est OK.

Si je remplace la section " & DateUS(CDate("1/" & Month([Fin]) & "/" &
Year([Fin]))) & " par une date comme #01/01/2009# cela fonctionne. J'ai aussi
tenté #" & DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & "# sans
plus de résultat.

Où est ce que je me trompe ?

Merci de votre éclairage.



Essaye avec ceci

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Evènements.Salarié]" & _
", [Evènements.Absence]" & _
", [Clôture]+1" & _
", Evènements.Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]))) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM Evènements, Calendrier" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];")

CurrentDb.Execute SQL

PS:Je pense que [Calendrier] ne sert à rien à moins qu'il y ai une erreur dans
l'énoncé du problème.
Avatar
Michel__D
"Michel__D" a écrit dans le message de news:geeget$skr$
Bonjour,

"Georges" a écrit dans le message de


news:
> Bonsoir,
>
> encore un problème de date avec un requête SQL en VBA.
> La date est bien au format US mais ça plante, alors que la même requête dans
> l'onglet de la base fonctionne.
>
> Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesPaie ( Salarié,
> Absence, Début, Fin, MoisPaie, Ouvrés ) SELECT Evènements.Salarié,
> Evènements.Absence, [Clôture]+1 AS Début, Evènements.Fin," &
> DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & " AS MoisPaie,
> Work_Days([Début],[Fin],6) AS Ouvrés FROM Evènements, Calendrier WHERE
> (((IIf([Début]<=[DébutPériode] And
> [Fin]>[Clôture],[Calendrier]![MoisPaie],Null)) Is Not Null));")
> MyQuery.Execute
>
> J'ai aussi tenté de la faire fonctionner sans mettre la date au format US
> mais le résultat est identique.
>
> Dans une autre routine j'utilise aussi un format date US et c'est OK.
>
> Si je remplace la section " & DateUS(CDate("1/" & Month([Fin]) & "/" &
> Year([Fin]))) & " par une date comme #01/01/2009# cela fonctionne. J'ai aussi
> tenté #" & DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & "# sans
> plus de résultat.
>
> Où est ce que je me trompe ?
>
> Merci de votre éclairage.

Essaye avec ceci

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Evènements.Salarié]" & _
", [Evènements.Absence]" & _
", [Clôture]+1" & _
", Evènements.Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]))) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM Evènements, Calendrier" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];")

CurrentDb.Execute SQL

PS:Je pense que [Calendrier] ne sert à rien à moins qu'il y ai une erreur dans
l'énoncé du problème.



Ooups, quelques corrections

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Evènements].[Salarié]" & _
", [Evènements].Absence" & _
", [Clôture]+1" & _
", [Evènements].Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]))) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM [Evènements], Calendrier" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];")

CurrentDb.Execute SQL

et dans la mesure ou tous tes champs sont issus de la même origine.

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Salarié]" & _
", Absence" & _
", [Clôture]+1" & _
", Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]))) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM [Evènements]" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];")

CurrentDb.Execute SQL
Avatar
Michel__D
"Michel__D" a écrit dans le message de news:geeguj$spf$

"Michel__D" a écrit dans le message de news:geeget$skr$
> Bonjour,
>
> "Georges" a écrit dans le message de
news:
> > Bonsoir,
> >
> > encore un problème de date avec un requête SQL en VBA.
> > La date est bien au format US mais ça plante, alors que la même requête dans
> > l'onglet de la base fonctionne.
> >
> > Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesPaie ( Salarié,
> > Absence, Début, Fin, MoisPaie, Ouvrés ) SELECT Evènements.Salarié,
> > Evènements.Absence, [Clôture]+1 AS Début, Evènements.Fin," &
> > DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & " AS MoisPaie,
> > Work_Days([Début],[Fin],6) AS Ouvrés FROM Evènements, Calendrier WHERE
> > (((IIf([Début]<=[DébutPériode] And
> > [Fin]>[Clôture],[Calendrier]![MoisPaie],Null)) Is Not Null));")
> > MyQuery.Execute
> >
> > J'ai aussi tenté de la faire fonctionner sans mettre la date au format US
> > mais le résultat est identique.
> >
> > Dans une autre routine j'utilise aussi un format date US et c'est OK.
> >
> > Si je remplace la section " & DateUS(CDate("1/" & Month([Fin]) & "/" &
> > Year([Fin]))) & " par une date comme #01/01/2009# cela fonctionne. J'ai aussi
> > tenté #" & DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & "# sans
> > plus de résultat.
> >
> > Où est ce que je me trompe ?
> >
> > Merci de votre éclairage.
>
> Essaye avec ceci
>
> SQL = "INSERT INTO [DonnéesPaie]" & _
> "( [Salarié]" & _
> ", Absence" & _
> ", [Début]" & _
> ", Fin" & _
> ", MoisPaie" & _
> ", [Ouvrés] )" & _
> " SELECT [Evènements.Salarié]" & _
> ", [Evènements.Absence]" & _
> ", [Clôture]+1" & _
> ", Evènements.Fin" & _
> ",#" & Month([Fin]) & "/1/" & Year([Fin]))) & "#" & _
> ", " & Work_Days([Début],[Fin],6) & _
> " FROM Evènements, Calendrier" & _
> " WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];")
>
> CurrentDb.Execute SQL
>
> PS:Je pense que [Calendrier] ne sert à rien à moins qu'il y ai une erreur dans
> l'énoncé du problème.



Décidément, encore quelques corrections.

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Evènements].[Salarié]" & _
", [Evènements].Absence" & _
", [Clôture]+1" & _
", [Evènements].Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM [Evènements], Calendrier" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];"

CurrentDb.Execute SQL

et dans la mesure ou les champs sont issus de [Evènements].

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Salarié]" & _
", Absence" & _
", [Clôture]+1" & _
", Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM [Evènements]" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];"

CurrentDb.Execute SQL
Avatar
Georges
Bonsoir,

merci de ton aide. Je regarde ce que cela donne et je te dis.

Cordialement
Georges

"Michel__D" a écrit :


"Michel__D" a écrit dans le message de news:geeguj$spf$
>
> "Michel__D" a écrit dans le message de news:geeget$skr$
> > Bonjour,
> >
> > "Georges" a écrit dans le message de
> news:
> > > Bonsoir,
> > >
> > > encore un problème de date avec un requête SQL en VBA.
> > > La date est bien au format US mais ça plante, alors que la même requête dans
> > > l'onglet de la base fonctionne.
> > >
> > > Set MyQuery = MyDB.CreateQueryDef("", "INSERT INTO DonnéesPaie ( Salarié,
> > > Absence, Début, Fin, MoisPaie, Ouvrés ) SELECT Evènements.Salarié,
> > > Evènements.Absence, [Clôture]+1 AS Début, Evènements.Fin," &
> > > DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & " AS MoisPaie,
> > > Work_Days([Début],[Fin],6) AS Ouvrés FROM Evènements, Calendrier WHERE
> > > (((IIf([Début]<=[DébutPériode] And
> > > [Fin]>[Clôture],[Calendrier]![MoisPaie],Null)) Is Not Null));")
> > > MyQuery.Execute
> > >
> > > J'ai aussi tenté de la faire fonctionner sans mettre la date au format US
> > > mais le résultat est identique.
> > >
> > > Dans une autre routine j'utilise aussi un format date US et c'est OK.
> > >
> > > Si je remplace la section " & DateUS(CDate("1/" & Month([Fin]) & "/" &
> > > Year([Fin]))) & " par une date comme #01/01/2009# cela fonctionne. J'ai aussi
> > > tenté #" & DateUS(CDate("1/" & Month([Fin]) & "/" & Year([Fin]))) & "# sans
> > > plus de résultat.
> > >
> > > Où est ce que je me trompe ?
> > >
> > > Merci de votre éclairage.
> >
> > Essaye avec ceci
> >
> > SQL = "INSERT INTO [DonnéesPaie]" & _
> > "( [Salarié]" & _
> > ", Absence" & _
> > ", [Début]" & _
> > ", Fin" & _
> > ", MoisPaie" & _
> > ", [Ouvrés] )" & _
> > " SELECT [Evènements.Salarié]" & _
> > ", [Evènements.Absence]" & _
> > ", [Clôture]+1" & _
> > ", Evènements.Fin" & _
> > ",#" & Month([Fin]) & "/1/" & Year([Fin]))) & "#" & _
> > ", " & Work_Days([Début],[Fin],6) & _
> > " FROM Evènements, Calendrier" & _
> > " WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];")
> >
> > CurrentDb.Execute SQL
> >
> > PS:Je pense que [Calendrier] ne sert à rien à moins qu'il y ai une erreur dans
> > l'énoncé du problème.

Décidément, encore quelques corrections.

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Evènements].[Salarié]" & _
", [Evènements].Absence" & _
", [Clôture]+1" & _
", [Evènements].Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM [Evènements], Calendrier" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];"

CurrentDb.Execute SQL

et dans la mesure ou les champs sont issus de [Evènements].

SQL = "INSERT INTO [DonnéesPaie]" & _
"( [Salarié]" & _
", Absence" & _
", [Début]" & _
", Fin" & _
", MoisPaie" & _
", [Ouvrés] )" & _
" SELECT [Salarié]" & _
", Absence" & _
", [Clôture]+1" & _
", Fin" & _
",#" & Month([Fin]) & "/1/" & Year([Fin]) & "#" & _
", " & Work_Days([Début],[Fin],6) & _
" FROM [Evènements]" & _
" WHERE [Début]<=[DébutPériode] And [Fin]>[Clôture];"

CurrentDb.Execute SQL