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

Access Discussion :

Comment filtrer par code une donnée d’une table ? [AC-2013]


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut Comment filtrer par code une donnée d’une table ?
    Bonjour membres du forum !

    Voici une table "CATEGORIE_EXAMEN_SCOLAIRE" dont les champs (voir image)
    Nom : CaptureCategExamen.PNG
Affichages : 162
Taille : 8,3 Ko
    Je voudrais filtrer par code une donnée de la table "CATEGORIE_EXAMEN_SCOLAIRE"
    afin de l’appeler par défaut dans une zone de liste d'un formulaire (voir image)

    Voici mon code:
    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
    'Fonction ramenant l'examen du CEPE Français d'une année scolaire enregistrée
    Public Function fRameneCEPEFrancais() As String
    On Error GoTo ROUBABOU
    If IsNull(idX) Then Exit Function
    Dim db As Database
    Dim rst As Recordset
    Dim sql As String
        Set db = CurrentDb
        sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG] order by NUM_CATEG asc ;"
        Set rst = db.OpenRecordset(sql)
        If Not rst.EOF Then
            fRameneCEPEFrancais = Trim(rst.Fields("NUM_CATEG"))
        'Else
            'fRameneCEPEFrancais
        End If
    Exit Function
    ROUBABOU:
        MsgBox "Erreur n° " & err.Number & vbCrLf & err.description, vbCritical + vbOKOnly, "Une erreur est survenue"
    End Function
    Mon souci: il ne me ramène pas le seul filtre que je voudrais: c à d: "CEPE".
    Question: que dois je faire ?
    Cordialement.
    Images attachées Images attachées   

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Si j'ai bien compris ton problème, il suffit de mettre dans la propriété valeur par défaut du champ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DMin("NUM_CATEG"; "CATEGORIE_EXAMEN_SCOLAIRE")
    Ça va te retourner le 1er numéro de catégorie.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonsoir marot_r !
    Effectivement le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DMin("NUM_CATEG"; "CATEGORIE_EXAMEN_SCOLAIRE")
    ramène la première
    catégore. Mais je voudrais savoir si l'on pourrais l'adapter à mon code
    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
    'Fonction ramenant l'examen du CEPE Français d'une année scolaire enregistrée
    Public Function fRameneCEPEFrancais() As String
    On Error GoTo ROUBABOU
    If IsNull(idX) Then Exit Function
    Dim db As Database
    Dim rst As Recordset
    Dim sql As String
        Set db = CurrentDb
        sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG] order by NUM_CATEG asc ;"
        Set rst = db.OpenRecordset(sql)
        If Not rst.EOF Then
            fRameneCEPEFrancais = Trim(rst.Fields("NUM_CATEG"))
        'Else
            'fRameneCEPEFrancais
        End If
    Exit Function
    ROUBABOU:
        MsgBox "Erreur n° " & err.Number & vbCrLf & err.description, vbCritical + vbOKOnly, "Une erreur est survenue"
    End Function
    Remarquez qu'il y a trois catégories dans la table"CATEGORIE_EXAMEN_SCOLAIRE".
    Néanmoins au cas où je voudrais soit la 2e ou 3é catégorie, quelle expression pourrais je employer ?
    Cordialement.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG]=" & Me.NomTaListeChoix & ";"
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DMin("NUM_CATEG"; "CATEGORIE_EXAMEN_SCOLAIRE"; "[NUM_CATEG]=" & NomTaListeChoix)
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonsoir marot_r !
    Recevez toute ma profonde gratitute ainsi que toute la famille Developpez.net.
    Mon problème est résolu.
    Compte tenu du fait que le code est public, voici comment je l'ai adapté:
    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
    'Fonction ramenant l'examen du CEPE Français d'une année scolaire enregistrée
    Public Function fRameneCEPEFrancais() As String
    On Error GoTo ROUBABOU
    If IsNull(idX) Then Exit Function
    Dim db As Database
    Dim rst As Recordset
    Dim sql As String
        Set db = CurrentDb
        sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG]=" & "1" & ";"
        'sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG]=" & Me.NomTaListeChoix & ";"
        '"select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG] order by NUM_CATEG asc ;"
        Set rst = db.OpenRecordset(sql)
        If Not rst.EOF Then
            fRameneCEPEFrancais = Trim(rst.Fields("NUM_CATEG"))
        'Else
            'fRameneCEPEFrancais
        End If
    Exit Function
    ROUBABOU:
        MsgBox "Erreur n° " & err.Number & vbCrLf & err.description, vbCritical + vbOKOnly, "Une erreur est survenue"
    End Function
    Cordialement.

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 443
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 443
    Par défaut
    Bonjour.

    Pour info tu n'est pas obligé de mettre des guillemets autours de 1, VBA va le convertir en texte pour toi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG]=" & 1 & ";"
    et il est recommandé de ne pas utiliser des "magic numbers" dans le code car lecteur peut ne pas savoir pourquoi 1 et pas 1124680.

    Donc si tu fais des choses comme cela, je t'invite a utiliser quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const NUM_CATEG_DEFAUT as long=1
    sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG]=" & NUM_CATEG_DEFAUT & ";"
    Comme cela, ton lecteur sait que 1 c'est la valeur par défaut pour ta catégorie.
    On appelle NUM_CATEG_DEFAUT une constante figurative.

    Et dernier point en SQL Access, le point virgule à fin est optionnel donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "select * from CATEGORIE_EXAMEN_SCOLAIRE where [NUM_CATEG]=" & NUM_CATEG_DEFAUT
    est aussi valide.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/08/2018, 15h05
  2. [eZ Publish] ezFind - Comment filtrer par rapport à une date
    Par maxou2009 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/06/2012, 17h42
  3. [MySQL] Récupérer une donnée dune table mysql
    Par chrisl0 dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/03/2009, 12h26
  4. Réponses: 1
    Dernier message: 29/09/2007, 17h47
  5. Comment appeller par code le contenu d'une liste
    Par sakia dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/05/2007, 19h50

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