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

Update avec valeur récupérée dans InputBox qui ne met pas à jour un champ date

4 réponses
Avatar
Bear76
Bonsoir à la communauté,

J'ai une requête update en vba qui n'exécute pas correctement la mise à
jour d'un champ date via une valeur récupérée dans une InputBox.
Quelque soit la date saisie, le résultat dans ma table est 31/12/1899

Private Sub CaptureDate()

Dim SqlStr As String
Dim Datestr As String
Dim DateVal As Date

StrDate = Eval("InputBox(""Saisir la date de transfert au format
jj/mm/aaaa"",""Attention !"",date())")
If Not IsDate(DateStr) Then
MsgBox "La date saisie est incorrecte", vbCritical
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
SqlStr = "UPDATE T01 SET T01_DATE =" & DateStr
CurrentDb.Execute (SqlStr)
End If
End Sub

Si quelqu'un a une idée.
Merci d'avance.

4 réponses

Avatar
db
Bear76 a écrit :
Bonsoir à la communauté,

J'ai une requête update en vba qui n'exécute pas correctement la mise à
jour d'un champ date via une valeur récupérée dans une InputBox. Quelque
soit la date saisie, le résultat dans ma table est 31/12/1899

Private Sub CaptureDate()

Dim SqlStr As String
Dim Datestr As String
Dim DateVal As Date

StrDate = Eval("InputBox(""Saisir la date de transfert au format
jj/mm/aaaa"",""Attention !"",date())")
If Not IsDate(DateStr) Then
MsgBox "La date saisie est incorrecte", vbCritical
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
SqlStr = "UPDATE T01 SET T01_DATE =" & DateStr
CurrentDb.Execute (SqlStr)
End If
End Sub

Si quelqu'un a une idée.
Merci d'avance.






Peut-être en remplaçant :
StrDate = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")
par
DateStr = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")

et, le cas échéant, en ajoutant la ligne :
Option explicit
au début du module

db
Avatar
Bear76
db a exposé le 17/10/2009 :
Bear76 a écrit :
Bonsoir à la communauté,

J'ai une requête update en vba qui n'exécute pas correctement la mise à
jour d'un champ date via une valeur récupérée dans une InputBox. Quelque
soit la date saisie, le résultat dans ma table est 31/12/1899

Private Sub CaptureDate()

Dim SqlStr As String
Dim Datestr As String
Dim DateVal As Date

StrDate = Eval("InputBox(""Saisir la date de transfert au format
jj/mm/aaaa"",""Attention !"",date())")
If Not IsDate(DateStr) Then
MsgBox "La date saisie est incorrecte", vbCritical
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
SqlStr = "UPDATE T01 SET T01_DATE =" & DateStr
CurrentDb.Execute (SqlStr)
End If
End Sub

Si quelqu'un a une idée.
Merci d'avance.






Peut-être en remplaçant :
StrDate = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")
par
DateStr = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")

et, le cas échéant, en ajoutant la ligne :
Option explicit
au début du module

db



Bonjour db,
En fait, j'ai placé plusieurs debug.print dans la procédure pour
m'assurer que cela "fonctionne".
...
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
debug.print DateStr
End If
End Sub
me retourne bien une date au format jj/mm/aaaa, et en le (debug.print
SqlStr) plaçant après SqlStr = "UPDATE ... il me retourne bien la date
aussi. Donc là ...

Le champ de ma table est bien de type Date/Heure au format Date, abrégé
et je suis sous AC2007.

Si vous avez une autre idée, je suis preneur.
Bon dimanche.
Avatar
db
Bear76 a écrit :
db a exposé le 17/10/2009 :
StrDate = Eval("InputBox(""Saisir la date de transfert au format
jj/mm/aaaa"",""Attention !"",date())")
If Not IsDate(DateStr) Then
MsgBox "La date saisie est incorrecte", vbCritical
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
SqlStr = "UPDATE T01 SET T01_DATE =" & DateStr
CurrentDb.Execute (SqlStr)
End If
End Sub



Peut-être en remplaçant :
StrDate = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")
par
DateStr = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")

et, le cas échéant, en ajoutant la ligne :
Option explicit
au début du module

db



Bonjour db,
En fait, j'ai placé plusieurs debug.print dans la procédure pour
m'assurer que cela "fonctionne".
....
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
debug.print DateStr
End If
End Sub
me retourne bien une date au format jj/mm/aaaa, et en le (debug.print
SqlStr) plaçant après SqlStr = "UPDATE ... il me retourne bien la date
aussi. Donc là ...



Et ça retourne bien la date saisie dans StrDate ? Alors là, c'est que
l'informatique est encore plus magique que je croyais :-)

Sinon, DateVal ne me semble pas servir à grand'chose. Je crois que
j'écriras :

DateStr = Format(DateStr, "mm/dd/yyyy") 'Format américain
SqlStr = "UPDATE T01 SET T01_DATE = #" & DateStr & # 'Date encadrée
par des #

Et, pour mieux voir le message d'erreur de l'instruction update :

au lieu de CurrentDb.Execute (SqlStr)
mettre :
Docmd.RunSql SqlStr

db
Avatar
Bear76
db a utilisé son clavier pour écrire :
Bear76 a écrit :
db a exposé le 17/10/2009 :
StrDate = Eval("InputBox(""Saisir la date de transfert au format
jj/mm/aaaa"",""Attention !"",date())")
If Not IsDate(DateStr) Then
MsgBox "La date saisie est incorrecte", vbCritical
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
SqlStr = "UPDATE T01 SET T01_DATE =" & DateStr
CurrentDb.Execute (SqlStr)
End If
End Sub



Peut-être en remplaçant :
StrDate = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")
par
DateStr = Eval("InputBox(""Saisir la date de transfert au format >
jj/mm/aaaa"",""Attention !"",date())")

et, le cas échéant, en ajoutant la ligne :
Option explicit
au début du module

db



Bonjour db,
En fait, j'ai placé plusieurs debug.print dans la procédure pour m'assurer
que cela "fonctionne".
....
Else
DateVal = DateValue(DateStr)
DateStr = Format(DateVal, "dd/mm/yyyy")
debug.print DateStr
End If
End Sub
me retourne bien une date au format jj/mm/aaaa, et en le (debug.print
SqlStr) plaçant après SqlStr = "UPDATE ... il me retourne bien la date
aussi. Donc là ...



Et ça retourne bien la date saisie dans StrDate ? Alors là, c'est que
l'informatique est encore plus magique que je croyais :-)

Sinon, DateVal ne me semble pas servir à grand'chose. Je crois que j'écriras
:

DateStr = Format(DateStr, "mm/dd/yyyy") 'Format américain
SqlStr = "UPDATE T01 SET T01_DATE = #" & DateStr & # 'Date encadrée par
des #

Et, pour mieux voir le message d'erreur de l'instruction update :

au lieu de CurrentDb.Execute (SqlStr)
mettre :
Docmd.RunSql SqlStr

db



Bonjour db,
Effectivement, il faut borner les dates avec des # (=#" & StrDate &
"#")
Merci beaucoup.