IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Dlookup avec une date [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Dlookup avec une date
    Bonjour à tous,

    J'ai une "erreur" dans mon code. J'utilise Dlookup sur un tableau mais il me renvoie la mauvaise valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim strDate As Date
    strDate = Message.ReceivedTime
     
    If Not IsNull(DLookup("[Statut]", "Tableau", " [Reçu]=#" & strDate & "#")) Then
          oRst.Fields("Statut").Value = "Doublon"
    Else
          oRst.Fields("Statut").Value = "Importé"
    End If
    Il me renvoie null donc "Importé" à chaque fois alors que la date "Reçu" existe déjà dans ma table.
    Merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 350
    Points
    34 350
    Par défaut
    Salut,

    il faut preciser le format de ta date #MM/DD/YYYY#

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    J'ai testé avec les deux formats dd/mm/yyyy et mm/dd/yyyy mais sans succès tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            If Not IsNull(DLookup("[Statut]", "Tableau", "[Objet]='" & str & "' AND [Reçu]=#" & Format(strDate, "mm/dd/yyyy") & "#")) Then
                oRst.Fields("Statut").Value = "Doublon"
            Else
                oRst.Fields("Statut").Value = "Importé"
            End If

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 350
    Points
    34 350
    Par défaut
    Hum, tu mets une variable strDate, j'en deduis que tu recuperes une chaine de caracteres et non une date.

    Comment alimentes-tu ta variable strDate ?

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    La propriété ReveivedTime de l'objet message, renvoie la date et l'heure à laquelle le message a été reçu.

    Donc normalement, il faut un format complet pour les dates du style "mm/dd/yyyy hh:nn:ss" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim strDate As Date
    strDate = Message.ReceivedTime
     
       If Not IsNull(DLookup("[Statut]", "Tableau", "[Objet]='" & str & "' AND [Reçu]=#" & Format(strDate, "mm/dd/yyyy hh:nn:ss") & "#")) Then
          oRst.Fields("Statut").Value = "Doublon"
       Else
          oRst.Fields("Statut").Value = "Importé"
       End If
    A tester...

    Cdlt,

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    strDate est alimenté par la date d'un message d'Outlook comme decrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim strDate As Date
    strDate = Message.ReceivedTime
    La date est bien récupérée.

    En ce qui concerne le format avec l'heure testé et ça ne marche pas toujours pas.

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Peux-tu donner des exemples de valeurs stockées dans la colonne "Recu" de la table "Tableau" ?

    Peux-tu nous dire ce que contient la variable str ?
    Contient-elle une valeur ?

    Cdlt,

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Voici un exemple d'un enregistrement de mon "Tableau":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    N°	Reçu			
    81	20/06/2016 11:17:10
    Quand je fais afficher strDate (Important toujours le même mail pour test), il s'affiche : 20/06/2016 11:17:10
    Le champs Reçu est paramétré en tant que Date/Heure.

    Merci de vos aides.

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Et quand tu fais afficher la variable str ?

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Sinon, une autre piste pour savoir si c'est un doublon :

    tu utilises la propriété EntryID du message et ajoutes un champ IdEmail dans ta table "Tableau",

    tu mets à jour ce champ comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    oRst!IdEmail = Message.EntryID
    ...
    Et tu testes comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
       If Not IsNull(DLookup("[Statut]", "Tableau", " [IdEmail]='" & Message.EntryID & "'")) Then
    ...
    Cdlt,

  11. #11
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Quand je teste séparément la partie Objet et Reçu. La partie Objet marche parfaitement.
    C'est bien la partie Reçu qui pose problème.

    J'ai testé le EntryID mais celui ci me renvoie à chaque fois un vide.

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Citation Envoyé par MaiCaz Voir le message
    Quand je teste séparément la partie Objet et Reçu. La partie Objet marche parfaitement.
    C'est bien la partie Reçu qui pose problème.
    Essayer avec des numériques pour les dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     If Not IsNull(DLookup("[Statut]", "Tableau", " CDbl([Reçu])=" & CDbl(Message.ReceivedTime) )) Then
          oRst.Fields("Statut").Value = "Doublon"
       Else
          oRst.Fields("Statut").Value = "Importé"
       End If
    Citation Envoyé par MaiCaz Voir le message
    J'ai testé le EntryID mais celui ci me renvoie à chaque fois un vide.
    C'est normal, il faut alimenter la colonne EntryID avec les bons ID(s).

    Cdlt,

  13. #13
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Si je comprends bien, il me faut alimenter les colonnes par EntryID du message puis tester le Dlookup sur ce champ.
    Si c'est le cas, c'est ce que j'ai testé mais il n'extrait aucun EntryID du message.

    En ce qui concerne la conversion, il ne l'accepte pas pour le champ [Reçu].

    Merci encore.

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Oui,

    Il faut alimenter la table (le champ IDEmail) avec les bons ID(s).

    Personnellement, pour les dates j'avais eu le m^me problème et la seule solution que j'avais trouvée pour pouvoir comparer les dates sous Outlook et les dates sous Access, c'était en parcourant tous les enregistrements du recordset et en comparant à chaque fois comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    trouve=false
     
       do until oRst1.eof 'parcourt des email
     
          If (oRst1!Recu = CDate(Message.ReceivedTime)) Then
             trouve=true
          end if
     
          oRst1.movenext 
     
       Loop
     
     
       If Trouve Then
          oRst.Fields("Statut").Value = "Doublon"
       Else
          oRst.Fields("Statut").Value = "Importé"
       End If
     
       ...
    Cdlt,

  15. #15
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci.
    J'ai pris le même genre de solutions pour éviter ce problème de Dlookup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim rst As DAO.Recordset
            Dim dbl As Boolean
            Set rst = CurrentDb.OpenRecordset("SELECT [Statut] FROM [Tableau] WHERE [Reçu] = #" & strDate & "#", dbOpenSnapshot)
            dbl = IsNull(rst("Statut"))
     
            If Not (IsNull(DLookup("[Statut]", "Tableau", "[Objet]='" & str & "'")) Or dbl) Then
                oRst.Fields("Statut").Value = "Doublon"
            Else
                oRst.Fields("Statut").Value = "Importé"
            End If

  16. #16
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 424
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 424
    Points : 20 003
    Points
    20 003
    Billets dans le blog
    67
    Par défaut
    Bonsoir,

    J'ai quand même un doute et je me demande si le résultat ne vient pas du Or dans la condition, car normalement on utilise un peu les mêmes expressions dans le critère de la fonction DLookup et dans celui du sql.

    Cdlt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une date !!
    Par pilz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/04/2006, 12h35
  2. probleme avec une date
    Par somatino dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/03/2006, 16h56
  3. [JDBC] Requête avec une date sous la forme dd/MM/yyyy
    Par sylviefrfr dans le forum JDBC
    Réponses: 6
    Dernier message: 12/11/2005, 10h35
  4. Réponses: 2
    Dernier message: 16/08/2005, 16h33
  5. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 16h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo