Query adodb access problème extraction date/heure

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 10 avril 2008 à 13:54
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 10 avril 2008 à 15:22
 Bonjour à tous,

Dans une base access, je recherche la date/heure d'exécution d'un job, à partir d'une date passée en argument.
Le champ AMJ est de type Date/Heure.
La variable ArgDate est de type Date.

ArgDate = CDate(Date-1)

   Db.Open  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cstBaseDIA7
   strQuery "SELECT JOBID,AMJ FROM JOB WHERE JOBID 'SAUV-CRZ' AND " &_
              "AMJ > DateValue('" & ArgDate & "')"

   Rs.Open strQuery ,Db
   strDateDeb = Rs.Fields("AMJ")
   Rs.Close

   MsgBox strDateDeb,,"verif strDateDeb"   ' me retourne 09/04/2008 07:09:02
  
Puis, je souhaite extraire tous les JOBID dont la date AMJ est supérieure à la date strDateDeb.

   'Selection de tous les jobs dont la date/heure début est > à strDateDeb

   strQuery = "SELECT JOBID,RON,AMJ,DATE_FIN,ABORT FROM JOB WHERE " &_
              "AMJ > DateValue('" & strDateDeb & "')" & " ORDER BY AMJ"

             
   Rs.Open strQuery ,Db
   Do While Not Rs.EOF

      Dim strDicoKey
      strDicoKey =  Rs.Fields("JOBID")  & "|" & Rs.Fields("RON")       & "|" &_
                    Rs.Fields("AMJ")    & "|" & Rs.Fields("DATE_FIN")  & "|" &_
                    Rs.Fields("ABORT") 
     
      msgbox strDicoKey

La seconde requête m'extrait les jobs dont la date est >= à jj/mm/aaaa de la variable strDateDeb
et ne tient pas compte de l'heure.

Exemple:09/04/2008 00:09:02

      objDico_ALL_JOBS.Add strDicoKey, ""
      Rs.MoveNext
   Loop
   Rs.Close

Quelle pourrait-être la syntaxe pour extraire les enregistrements dont la date/heure est supérieure à strDateDeb ?
Est-il possible d'utiliser la fonction
DateDiff et valeur 
"s"
dans la quéry ?

Merci de vos suggestions.

jean-marc

1 réponse

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
10 avril 2008 à 15:22
Re,

Concernant la fonction Datevalue, le RunTime Access indique:

Si l'argument date est une chaîne composée uniquement
de nombres séparés par des séparateurs de date valides, la fonction DateValue
reconnaît l'ordre pour le jour, le mois et l'année en fonction du format Date
courte que vous avez défini pour votre système.
La fonction DateValue reconnaît
également les dates non ambiguës contenant des noms de mois sous forme complète
ou abrégée.
Par exemple, la fonction DateValue reconnaît non seulement
30/12/1991 et 30/12/91, mais aussi 30 décembre 1991 et 30-déc-1991
Si l'argument date comprend une indication d'heure, la
fonction DateValue ne la renvoie pas.
Si, toutefois, l'heure indiquée dans
l'argument date n'est pas valide (par exemple, "89:98"), une erreur se
produit.

msgbox DateValue("10-Avr-08") &vbCr&_
       DateValue("10-Avr-08 2:39:49 AM") &vbCr&_
       DateValue("10-Avr")  ' retournent 04/10/2008

Ce qui explique que "ma" première query retourne le résultat souhaité et que la seconde quéry ne prend en compte que la notion jj/mm/aaaa.

Suis-je donc obligé d'ajouter un DateDiff dans la boucle Do ... Loop  ou un If avec FormatDateTime ?

jean-marc
0
Rejoignez-nous