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 :

VBA : Comment ajouter un critère de filtre dans une requête


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut VBA : Comment ajouter un critère de filtre dans une requête
    Bonjour,

    Je vais poser ma question d'hier soir d'une façon plus "naïve"
    1)Comment ajouter un critére de filtre d'un champ d'une requête (DAO)
    2)Comment l'annuler

    Merci

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    tu as plusieurs solutions, chaque solution dépendant de la technologie que tu vas mettre en place.

    • DAO
      tu peux utiliser les méthodes FindFirst et FindNext sur ton recordset

    • ADO
      tu peux utiliser la méthode Filter


    • DAO & ADO
      Tu peux utiliser une requête(QueryDef) paramétrée, et passer par la propriété Value de ton objet Parameter pour définir ton critère de sélection. Ensuite, tu obtiens le recordset directement depuis ton QueryDef

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Merci pour ta réponse,
    J'ai utilisé la 3iéme méthode, j'arrive bien à passer le paramétre, mais je ne sais pas récupérer ensuite la valeur du champ "dossard"
    Voici mon code et le SQL de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ChercheDossardMax(c)
        Dim SérieDossard As Object ' N°SérieDossard correspondant à une course
        Dim CoureursEngagésR As QueryDef
        Dim sd As Integer
        Set SérieDossard = MaBase.OpenRecordset("CoursesDossards", dbOpenDynaset)
        critère = "[Désignation]=" & "'" & c & "'"
        SérieDossard.FindFirst critère
        sd = SérieDossard.[SérieDossard]  'N° SérieDossard
        Set CoureursEngagésR = MaBase.QueryDefs("CoureursEngagésR")
        CoureursEngagésR.Parameters("SD").Value = sd
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PARAMETERS SD Byte;
    SELECT [DEFINIRCourses].[SérieDossard], Max([CoureursEngagés].[Dossard]) AS MaxDeDossard
    FROM CoureursEngagés INNER JOIN DEFINIRCourses ON [CoureursEngagés].[Compétition]=[DEFINIRCourses].[Désignation]
    GROUP BY [DEFINIRCourses].[SérieDossard]

  4. #4
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    plutôt ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ChercheDossardMax(c)
        Dim SérieDossard As DAO.Recordset
        Dim CoureursEngagésR As DAO.QueryDef
        Dim sd As Integer
        sd = dlookup("SérieDossard","CoursesDossards", "[Désignation]=" & "'" & c & "'")  'N° SérieDossard
        Set CoureursEngagésR = MaBase.QueryDefs("CoureursEngagésR")
        CoureursEngagésR.Parameters("SD").Value = sd
        Set SérieDossard = CoureursEngagésR.OpenRecordset
    End Sub
    Non ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut Bravo
    Cela marche et j'ai appris beaucoup de choses
    Merci

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

Discussions similaires

  1. [AC-2010] Comment faire un filtre dans une requête
    Par Snakes1 dans le forum Access
    Réponses: 1
    Dernier message: 01/05/2013, 03h31
  2. Filtre dans une requête LDAP
    Par czezko dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/04/2007, 14h37
  3. Filtre dans une requête
    Par pat04 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/02/2007, 15h28
  4. filtre dans une requête sql ?
    Par jessy212 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/09/2006, 16h29
  5. Comment récupérer la valeur de Expr1 dans une requête ?
    Par Tchupacabra dans le forum Access
    Réponses: 2
    Dernier message: 19/12/2005, 15h16

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