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

IHM Discussion :

Recherche multi-critères(Caféine) et impression du filtre dans un état [AC-2003]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Recherche multi-critères(Caféine) et impression du filtre dans un état
    Bonjour,

    J'ai suivi à la lettre le tuto de Caféine pour faire un formulaire de recherche multi-critères (enfin... j'ai permuté l'affichage "visible" des boîtes à cocher), ça marche nickel.

    Mais je n'arrive pas à imprimer le résultat du filtre dans un état.

    Portions de code "signifiantes" du tuto :

    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
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT ID_Test,TestID_Produit,TestDate3en1,agsem1,agsem4,cusem1,cusem4,pbsem1,pbsem4, TestDateBritishMuseum,AcidesorgBritishMu,AldehydesBritishMu,ChloreBritishMu,SoufreBritishMu,pHaqueuxBritishMu,pHdesurfaceBritishMu FROM Test WHERE Test!ID_Test<>0"
    If Me.chkAgSem1 Then
    SQL = SQL & "And Test!agsem1 ='" & Me.cboAgSem1 & "'"
    End If
    ...
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
     
    Me.lstResultat.RowSource = SQL
     
    Me.lstResultat.Requery
     
    End Sub
    J'ai crée un état à partir de la table "Test" avec tous les contrôles identiques à ceux du filtre (ils contiennent les noms des champs). Sur le bouton "Imprimer" du formulaire, j'ai ce 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
     
    Private Sub btnImprimerFiltreTests_Click()
     
    Dim stDocName As String
    Dim SQL As String
        stDocName = "eMultiTests"
        SQL = Me.Filter
        DoCmd.OpenReport "eMultiTests", , , SQL
     
    Exit_btnImprimerFiltreTests_Click:
        Exit Sub
     
    Err_btnImprimerFiltreTests_Click:
        MsgBox Err.Description
        Resume Exit_btnImprimerFiltreTests_Click
     
    End Sub
    Evidemment (?), comme je n'ai pas vraiment compris où était le filtre (oui, oui, je sais...), j'ai essayé avec SQLWhere et ça ne marche pas mieux. L'état s'imprime mais avec tous les résultats.

    Du côté de l'état, il n'y a aucun code...

    Merci du coup de main (c'est ma première base et .... c'est très dur !)

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    c'est ma première base et .... c'est très dur !
    Si tu en es déjà là, cela me semble déjà pas mal...

    Un peu de lecture : Comment utiliser plusieurs requêtes pour un même état

    Cela devrait correspondre à ton besoin.

    En gros, SQL (et non SQLWhere) alimente ta liste.

    Il faut donc récupérer cette variable pour en faire la source de l'état à son ouverture.

    Pour ce faire, tu la déclares comme Public dans la section "déclaration" d'un module standard, de sorte qu'elle soit disponible dans toute l'application.

    Bonne lecture.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Merci
    Merci... (euh, j'en suis là parce que je n'avais pas le choix !)

    Bon, je potasse, j'essaie et je n'espère pas "à lundi" !

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    je n'espère pas "à lundi"
    Mais non, ce sera "bouclé" avant 17h00...

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Pas de chance
    Documentation très "drue". A lundi ??

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Lundi... problème sur construction de l'état
    Bonjour,
    J'ai potassé et essayé. Surtout, je crois que je n'ai pas bien compris comment créer l'état. Sur le tuto conseillé, l'auteur crée une requête... la mienne existe déjà, j'ai cru comprendre qu'elle s'appelait SQL.

    Je joins la base exemple de Caféine, à laquelle j'ai ajouté un état qui s'appelle eEtat.

    Apparemment, il y a quelque chose d'assez simple qui m'échappe complètement.

    Merci vraiment pour votre aide.
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Plusieurs choses.

    D'abord la variable SQL (que je préférerais nommer strSQL) est déclarée dans la procédure "RefreshQuery" du formulaire frmRecherche. Sa "portée" est limitée à cette procédure et ne pourra en aucun cas être reconnue par l'état.

    Il faut donc créer un nouveau module, puis la déclarer comme publique, de sorte qu'elle soit utilisable dans toutes l'application. Alt+F11 pour aller dans l'éditeur VBA, menu Insertion ==> Module, puis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Compare Database
    Option Explicit
     
    Public SQL As String
    et enregistrer le module, par exemple "basVariablesPub".

    Ne pas oublier de supprimer la déclaration de la variable dans la procédure "RefreshQuery".

    Ensuite l'état. Il ne doit pas avoir de Source, mais les champs oui. Pour faire simple, mettre l'état en mode création, lui attribuer la table "Medias" comme Source, puis renseigner la propriété Source contrôle des champs (Titre - Auteur - Type).

    Resélectionner l'état, supprimer la table "Medias" de la propriété Source et enregistrer.

    Enfin, dans l'événement sur Ouverture de l'état, il faut supprimer "lstResults".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Report_Open(Cancel As Integer)
     
        Me.RecordSource = SQL
     
    End Sub
    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Victoire
    Totale de Domi2 ! Ca marche superbement bien et.... je n'aurais jamais trouvé !

    Je me sens pousser des ailes !

    Enfin une semaine qui démarre pas trop mal !

    Merci encore

  9. #9
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    De rien. Il faut plutôt remercier l'auteur du tutoriel, jeannot45.

    Merci pour le retour et bon dév !

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Géomaticien
    Inscrit en
    Avril 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2012
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Je remonte ce vieux sujet car c'est exactement mon problème! J'ai réussi à faire marcher la base de données en exemple avec les modifications mais voilà dans mon cas il ne fonctionne pas car mon état (de type étiquettes) s'appuie sur une requête qui a des données de différentes tables (à cause des liste de choix dans ma table initiale) et quand j'execute mon bouton j'ai comme message "Entrez une valeur de paramètre". Après plusieurs essais, j'ai vu que ce qui gène l’exécution ce sont les listes de choix/source différente tables pour la requête.

    Je ne sais pas comment régler ça....

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/02/2012, 09h45
  2. [AC-2000] Recherche multi-critère (c'est du caféine)
    Par vlksoft dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 09/12/2009, 12h19
  3. Moteur de recherche multi critères avec filtre
    Par kina17 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/04/2008, 19h33
  4. tutoriel recherche multi-critères de caféine
    Par Magali33 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/11/2007, 00h29
  5. Réponses: 8
    Dernier message: 14/08/2006, 12h47

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