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 :

Fonction DLookUp


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Par défaut Fonction DLookUp
    Bonjour
    J'ai deux tables:
    -Face (Code_face,usage_face,cumul)
    -Etat-Face(Code_Face,code_etat,date_etat, heure_etat)

    J'ai un sous formulaire lié à la table face dans le quel j'ai des cases à cocher (champ usage_face)
    Je veux bien désactiver la case à cocher si cette condition est vérifiée:
    Si [Code_etat]="Hors service" pour la date_etat la plus récente et l'heure_etat la plus récente aussi
    Pour cette raison j'ai écrit ce code ci-dessous sur la case à cocher (avant MAJ)
    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
    21
    22
    Private Sub Usage_face_BeforeUpdate(Cancel As Integer)
        Dim bd As Database
        Dim rec As Recordset
        Dim rec1 As Recordset
        Dim i As Long    'compteur sur la table "Face"
        i = 1
        Dim State As String
        Set bd = CurrentDb
        Set rec = bd.OpenRecordset("Etat-Face", DB_OPEN_DYNASET)
        Set rec1 = bd.OpenRecordset("Face", DB_OPEN_DYNASET)
        Dim Nbr1 As Long
        Nbr1 = rec1.RecordCount
        rec1.MoveFirst
        Do
            State = DLookup("[Code_etat]", "Etat-Face", "rec![Code_Face]=rec1![Code_Face] and rec![Date_etat]=max and rec![Heure_etat]=max")
            If State = "Hors service" Then
                Me.Usage_face.Enabled = False
            End If
            i = i + 1
            rec1.MoveNext
        Loop While (i <= Nbr1)
    End Sub
    Le problème est dans l'instruction suivante (fausse syntaxe)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    State = DLookup("[Code_etat]", "Etat-Face", "rec![Code_Face]=rec1![Code_Face] and rec![Date_etat]=max and rec![Heure_etat]=max")
    Comment je peux l'écrire correctement?
    Merci d'avance
    Cordialement

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 178
    Par défaut
    Bonjour,

    J'essaierai comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Do
     
         strCodeFace = rec1![Code_Face]
         State = DLookup("[Code_etat]", "Etat-Face", "[Code_Face]=" & strCodeFace & " and [Date_etat]='max' and [Heure_etat]='max'")
    en définissant strCodeFace en début de sub par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim strCodeFace as string
    max est bien une valeur texte des champs [Date_etat] et [Heure_etat] ?

    Bonne journée

  3. #3
    Membre très actif Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Par défaut
    D'abord merciiiiiiiiiiii beaucoup pour votre réponse
    Concernant le max c'est pas une valeur !! j'ai voulu dire tout simplement prendre la date la plus récente de ma table pour ce code d'état(le max des dates) et de même pour l'heure
    en faite un code_face peut avoir plusieurs états dans des dates différentes et moi je jeux récupérer juste l'état de la dernière date

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    Bonjour,

    Dans ce cas dlookup n'est pas adapté, il faut faire une requete du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select top 1 code_etat from ... where code_face= ... order by date_etat desc, heure_etat desc

  5. #5
    Membre très actif Avatar de Massiliya
    Femme Profil pro
    Ingénieur en génie industriel
    Inscrit en
    Mars 2017
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur en génie industriel
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2017
    Messages : 174
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Dans ce cas dlookup n'est pas adapté, il faut faire une requete du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select top 1 code_etat from ... where code_face= ... order by date_etat desc, heure_etat desc
    D'abord merci pour votre réponse
    En fait je suis pas habituée à travailler avec les requêtes donc je me permets de vous poser la question suivante:
    Est ce que je peux appeler et exécuter cette requête par mon code VBA??? Et si oui comment faire??
    Merci d'avance

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    Citation Envoyé par Massiliya Voir le message
    En fait je suis pas habituée à travailler avec les requêtes donc je me permets de vous poser la question suivante:
    Est ce que je peux appeler et exécuter cette requête par mon code VBA??? Et si oui comment faire??
    C'est un outil essentiel, on doit pouvoir trouver des tutos là dessus

    Voici un exemple (il faut une librairie DAO pour que ça compile) :
    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, Sr as string, moncode as string
    moncode="TOTO"
    Sr="SELECT top 1 code_etat from [Etat-Face] where code_face='" & moncode & "' order by date_etat desc, heure_etat desc;"
    msgbox Sr 'pour debug
    Set rst = CurrentDb.OpenRecordset(Sr)
    If rst.EOF Then 
      MsgBox "Code '" & moncode & "' inconnu !", vbInformation, ""
    else
      msbox rst!code_etat
    end if
    rst.close
    NB :
    - j'ai supposé que code_face était une string, je l'ai donc mis entre '
    - les tirets, espaces, accents... sont à banir des noms de champs

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

Discussions similaires

  1. utiliser la Fonction DLookup
    Par Rodchess dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/05/2007, 17h49
  2. Utilisation dela fonction DLookup
    Par bernez dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/05/2007, 18h25
  3. Fonction DLookUP > quelques soucis
    Par Gabrieel dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/04/2007, 10h23
  4. Critères de la fonction Dlookup
    Par Isabelle27 dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/03/2007, 20h42
  5. Probleme de filtre avec fonction Dlookup sur champ texte
    Par Piloupilou999 dans le forum Access
    Réponses: 5
    Dernier message: 27/01/2007, 22h41

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