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 :

Imprimer un état à partir d'une zone liste d'un formulaire multicritère [AC-2007]


Sujet :

IHM

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Imprimer un état à partir d'une zone liste d'un formulaire multicritère
    Bonjour,

    Je suis toute nouvelle sur ce site même si je le consulte assez régulièrement pour trouver une solution lorsque j'ai un problème.
    Mais hélas aujourd'hui je suis dans une impasse.

    Cela fait 15 jours que j'essaye de créer un état à partir d'un formulaire multicritère et je désespère.

    Je me suis inspirée du Formulaire de recherche prêt à l'emploi 1-2 et 3ème partie (j'ai récupéré uniquement les fonctionnalités qui m'interressaient)

    Tout se passe superbien pour la recherche multicritère (=> un grand merci).
    Mais pour l'état dur dur....

    En fait je voudrais imprimer les données que me donne la recherche multicritère .Ceux-ci sont dans une zone de liste.

    Descriptif du problème:

    Si je click sur le bouton imprimé qui se trouve dans mon formulaire , je reçois le message suivant Erreur de compilation: Utilisation incorrecte du mot clé Me.
    (Function lf_GetSqlWhere() insérée à la fin du module recherche: strSQL = Me.lst_resultat.RowSource ). Hors ma zone de liste est bien nommée lst_resultat dans mon formulaire.

    Voici la programmation:
    Mon formulaire est basé sur une seule table (Archives).
    J'ai un formulaire (frm_Recherche) ou je récupère tous les champs de la table à partir de la recherche multicritère.
    et un état (Archives_par_équipement) où je vais rechercher tous les champs de la table
    ________________________________________________________________
    J'ai créé la table tbl_TempLstRpt
    Nom du champ Type Longueur
    Table -Texte - 250 (donnée introduite: Archives)
    Etat - Texte - 250 (donnée introduite: Archives_par_équipement)

    La source (propriété RowSource) de l'état doit être la même que l'item de la liste cbo_table :tbl_TempLstTbl

    Sur le formulaire , j'ai inséré le bouton de commande "imprime" pour ouvrir l'état.
    Nom cmd_imprime
    (Evènement) Sur clic [Procédure Evènementielle]
    Légende de l'étiquette Imprime

    Le Code
    Dans l'événement Sur Clic du bouton de commande cmd_imprime Private Sub
    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
    cmd_imprime_Click()
        Dim rst As Recordset
        Dim strCriteria As String
     
        Set rst = CurrentDb.OpenRecordset("tbl_TempLstRpt", dbOpenSnapshot)
        ' recherche les informations de la table
        rst.FindFirst ("Table='" & Me.cbo_table & "'")
     
        If rst.NoMatch Then     ' non trouvé
            MsgBox "Cette table ne possède pas d'état. " & _
                   "Veuillez renseigner la table des paramètres.", _
                   vbCritical + vbOKOnly, "formulaire de Recherche"
            Exit Sub
        Else    ' trouvé
           DoCmd.OpenReport rst.Fields("Etat"), acViewPreview, , lf_GetSqlWhere
        End If
     
        Set rst = Nothing
     
    End Sub
    J'ai inséré le code suivant dans le module "Recherche" du formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Function lf_GetSqlWhere()
    Dim strWhere As String
    Dim strSQL As String
     
    	strSQL = Me.lst_resultat.RowSource
    	' récupère à partir des doubles paranthèses
    	strWhere = Right(strSQL, Len(strSQL) - InStrRev(strSQL, "(("))
    	' supprime les caractères inutile de la fin
    	strWhere = Left(strWhere, Len(strWhere) - 2)
     
    	'on renvoi le résultat
    	lf_GetSqlWhere = strWhere
    End Function
    Si quelqu'un peut m'aider ce serait super,

    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    D'abord merci d'apprécier ma contribution.

    Le message que tu reçois (Utilisation incorrecte du mot clé Me.) indique que tu as placé le code en dehors du formulaire.

    Me ne doit être utiliser que dans un module de formulaire, d'état ou de classe.

    Soit tu déplaces le code dans le module du formulaire (frm_recherche), soit tu transmets le contenu à la function soit le controle.
    1)
    on transmet le contenu du rowsource

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'appel
          DoCmd.OpenReport rst.Fields("Etat"), acViewPreview, , lf_GetSqlWhere(Me.lst_resultat.RowSource)
    'function
    Function lf_GetSqlWhere(strSQL as string) as string
    Dim strWhere As String
     
    	strWhere = Right(strSQL, Len(strSQL) - InStrRev(strSQL, "(("))
    	' supprime les caractères inutile de la fin
    	strWhere = Left(strWhere, Len(strWhere) - 2)
     
    	'on renvoi le résultat
    	lf_GetSqlWhere = strWhere
    End Function
    2)
    on transmet le controle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'appel
          DoCmd.OpenReport rst.Fields("Etat"), acViewPreview, , lf_GetSqlWhere(Me.lst_resultat)
    'function
    Function lf_GetSqlWhere(ctrl as control) as string
    Dim strWhere As String
    dim strSQL as string
                 strSql = ctrl.rowsource
    	strWhere = Right(strSQL, Len(strSQL) - InStrRev(strSQL, "(("))
    	' supprime les caractères inutile de la fin
    	strWhere = Left(strWhere, Len(strWhere) - 2)
     
    	'on renvoi le résultat
    	lf_GetSqlWhere = strWhere
    End Function
    Par contre met bien les paranthèses dans l'appel pour que la fonction renvoi quelque chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport rst.Fields("Etat"), acViewPreview, , lf_GetSqlWhere()
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonsoir Loufab,

    Tout d'abord merci pour ce formulaire qui pour ma part est géant.
    En second je te remercie pour avoir pris en considération mon problème aussi vite.
    et enfin,
    Je viens de mettre en application tes recommandations et..............

    oHHHHHHHHHHHH!

    Ca marche



    PS: je n'en doutais pas.

    Bref encore merci

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 01/09/2008, 15h09
  2. affichage etat à partir d'une zone liste sellectionné
    Par lulumars dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/05/2008, 22h59
  3. Mise a jour d'une zone liste dans un formulaire BIS
    Par fsautejeau dans le forum Access
    Réponses: 4
    Dernier message: 03/07/2006, 10h37
  4. Mise a jour d'une zone liste dans un formulaire
    Par lawokgluot dans le forum Access
    Réponses: 3
    Dernier message: 30/06/2006, 11h41
  5. requête à partir d'une zone de liste multiple??
    Par chambon.denis dans le forum Access
    Réponses: 5
    Dernier message: 23/01/2006, 10h46

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