Aide sur sélections multiples ACCESS

laportez Messages postés 7 Statut Membre -  
laportez Messages postés 7 Statut Membre -
Bonjour,
Je cherche de l'aide sur ACCESS.

Voici mon problème :
J’ai la table « Adhérents » suivante :
Code adhe (code numérique)
Nom adhe (Patronyme)
Prenom adhe (Prénom)
Adresse adhe (Rue)
CP adhe (Code Postal)
Ville adhe (Ville)
Sexe adhe (Codes H ou F)
Catégorie adhe (Codes M, B ou P)
Profession adhe (Profession principale texte libre)
Date entrée adhe (Date inscription jj/mm/aaaa)
Article adhe (Catégorie d’articles texte libre)
Rappel adhe (Date relance jj/mm/aaaa)
Motif rappel adhe (Motif relance texte libre)

Je voudrais créer un état paramétrable permettant des sélections multiples sur :
Le sexe (sexe adhe),
La catégorie (Catégorie adhe),
La date d’entrée (Date entrée adhe).
Pour éditer par exemple tous les adhérents H,
ou tous les adhérents H de la catégorie B,
ou tous les adhérents F de la catégorie M inscrits avant le 01/01/2005

Comment créer un formulaire ou une requête permettant de lancer cet état en sélectionnant les critères dans des fenêtres déroulantes (sexe, catégorie) ou de saisie (date) ?
Une bonne âme aurait-elle un exemple approchant ?

Merci à tous

3 réponses

  1. Utilisateur anonyme
     
    suite :

    Deuxième étape :

    Les combobox

    Pour être sur de bien comprendre votre besoin, je
    l'exprime ici à ma façon.

    Disons qu'a l'ouverture de votre formulaire vous avez
    1000 enregistrements, vous voulez à l'aide d'une
    sélection dans un combobox réduire ce nombre à 100.
    À l'aide d'un second combobox vous désirez réduire
    ce nombre à 50 et ainsi de suite.

    Donc pour ce faire vous devez alimenter les combobox
    à l'aide de requêtes simples qui vont former les critéres
    de sélection.

    Comme vous avez du le contaster mon exemple est basé
    sur un base de données de films qui constitue ma
    vidéothèque.

    L'un de mes combobox définit le style de film que je
    recherche.

    Dans les propriété de mon comboxbox,

    la propriété [ Origine source ] = [ Table/Requête ]
    la propriété [ Contenu ] = Sélectionner la requête que vous avez construit.

    Je m'arrête ici et j'attendrai votre réponse pour la suite.

    Lupin
    2
    1. laportez Messages postés 7 Statut Membre
       
      Merci à tous
      OK ça marche
      La solution fonctionne parfaitement, et en plus c'est esthétiquement parfait.
      0
  2. Utilisateur anonyme
     
    Bonjour,

    J'ai une solution pour vous !

    Tout d'abord je dois vous poser quelques questions.

    Est-ce que vos formulaires sont tous accroché sur des requêtes.
    Est-ce que vos requêtes sont tous accrochées sur des tables.
    Avez-vous une bonne connaissance de VBA.

    1.) Créer une requête simple répondant à un exemple de vos besoin.
    2.) Visualiser la requête en mode SQL et copier la dans ce fil de discussion.
    3.) Inclure une routine sur une liste déroulante de l'un des champs de votre besoin.
    4.) Inclure une fonction de modification de requête par programmation.

    Exemple de la routine :
    Private Sub Liste_Cassette_AfterUpdate()
        
        Dim Chaine As String
        Dim Critere As String
        Dim CassetteVidéo As String
        
    On Error GoTo Liste_Cassette_Err
    
        CassetteVidéo = Forms![Formulaire Édition Liste Vidéo].[Liste Cassette]
        Chaine = "Select * from [Table Vidéo] where [Cassette] = "
        Critere = Chaine & """" & CassetteVidéo & """"
        
        If (ChangeRequeteDef("Requête Liste Spécifique Cassette", Critere)) Then
            DoCmd.OpenForm "Formulaire Liste Spécifique Édition Cassette", acNormal, "", "[Cassette]", , acNormal
        End If
    
    Liste_Cassette_Exit:
        Exit Sub
    
    Liste_Cassette_Err:
        MsgBox Error$
        Resume Liste_Cassette_Exit
    
    End Sub
    


    La fonction :

    Public Function ChangeRequeteDef(ChaineRequete As String, ChaineSQL As String) As Boolean
        
        Dim Definition As QueryDef
        
        If ((ChaineRequete = "") Or (ChaineSQL = "")) Then
            ChangeRequeteDef = False
        Else
            Set Definition = CurrentDb.QueryDefs(ChaineRequete)
            Definition.SQL = ChaineSQL
            Definition.Close
            RefreshDatabaseWindow
            ChangeRequeteDef = True
        End If
        
    End Function
    
    


    Procédé par étape et je vous guiderez.

    @+
    Lupin
    0
    1. laportez Messages postés 7 Statut Membre
       
      Tout d'abord Merci beaucoup.
      Les réponses à vos questions :
      >> Est-ce que vos formulaires sont tous accroché sur des requêtes.
      Actuellement formulaires de consultation, de création et mise à jour des enregistrements.
      Etats liste des enregistrements.
      Requêtes de sélection simple (calcul de délai ancienneté inscription avec la fonction datediff et tri sur ce délai).
      C'est là que je voudrais ouvrir plusieurs combobox permettant de sélectionner les critères complémentaires.
      >> Est-ce que vos requêtes sont tous accrochées sur des tables.
      Oui (avec champ calculé -Today et délai).
      >>Avez-vous une bonne connaissance de VBA.
      Basique et peu utilisée depuis plusieurs années.

      Merci encore

      laportez
      0
  3. Utilisateur anonyme
     
    Bonjour,

    A première vue votre base est bien monté, puisque la logique
    nous dit qu'un formulaire devrait toujours être accroché sur une
    requête (et non sur une table) et c'est la requête qui s'accroche
    sur la table.

    Première étape :

    Vous allez construire une requête qui sélectionne un ou plusieurs
    enregistrements selon les critères qui vous avez besoin.

    exemple :

    SELECT *
    FROM [Table Vidéo]
    WHERE ((([Table Vidéo].Style)="SCIENCE-FICTION"));

    dans cet exemple, je n'ai qu'un critère :
    [Table Vidéo].Style = "SCIENCE-FICTION"

    mais vous pouvez en avoir plus d'un.

    vous créé la requête et passez en mode affichage SQL,
    premier bouton de la barre d'outils.

    faites ensuite un copier/coller de cette requête ici-même,
    je vais vous expliquer comment modifier cette requête par
    programmation comme dans l'exemple cité dans mon premier
    message.

    Lupin
    0